什么是功能即服務(wù)(FaaS)?
功能即服務(wù)(或稱為 FaaS)是一種云計(jì)算服務(wù),它允許開(kāi)發(fā)人員以功能的形式來(lái)構(gòu)建、計(jì)算、運(yùn)行和管理這些應(yīng)用包,無(wú)需維護(hù)自己的基礎(chǔ)架構(gòu)。
FaaS 是一種在無(wú)狀態(tài)容器中運(yùn)行的事件驅(qū)動(dòng)型執(zhí)行模型,這些功能將利用 FaaS 提供商的服務(wù)來(lái)管理服務(wù)器端邏輯和狀態(tài)。
FaaS 解決方案可通過(guò)主流公共云提供,并可在內(nèi)部置備,這樣就為企業(yè) IT 應(yīng)用開(kāi)發(fā)新增了一些重要的功能。獲取云原生策略指南,為借助 FaaS 實(shí)施無(wú)服務(wù)器方案做好準(zhǔn)備。FaaS 的一些常見(jiàn)示例:
- IBM 云功能
- Amazon 的 AWS Lambda
- Google 云功能
- Microsoft Azure 功能(開(kāi)源)
- OpenFaaS(開(kāi)源)
FaaS和無(wú)服務(wù)器
FaaS 是一種實(shí)現(xiàn)無(wú)服務(wù)器計(jì)算的方法,藉此開(kāi)發(fā)人員可以編寫(xiě)業(yè)務(wù)邏輯,然后在完全由平臺(tái)管理的 Linux 容器中執(zhí)行這些業(yè)務(wù)邏輯。
雖然通常只是一個(gè)使用云計(jì)算服務(wù)的云計(jì)算平臺(tái),但該模型還在擴(kuò)展中,包含內(nèi)部部署和混合部署。
無(wú)服務(wù)器會(huì)對(duì)基礎(chǔ)架構(gòu)問(wèn)題進(jìn)行抽象處理,例如管理或置備服務(wù)器及開(kāi)發(fā)人員的資源分配,并將其提供給平臺(tái)(如紅帽O(jiān)penShift),這樣開(kāi)發(fā)人員就可以專(zhuān)注于編寫(xiě)代碼和實(shí)現(xiàn)業(yè)務(wù)價(jià)值。
功能是操作系統(tǒng)上的一個(gè)運(yùn)行業(yè)務(wù)邏輯的軟件。應(yīng)用可以由許多功能組成。
使用 FaaS 模型是通過(guò)無(wú)服務(wù)器架構(gòu)來(lái)構(gòu)建應(yīng)用的方法之一,但隨著無(wú)服務(wù)器模式的日漸普及,開(kāi)發(fā)人員正在尋找支持構(gòu)建無(wú)服務(wù)器微服務(wù)和無(wú)狀態(tài)容器的解決方案。
功能即服務(wù)是如何工作的?
FaaS 為開(kāi)發(fā)人員提供了一種運(yùn)行 Web 應(yīng)用的抽象方式,可以在無(wú)需管理服務(wù)器的情況下響應(yīng)事件。例如,上載文件可觸發(fā)自定義代碼,從而將文件轉(zhuǎn)碼為各種格式。
FaaS 基礎(chǔ)架構(gòu)通常是由服務(wù)提供商按需計(jì)量的,主要通過(guò)事件驅(qū)動(dòng)型執(zhí)行模型進(jìn)行,因此它會(huì)隨時(shí)待命,但不需要任何服務(wù)器進(jìn)程在后臺(tái)持續(xù)運(yùn)行(這一點(diǎn)與平臺(tái)即服務(wù) (PaaS)不同)。
現(xiàn)代 PaaS 解決方案提供了無(wú)服務(wù)器功能(作為通用工作流的一部分),藉此開(kāi)發(fā)人員可以實(shí)現(xiàn)應(yīng)用的部署,從而模糊了 PaaS 和 FaaS 之間的界線。
實(shí)際上,整個(gè)應(yīng)用將由以下解決方案混合而成:功能、微服務(wù)和長(zhǎng)期運(yùn)行的服務(wù)
FaaS動(dòng)態(tài)擴(kuò)展
提供商會(huì)通過(guò)應(yīng)用編程接口(API)讓您的功能處于可用狀態(tài)并管理資源分配。由于功能是事件驅(qū)動(dòng)而不是資源驅(qū)動(dòng)的,因此它們很容易進(jìn)行擴(kuò)展,這種擴(kuò)展允許提高效率和價(jià)值。
為了發(fā)揮部分優(yōu)勢(shì),其體系架構(gòu)會(huì)受到一定制約(例如對(duì)功能執(zhí)行施加時(shí)間限制),因此需要做到功能的快速啟動(dòng)和運(yùn)行。
功能會(huì)在毫秒內(nèi)啟動(dòng)并處理各個(gè)請(qǐng)求。如果您的功能有多個(gè)同步請(qǐng)求,系統(tǒng)將創(chuàng)建盡可能多的功能副本來(lái)滿足需求。
當(dāng)需求下降時(shí),應(yīng)用會(huì)自動(dòng)減少功能副本的數(shù)量。動(dòng)態(tài)擴(kuò)展是 FaaS 的一項(xiàng)優(yōu)勢(shì),而且頗具成本效益,因?yàn)樘峁┥虄H對(duì)使用的資源收費(fèi),而不對(duì)空閑時(shí)間收費(fèi)。
在內(nèi)部運(yùn)行時(shí),這種動(dòng)態(tài)特性還可以提高平臺(tái)密度,從而允許運(yùn)行更多工作負(fù)載并優(yōu)化資源消耗和功能。
需要橫向擴(kuò)展的事件驅(qū)動(dòng)型服務(wù)可作為功能和 RESTful 應(yīng)用進(jìn)行工作。
FaaS 非常適合大數(shù)據(jù)量的交易、經(jīng)常發(fā)生的工作負(fù)載,例如報(bào)表生成、圖像處理或任何計(jì)劃任務(wù)。常見(jiàn)的 FaaS 用例包括數(shù)據(jù)處理、IoT 服務(wù)、移動(dòng)和 Web 應(yīng)用。
您可以使用 FaaS 構(gòu)建完全無(wú)服務(wù)器化的應(yīng)用,也可以打造部分無(wú)服務(wù)器、部分傳統(tǒng)微服務(wù)組件的應(yīng) 用 ,以便利用更新的技術(shù)和容器編排系統(tǒng),如 Kubernetes。
FaaS的優(yōu)勢(shì)
- 提高開(kāi)發(fā)人員的生產(chǎn)率并縮短開(kāi)發(fā)時(shí)間
- 不負(fù)責(zé)服務(wù)器管理
- 易于擴(kuò)展,且橫向擴(kuò)展由平臺(tái)管理
- 僅在必要和需要時(shí)消耗資源或支付費(fèi)用
- 幾乎可以用任何編程語(yǔ)言來(lái)編寫(xiě)功能
FaaS 和無(wú)服務(wù)器之間有何區(qū)別?
最初,F(xiàn)aaS 和無(wú)服務(wù)器多多少少具有一定的相似性,但現(xiàn)在,無(wú)服務(wù)器的含意已擴(kuò)展至更多的體系架構(gòu)模式和實(shí)踐,除了以 FaaS 編碼的自定義業(yè)務(wù)邏輯外,它們還大量使用了通用服務(wù)。
微服務(wù)甚至傳統(tǒng)應(yīng)用都可以使用無(wú)服務(wù)器,只要它們可以容器化并且符合動(dòng)態(tài)擴(kuò)展和狀態(tài)管理的要求即可。
"無(wú)服務(wù)器"一詞也用于表示托管服務(wù)(例如數(shù)據(jù)庫(kù)和消息傳遞系統(tǒng))- 由于系統(tǒng)由云提供商或第三方公司管理,因此無(wú)需開(kāi)發(fā)人員或管理員來(lái)操作系統(tǒng)。
FaaS 與主要通過(guò)事件驅(qū)動(dòng)型體系架構(gòu)連接的通用后端服務(wù)(如數(shù)據(jù)庫(kù)、消息傳遞和身份驗(yàn)證)相結(jié)合,可為無(wú)服務(wù)器開(kāi)發(fā)人員帶來(lái)最大的收益。