浅析Serverless
近兩年來,Serverless 概念在開發(fā)者中交流的越來越多,主題分享呈現(xiàn)爆發(fā)趨勢。有人說:Serverless 正在改變未來軟件開發(fā)的模式和流程,它就是云計算的未來。
在一個應用中包含了多個功能,如訂單創(chuàng)建、訂單查詢和訂單修改等。應用數據存儲在外部數據庫中。數據庫和應用一樣,也部署在數據中心的主機上,由用戶負責運維。
開發(fā)人員進行業(yè)務開發(fā)時,需要關心很多和服務器相關的服務端開發(fā)工作,比如存儲和計算資源、緩存、消息服務、數據庫,以及防止服務器被安全攻擊,負載均衡和橫向擴展能力,考慮服務器容災穩(wěn)定性等非專業(yè)邏輯的開發(fā)。這些服務器的運維和開發(fā)知識、經驗極大地限制了開發(fā)者進行業(yè)務開發(fā)的效率。
傳統(tǒng)的架構:
應用被部署在Serverless平臺之上。應用的功能點變成若干個函數定義,部署于FaaS之中。數據仍然存放在后端數據庫中。應用函數通過訪問后端的數據庫服務(BaaS)獲取訂單數據。
Serverless 場景下,客戶端需要通過 API 網關 Baas 來訪問函數 FaaS 服務,然后在通過函數計算做數據庫鏈接實現(xiàn)數據庫的寫入和拉取。
在Serverless架構下。當用戶完成應用開發(fā)后,軟件應用將被部署到指定的運行環(huán)境,這個運行環(huán)境不再是具體的一臺或多臺服務器,而是支持Serverless的云計算平臺。Serverless云計算平臺保證該主機提供應用正常運行所需的計算資源。在訪問量升高時,云計算平臺動態(tài)地增加應用的部署實例。當應用空閑一段時間后,云計算平臺自動將應用從主機中卸載,并回收資源。
Serverless服務架構:
相相同點:
1.兩個應用都存在一個邏輯層,負責處理用戶請求;
2.兩個應用的數據都存儲在應用外部的數據庫中。
不同點:
1.Serverless架構的應用部署于Serverless平臺之上,由Serverless平臺提供運行所需的計算資源。
2.在Serverless架構下,由于應用的邏輯分散成了若干個函數,推薦通過API網關對這些函數邏輯進行統(tǒng)一的管控(如流量控制、安全管控、版本管理等)
詳解Serverless:
無服務器計算是一種云計算執(zhí)行模型,云廠商提供程序運行的服務器,并動態(tài)管理機器資源的分配。云廠商基于應用程序消耗的實際資源量進行定價,而不是用戶預先購買的容量。
Serverless并不能按字面上理解為無服務器,而是說對應用開發(fā)者而言,不再需要操心大部分跟服務器相關的事務,比如應用運行環(huán)境配置、負載均衡、日志搜集、系統(tǒng)監(jiān)控等,這些事情統(tǒng)統(tǒng)交給Serverless平臺即可,應用開發(fā)者唯一需要做的就是編寫應用代碼,實現(xiàn)業(yè)務邏輯。
Serverless主要的兩個特征是:免運維,按資源的使用量付費
目前業(yè)界的各類Serverless實現(xiàn)按功能而言,主要為應用服務提供了兩個方面的支持:函數即服務(Function as a Service,FaaS)以及后臺即服務(Backend as aService,BaaS)
那么下面來說說IaaS,PaaS,Saas,FaaS和BaaS
以做披薩生意為例,如果從買設備,制作,銷售都是自己一個人做,未免會太過于勞累,所以需要別人的服務來讓這個生意更好做,下面就是一些讓別人服務你的方法:
1.IaaS
別人給你提供廚房,爐子,煤氣這些基礎設施,你去制作
2.PaaS
除了別人給你提供的基礎設施之后,還有人幫你做餅皮,自己只需要把其他配料撒上去,之后還有人幫你烤
自己能決定的就是這個披薩的味道
3.SaaS
自己不參與制作,直接用別人做好的披薩,自己只需要包裝一下,給披薩打上自己的logo賣出去就可以
?
4.BaaS
提供了一些服務讓你選擇,別人提供了烤披薩,調配料這些服務,用哪個就可以點哪個
5.FaaS
比提供某一項服務更加具體,具體到某一項服務的具體內容
c技術特點:
按需加載
應用的加載(load)和卸載(unload)由Serverless云計算平臺控制。這意味著應用不總是一直在線的。只有當有請求到達或者有事件發(fā)生時才會被部署和啟動。當應用空閑至一定時長時,應用會被自動停止和卸載。 事件驅動
應用的加載和執(zhí)行由事件驅動,通過將不同事件來源(EventSource)的事件(Event)與特定的函數進行關聯(lián),實現(xiàn)對不同事件采取不同的反應動作。
狀態(tài)非本地持久化
云計算平臺自動控制應用實例的加載和卸載,且應用和服務器完全解耦,應用不再與特定的服務器關聯(lián)。因此應用的狀態(tài)不能,也不會保存在其運行的服務器之上,不能做到傳統(tǒng)意義上的狀態(tài)本地持久化
應用函數化
每一個調用完成一個業(yè)務動作,應用會被分解成多個細顆粒度的操作。由于狀態(tài)無法本地持久化,這些細顆粒度的操作是無狀態(tài)的。
依賴服務化
所有應用依賴的服務都是一個個后臺服務(BackendService),應用通過BaaS方便獲取,而無須關心底層細節(jié)。
?
Serverless的局限性:
可移植性
Serverless應用的實現(xiàn)在很大程度上依賴于Serverless平臺及該平臺上的FaaS和BaaS服務。不同IT廠商的Serverless平臺和解決方案的具體實現(xiàn)并不相同。
安全性
在Serverless架構下,用戶不能直接控制應用實際所運行的主機。不同用戶的應用,或者同一用戶的不同應用在運行時可能共用底層的主機資源。對于一些安全性要求較高的應用,這將帶來潛在的安全風險。
性能
當一個Serverless應用長時間空閑時將會被從主機上卸載。當請求再次到達時,平臺需要重新加載應用。應用的首次加載及重新加載的過程將產生一定的延時。對于一些對延時敏感的應用,需要通過預先加載或延長空閑超時時間等手段進行處理。
執(zhí)行時長
Serverless的一個重要特點是應用按需加載執(zhí)行,而不是長時間持續(xù)部署在主機上。目前,大部分Serverless平臺對FaaS函數的執(zhí)行時長存在限制。因此Serverless應用更適合一些執(zhí)行時長較短的作業(yè)。?
技術成熟度
目前Serverless相關平臺、工具和框架還處在一個不斷變化和演進的階段,開發(fā)和調試的用戶體驗還需要進一步提升。
?
如何實現(xiàn)FaaS?
微服務和FaaS的差別在于粒度,微服務是功能級別,FaaS 是函數級別。server 要實現(xiàn)FaaS,首先必須將單體應用演進到微服務,然后才能進一步地分解到函數級別,實現(xiàn)FaaS。
總結
以上是生活随笔為你收集整理的浅析Serverless的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021天梯赛题解
- 下一篇: 2017年网易校招题 买苹果