官术网_书友最值得收藏!

2.5 Serverless

隨著云原生技術的不斷發展,應用的部署模式逐漸趨向于“業務邏輯實現與基礎設施分離”的設計原則,而Serverless作為一種新的云計算模式,較好地履行了上述設計原則。此外,從目前云原生技術的發展脈絡來看,Serverless可謂云原生技術發展的最終階段。

2016年8月,martinfowler網站上發表的Serverless[6]一文對Serverless做了詳細闡述。簡單來說,Serverless可在不考慮服務器的情況下構建并運行應用程序和服務,它使開發者避免了基礎設施管理,如集群配置、漏洞修補、系統維護等。Serverless并非字面理解的不需要服務器,只是服務器均交由第三方管理。

Serverless通常可分為兩種實現方式,即BaaS(Backend as a Service,后端即服務)和FaaS(Functions as a Service,函數即服務),其中FaaS是Serverless的主要實現方式。簡而言之,FaaS即開發者編寫一段代碼,并定義何時以及如何調用該函數,隨后該函數在云廠商提供的服務端運行,在此過程中開發者只需編寫并維護一段功能代碼。

此外,FaaS本質上是一種事件驅動并由消息觸發的服務,事件類型可能是一個HTTP請求,也可能是一次上傳或保存操作,事件源與函數的關系如圖2-4所示。

圖2-4 FaaS事件源觸發示意圖

FaaS的典型代表為AWS Lambda,為便于理解,下述為一個簡單的Lambda Python處理函數:


import json
def lambda_handler(event, context):
return {
    'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}

可以看出,以上代碼導入了JSON Python庫并定義了一個lambda_handler函數,該函數需接收兩個參數,分別為event和context,其中event參數包含此函數收到的事件源信息,參數類型通常是Python的dict類型,也可以是list、str、int、float等類型,而context參數包含此函數相關的運行時上下文信息。

圖2-5大致展示了傳統的服務端應用部署和FaaS應用部署,當應用程序部署在物理機、虛擬機、容器中時,它實際上是一個應用進程,并且由許多不同的函數構成,這些函數之間有著相互關聯的操作,一般需要長時間在操作系統中運行;而FaaS通過抽離虛擬機實例、操作系統和應用程序進程改變了傳統的部署模式,使開發者只需關注單個函數操作,剩余基礎設施管理均由第三方托管平臺提供,當有事件觸發時函數被執行,開發者為使用的資源付費。

圖2-5 傳統服務端應用與FaaS應用部署比較圖

主站蜘蛛池模板: 麻江县| 东阳市| 衡南县| 孝义市| 介休市| 东港市| 休宁县| 高邮市| 张家口市| 克什克腾旗| 十堰市| 新安县| 深州市| 阿图什市| 珲春市| 青龙| 乐陵市| 甘肃省| 睢宁县| 乌海市| 嘉禾县| 东辽县| 武胜县| 信阳市| 桂东县| 梁山县| 客服| 宜君县| 恭城| 磐石市| 萨嘎县| 鄄城县| 高平市| 施甸县| 邵阳县| 合肥市| 金塔县| 类乌齐县| 临汾市| 蚌埠市| 泸州市|