国产韩日影视精品_中文字幕一区二区三区在线不卡_久久亚洲综合色一区二区三区 _国产成人久久久

【六六互聯】長期出售【美國抗投訴服務器】【歐洲抗投訴服務器】【亞洲抗投訴服務器】

Serverless計算簡介及Serverless的形成

Serverless計算簡介及Serverless的形成

早在2009年,伯克利曾針對當時興起的云計算做過評論,并提出了以下6個潛在的優點:

(理論上)無限可用的計算資源

用戶再也不需要承擔服務器運維的工作和責任

服務的按需付費成為可能

超大型數據中心的使用成本顯著降低

通過可視化資源管理,運維操作的難度大大降低

得益于分時復用,物理硬件的利用率大大提高

2009年至今的10年里,云計算領域已經有了很大的發展,上述的諸多優勢已經成為現實,但最后兩點目前的實現仍然不夠優秀,使得大部分的云服務使用者不得不承受復雜的運維成本和較低的硬件使用率。

當時,市場上主流的兩種云服務方案分別是亞馬遜推出的EC2和谷歌推出的App Engine (GAE)。這兩種方案分別代表了兩種思路,EC2選擇了提供底層基礎,它的實例使用起來和一臺物理服務器十分類似,沒有任何的額外功能,你可以在上面運行任何類型、任何語言的服務;相反的,GAE則選擇了提供高層抽象,包括令人印象深刻的自動縮擴容等能力,但同時對用戶能夠運行的代碼做出了限制 —— 要想獲得這些特性,就必須使用google提供的儲存和計算服務,遵循相應的規范。

最終,市場選擇了擁抱EC2這種底層硬件的虛擬方案,這主要是因為開發者們傾向于使用和自己本地開發環境相同的環境來運行服務,這樣做,開發好的代碼基本不需要什么改動就可以輕易部署到云實例上去。

但這樣的決定也帶來了負面影響,采用底層硬件虛擬的方案意味著所有的運維操作都要由開發人員自己來解決,并且為了保證運行在云上的服務具有足夠的穩定性,需要解決很多的問題,比如下面列出的這些:

提供冗余容錯能力,保證一臺機器出現故障時不會影響到整個服務

異地容災和備份機制

能夠有效利用硬件資源的負載均衡方案

響應式地調整服務的規模,實現自動縮擴容

實時監控服務是否正常運行

記錄足夠的日志信息,方便debug和性能調優

系統升級問題,包括安全補丁

能夠快速將服務遷移到新實例的能力

可以看到,上面的每一個問題復雜度都非常高,需要投入大量的人力物力資源才能解決,對于小規模的公司而言,全靠自己來解決這些問題顯然是不可能的。

另一方面,使用基于底層硬件虛擬的方案導致單個服務的開發成本也非常高,打個比方,一個簡單的業務功能,實際實現可能只有幾十行代碼,但卻需要添加諸多體積龐大的庫和框架(比如rpc、數據中心訪問、緩存、監控...)才能夠運行在云服務實例上,這是嚴重拖慢開發效率的。

注意到這些問題,亞馬遜在2015年推出了AWS Lambda服務,提出了Cloud Function的概念,并引起了業界對于Serverless的廣泛關注(Serverless這一詞并不是說真的沒有服務器了,只是開發人員不需要再關注服務器了,你的代碼仍然是運行在真實存在的服務器上的)。

Cloud Function最終被平臺打包成FaaS (Function as a Service, 函數即服務)的形式,它代表著Serverless的核心理念。當然,云平臺也提供以BaaS (Backend as a Service)形式存在的Serverless服務框架。簡單的說,Serverless Computing = FaaS + BaaS。

以我們的觀點而言,一個serverless應用必須能夠實現自動縮擴容和按使用量計費。cloud function做到了這一點,因此我們將其視為當今serverless計算的基本元素。在本文剩下的部分中,將會關注和論述cloud function的形成、演化以及未來;進一步會給serverless計算下一個定義,列舉它所面臨的挑戰和機遇。盡管我們還不知道究竟哪種解決方案會取得最終的勝利,但我們相信所有困擾serverless的問題最終都將會被解決,讓這一概念真正成為云計算的門面(become the face of cloud computing)。

2. Serverless的形成

對于任何一個serverless平臺而言,用戶都只需要使用高級語言編寫一個cloud function,然后選擇一個觸發該函數運行的觸發器 (trigger)(比如文件上傳、數據庫的改動等),其余的工作(實例選擇、縮擴容、部署、容災、監控、日志、安全補丁...)則全部由serverless系統托管。下面的表格總結了在serverless和傳統云計算(我們稱其為serverful)兩種方式的一些區別:

接著我們給出一張serverless云的架構圖:

從上圖中可以看出serverless是如何簡化應用的開發流程和資源使用方式的,在云平臺的環境下,傳統的serverful開發方式就像是在使用匯編這樣的底層語言,而serverless則像是在使用python這樣的高級語言。換言之,當今serverless帶給我們的提升,正如當年高級語言替代匯編一樣,是一種質的改變。

Serverless計算簡介及Serverless的形成

準確的說,我們認為serverless相比serverful,有以下3個顯著的改變:

弱化了儲存和計算之間的聯系。 服務的儲存和計算被分開部署和收費,服務的儲存不再是它本身的一部分,而是演變成了獨立的云服務,這使得計算變得無狀態化,更容易調度和縮擴容,同時也降低了數據丟失的風險。

代碼的執行不再需要手動分配資源。 我們再也不需要為服務的運行指定需要的資源(比如使用幾臺機器、多大的帶寬、多大的磁盤...),只需要提供一份代碼,剩下的交由serverless平臺去處理就行了

按使用量計費。 serverless按照服務的使用量(調用次數、時長等)進行計費,而不是像傳統的serverful服務那樣,按照使用的資源(ECS實例、VM的規格等)計費。

基于上述的三個改變,接下來我們將解釋serverlss和一些相似的產品究竟有何不同。