最近serverless概念炒的特別的火,,更有甚說今年是serverless元年,,說是“無服務(wù)器服務(wù)”,以后開發(fā)如何如何省工,,如何如何牛逼等,。我個人覺得其實serverless的出現(xiàn)很早就有了,而且是伴隨著云一起的,,更多的是換了一個高大上的名字,,換種玩法,炒炒概念,,給公有云打打廣告,。既然這個概念有的聊了,小弟不才愿意拋磚引玉下,。 什么是serverless architecture(沒有服務(wù)器的架構(gòu)),? 在目前主流云計算IaaS(Infrastructure-as-a-Service,基礎(chǔ)設(shè)施即服務(wù))和PaaS(Platform-as-a-Service,,平臺即服務(wù))中,,開發(fā)人員進行業(yè)務(wù)開發(fā)時,仍然需要關(guān)心很多和服務(wù)器相關(guān)的服務(wù)端開發(fā)工作,,比如緩存,、消息服務(wù)、Web應(yīng)用服務(wù)器,、數(shù)據(jù)庫,,以及對服務(wù)器進行性能優(yōu)化,還需要考慮存儲和計算資源,,考慮負載均衡和橫向擴展能力,,考慮服務(wù)器容災(zāi)穩(wěn)定性等非專業(yè)邏輯的開發(fā)。這些服務(wù)器的運維和開發(fā)知識,、經(jīng)驗極大地限制了開發(fā)者進行業(yè)務(wù)開發(fā)的效率,。設(shè)想一下,如果開發(fā)者只需要關(guān)注業(yè)務(wù)邏輯開發(fā)而無須關(guān)注如何在服務(wù)器中運行部署服務(wù),,無須關(guān)注性能優(yōu)化服務(wù),,是否可以極大地提升開發(fā)效率和產(chǎn)品質(zhì)量?這種去服務(wù)器而直接使用服務(wù)的架構(gòu),我們稱之為Serverless架構(gòu),。 Serverless是一種構(gòu)建和管理基于微服務(wù)架構(gòu)的完整流程,,允許你在服務(wù)部署級別而不是服務(wù)器部署級別來管理你的應(yīng)用部署。更加強調(diào)底層VM和OS的透明化,;fPaaS,,全稱Function Platform as a Service( 功能即服務(wù)架構(gòu))。其優(yōu)勢如下: 1.完全使底層透明化,,應(yīng)用程序只與語言運行環(huán)境交互,,無需關(guān)注硬件及操作系統(tǒng)。 2.采用事件驅(qū)動,,服務(wù)代碼開發(fā),、部署在API請求下支持 3.運營穩(wěn)定,后端伸縮計算服務(wù)提供支撐,。隔離性,,健壯性相對較好。 4.無須關(guān)心devops 最常見得玩法介紹: 介紹一個基于Docker的Serverless平臺的一個高層次的參考架構(gòu),,要點如下: Docker容器作為事件處理的計算環(huán)境運行 將函數(shù)化事件處理邏輯打包成為Docker鏡像,,利用鏡像倉庫進行管理和分發(fā) 事件調(diào)度器配合Docker集群來調(diào)度事件處理執(zhí)行 利用Docker容器的方法實現(xiàn)Serverless平臺,有如下優(yōu)勢: 利用Docker提供的輕量級OS虛擬化能力,,能夠敏捷地創(chuàng)建事件執(zhí)行運行環(huán)境,,并提供基本的資源、安全隔離能力 使用Docker鏡像和鏡像倉庫,,簡單標準地對事件處理邏輯進行打包和在分布式環(huán)境下進行軟件分發(fā),;通過Docker鏡像的版本管理和追蹤能力,,可以管控應(yīng)用發(fā)布,,保證應(yīng)用在大規(guī)模分布式環(huán)境中部署的一致性。 在Docker容器內(nèi)部,,開發(fā)人員可以自由選擇使用不同的語言和框架進行事件處理,,容器之間不會相互干擾。 Docker容器提供了標準化的外界環(huán)境交互的能力,,應(yīng)用邏輯可以通過環(huán)境變量,、文件卷或者網(wǎng)絡(luò)來訪問上下文狀態(tài)信息。 對不同實現(xiàn)的Docker容器進行統(tǒng)一的標準化運維處理,,大大減少運維的復(fù)雜性,,可以更好地實現(xiàn)自動化運維 基于Docker編排技術(shù)(比如阿里云容器服務(wù)等)提供的集群管理和編排能力,可以大大簡化事件調(diào)度器的實現(xiàn) 受益于成熟的Docker的DevOps流程,,可以大大提升開發(fā)交付效率 Serverless應(yīng)用場景程序: 在高負載場景使用REST API從Web應(yīng)用程序收集指標 從傳入的包含訂單和狀態(tài)信息的電子郵件中提取和存儲數(shù)據(jù) 創(chuàng)建提供標準后端CRUD操作的REST API 在大數(shù)據(jù)場景的ETL過程中收集和轉(zhuǎn)換數(shù)據(jù) 分析來自實時數(shù)據(jù)流的日志消息 構(gòu)建一個在后臺可以與多個API交互的聊天機器人chatbot |
|