2006 年 8 月蝇庭,Google 在業(yè)界首次提出“云計算”(Cloud Computing )的概念醉鳖;同年亞馬遜相繼推出在線存儲服務(wù) S3 和彈性計算云 EC2 等云服務(wù)。走過第一個完整的十周年哮内,現(xiàn)在已是“凡人飲水處盗棵,皆言云計算”壮韭。在第二個十年剛開始的現(xiàn)在,云計算的未來會是從中心走向邊緣嗎纹因?
Kuhiro 的 CTO Russell Sullivan 發(fā)文介紹了他們的 NearCloud 產(chǎn)品喷屋,并指出 Serverless 加 CRDT,從中心走向邊緣是云計算未來的發(fā)展方向瞭恰。
作為新興的 IaaS 解決方案屯曹,Serverless 已然成為野心勃勃的互聯(lián)網(wǎng)計算平臺。從亞馬遜 2014 年推出 Lambda 開始惊畏,Serverless 已經(jīng)擴(kuò)展到了 CDN Edge恶耽,并向移動、物聯(lián)網(wǎng)和存儲領(lǐng)域進(jìn)軍颜启。CDN Edge 的 Serverless(SAE)是一個全新的領(lǐng)域偷俭,它預(yù)示著業(yè)務(wù)邏輯將從單一的云區(qū)域向互聯(lián)網(wǎng)邊緣轉(zhuǎn)移,未來的服務(wù)器有可能直接運行在蜂窩基站里缰盏。隨著 5G 技術(shù)的發(fā)展與普及社搅,SAE 到服務(wù)之間的延遲降到了幾毫秒,互聯(lián)網(wǎng)將轉(zhuǎn)變成一個全局性的實時計算平臺乳规。
在經(jīng)歷了創(chuàng)業(yè)并出售了一個 NoSQL 公司之后形葬,Russell 意識到,計算無非局限于兩個方面:數(shù)據(jù)中心或設(shè)備暮的,這兩者之間存在著一個巨大的待開發(fā)處女地笙以。于是,他召集了一班聰明人成立了 Kuhiro冻辩,一個專注于將云推向互聯(lián)網(wǎng)邊緣的初創(chuàng)公司猖腕,逐步創(chuàng)建一個靠近用戶的去中心化云——NearCloud。
NearCloud 的基礎(chǔ)是計算和數(shù)據(jù)恨闪,于是他們構(gòu)建了一個有狀態(tài)的 SAE 系統(tǒng)倘感。他們在 CDN Edge 運行客戶的業(yè)務(wù)邏輯,讓這些函數(shù)實時地讀取和寫入客戶數(shù)據(jù)咙咽。他們在 CRDT 數(shù)據(jù)層投入了大量精力老玛,實現(xiàn)低延遲的動態(tài) Web 處理【ǎ客戶借助 Kuhiro 將對延遲敏感的應(yīng)用從云端遷移到邊緣蜡豹,變成全局性的實時應(yīng)用。
Edge Serverless
從物理層面來看溉苛,SAE 有點類似 CDN:很多迷你數(shù)據(jù)中心分散在國家(或者全球)的各個角落镜廉,為近距離的用戶提供低延遲的服務(wù)。SAE 用戶將 URL 域名改成 SAE 供應(yīng)商的域名愚战,他們的請求就會被發(fā)送給就近的 SAE PoP(Points-of-Presence)娇唯。
在美國齐遵,SAE 系統(tǒng)可以部署在 30 萬個基站上,99% 的人口距離他們附近的基站只有幾公里塔插。
去中心化的好處
一般來說梗摇,去中心化在帶寬、延遲和健壯性方面都會帶來好處佑淀。為了說明這點留美,接下來以亞馬遜的倉儲中心為例彰檬。亞馬遜的倉儲中心為 Prime 會員提供兩天到貨的物流服務(wù)伸刃,貨品直接從各個分散的貨倉發(fā)出。
去中心化倉儲中心的好處在于:
- 延遲:Prime 會員要求貨物必須在兩天內(nèi)送達(dá)逢倍,低延遲是 Prime 的核心競爭力捧颅。
- 帶寬:倉儲中心越多,每個倉儲中心需要處理的貨品就越少较雕,Prime 會員規(guī)模就可以更好地伸縮碉哑。
- 健壯性:如果硅谷的倉儲中心沒有可用的送貨車,或者遭遇了地震亮蒋,加尼福尼亞的倉儲中心可以接管訂單扣典。
SAE 系統(tǒng)與亞馬遜的倉儲中心類似: - 延遲:Edge PoP 位于用戶的就近位置或云區(qū)域,延遲被降到最低慎玖。
- 帶寬:每個 PoP 只負(fù)責(zé)處理一部分用戶贮尖,不需要將請求路由到中心系統(tǒng):負(fù)載是分布式的,可以更好地伸縮趁怔。
- 健壯性:如果 PoP 出現(xiàn)飽和或者遭遇地震湿硝,負(fù)載立即被重定向到就近的 PoP。
幾乎所有的互聯(lián)網(wǎng)應(yīng)用都會從去中心化中受益
去中心化的三大好處(延遲润努、帶寬关斜、健壯性)給整個互聯(lián)網(wǎng)帶來了不可估量的價值,Web铺浇、移動痢畜、游戲、廣告鳍侣、虛擬現(xiàn)實裁着、地圖,等等拱她。
降低延遲可以改進(jìn)用戶體驗二驰,是競爭力的源泉。而對于公司來說秉沼,帶寬和健壯性更是無價之寶桶雀,他們不再擔(dān)心運維和動態(tài)伸縮問題矿酵,在流量高峰來臨時也不怕。幾乎所有的互聯(lián)網(wǎng)應(yīng)用都可以從去中心化的云中獲得好處矗积。
Serverless 為 Edge 帶來多租戶和伸縮性
接下來從物理層面來比較一下 Edge 和云的區(qū)別全肮。
單個云可以包含超過 10 萬個服務(wù)器,而 Edge PoP 則要小得多(通常在 10 到 100 臺之間)棘捣,PoP 提供的硬件資源比云要少很多辜腺。
所以,想象一下乍恐,10 臺服務(wù)器如何能夠為 1 萬個用戶提供 IaaS 服務(wù)评疗?不用說每個用戶是否能夠獲得一臺虛擬機(jī),單是一個私有的容器都不行茵烈。所以必須縮小計算單元百匆,也就是使用函數(shù)——FaaS(也就是 Serverless),那么這樣可以把 1 萬個用戶函數(shù)部署在 10 臺服務(wù)器上嗎呜投?這個是可以做到的加匈,甚至可以部署更多的函數(shù)。
Serverless 的低資源消耗特點與 Edge PoP 有限的資源配置相得益彰仑荐。
SAE 的狀態(tài):無狀態(tài)持續(xù)運行
那么 SAE 現(xiàn)在已經(jīng)發(fā)展到什么程度了雕拼?作為一個新興領(lǐng)域(始于 2016 年),提供 SAE 服務(wù)的公司還很少粘招,但一直在增長啥寇。目前最主要的兩個產(chǎn)品分別是 Cloudflare 的 Workers 和亞馬遜的 Lambda@Edge。這兩個產(chǎn)品都很安全男图,并以無服務(wù)器的形式提供最小化的 IaaS Edge 服務(wù)示姿,但在靈活性和性能方面則有所區(qū)別。
對無狀態(tài)計算支持不足
可惜逊笆,不管是 Cloudflare Workers 還是 Lambda@Edge 都沒有提供動態(tài)數(shù)據(jù)選項栈戳,它們只提供計算功能。缺乏動態(tài)數(shù)據(jù)能力(也就是無狀態(tài)能力)限制了一些 SAE 功能难裆,比如基于客戶端狀態(tài)(如 URL-Parameters子檀、Cookie、User-agent)或 orign 狀態(tài)(如 Etag乃戈、Cache-Control)重寫請求和響應(yīng)消息褂痰。
無狀態(tài)計算更像是網(wǎng)絡(luò)路由,而不是一般的編程模型:智能負(fù)載均衡和重寫請求或響應(yīng)消息症虑∷跬幔可以想象一下,如果亞馬遜把所有的商品存放在一個中心倉庫里谍憔,而且倉儲中心只有接收訂單和向外發(fā)送包裹的能力匪蝙,那么 Prime 的體驗會很糟糕主籍,一個訂單可能需要等上幾天甚至幾周。
Edge 數(shù)據(jù)的小秘密:數(shù)據(jù)沖突
SAE 之所以是無狀態(tài)的逛球,是因為往大量 PoP 增加數(shù)據(jù)層會比較復(fù)雜千元。理想情況下,可以為每個 PoP 增加一個數(shù)據(jù)庫颤绕,每個函數(shù)直接操作這個本地數(shù)據(jù)庫幸海,然后把數(shù)據(jù)復(fù)制到其他 PoP 數(shù)據(jù)庫里。但這里有一個問題:在將一個中心數(shù)據(jù)庫拆分成多個數(shù)據(jù)庫之后奥务,在這些數(shù)據(jù)庫之間復(fù)制數(shù)據(jù)會導(dǎo)致沖突物独,而且節(jié)點之間的物理距離越長,出現(xiàn)數(shù)據(jù)沖突的幾率就越高汗洒。
對數(shù)據(jù)進(jìn)行去中心化有兩種方式:一種是基于共識(consensus)议纯,一種是基于 CRDT(Conflict-free Replicated Data Type)父款。這兩種方式都有各自的優(yōu)缺點溢谤,稍后會詳細(xì)解釋。
Edge 復(fù)制
接下來深入了解一下如何往 SAE 添加數(shù)據(jù)層憨攒。
如果在 SAE 中修改了單個 PoP 的數(shù)據(jù)世杀,那么需要把數(shù)據(jù)復(fù)制到哪些地方?是復(fù)制到所有的 PoP 上還是部分 PoP 上肝集,又或者不復(fù)制瞻坝?這個要取決于實際情況,所以說以上三種情況都是有可能的杏瞻。
SAE 復(fù)制可以被想象成一個圖譜所刀,左邊是為 single-user 復(fù)制,右邊是 all-users 復(fù)制捞挥。
single-user 復(fù)制的流程很簡單浮创,只需要將單個 PoP 的數(shù)據(jù)備份起來就可以了,而 all-users 復(fù)制則需要進(jìn)行點對點的數(shù)據(jù)廣播(加上備份)砌函。如果發(fā)生故障斩披,single-user 復(fù)制會變得復(fù)雜一些。用戶需要切換到另一個 PoP 上讹俊,所以需要從多個 PoP 并行復(fù)制到其他多個 PoP 上垦沉。
在最糟糕的情況下,如果數(shù)據(jù)修改頻繁仍劈,那么 all-users 復(fù)制就會變成自我 DDoS 攻擊厕倍。為了避免出現(xiàn)這種情況,可以通過增加延遲來換取性能贩疙,并采用批次的方式讹弯,這樣可以獲得更好的伸縮性诬像。
Edge 的數(shù)據(jù)復(fù)制問題非常獨特,與已有的數(shù)據(jù)存儲復(fù)制流程不太一樣闸婴,所以需要新的技術(shù)來支持它坏挠。
基于 CRDT 的解決方案
所幸,Edge 的狀態(tài)復(fù)雜性可以通過一些數(shù)據(jù)結(jié)構(gòu)和相關(guān)算法(Conflict-free Replicated Data Type邪乍,CRDT)來解決降狠。CRDT 算法允許參與者自主修改數(shù)據(jù),并以零共識的方式自動解決數(shù)據(jù)沖突庇楞。CRDT 的這些特點(自主性榜配、零共識、自動解決沖突)是 SAE 平臺實現(xiàn)低延遲的基礎(chǔ)要素吕晌。
自主性意味著 PoP 可以在本地處理請求并快速做出響應(yīng)蛋褥,不需要與千里之外的其他 PoP 達(dá)成共識。PoP 的自主性和并行修改數(shù)據(jù)會導(dǎo)致數(shù)據(jù)沖突睛驳,而 CRDT 可以通過多種數(shù)據(jù)結(jié)構(gòu)自動解決數(shù)據(jù)沖突烙心,并提供最終強(qiáng)一致性。
盡管 CRDT 也存在一些不足乏沸,但比起基于共識的解決方案要好得多淫茵。
基于共識的解決方案太慢了
以谷歌的 Spanner 為例,Spanner 是目前最為先進(jìn)的基于共識的數(shù)據(jù)層解決方案蹬跃,Spanner 的論文中提到:
客戶端和區(qū)域需要處于網(wǎng)絡(luò)延遲低于 1 毫秒的數(shù)據(jù)中心里匙瘪。
Spanner 并不適合用于長距離節(jié)點,也無法實現(xiàn)低延遲的并行提交蝶缀。Spanner 使用的是兩階段提交丹喻,每個事務(wù)需要穿行網(wǎng)絡(luò)兩次。美國東海岸到美國西海岸一個來回需要 100 毫秒翁都,那么兩階段提交需要 200 毫秒碍论,這對于大部分應(yīng)用程序來說都太慢了。
Kuhiro 比 Lambda 快上 5 到 10 倍
經(jīng)過實測荐吵,對于美國西海岸的用戶骑冗,Kuhiro 比 Lambda 快上 5 到 10 倍,東海岸用戶為 2 到 4 倍先煎,而國際用戶則為 50 倍贼涩。降低延遲對增加營收有直接的影響,Kuhiro 正是這樣的一種工具薯蝎,幫助客戶提升應(yīng)用程序速度遥倦,改進(jìn)用戶體驗,最大化利潤。
Kuhiro 不可思議的健壯性
這里有一個視頻記錄下了 Kuhiro 數(shù)據(jù)層不可思議的健壯性袒哥。在 12 分鐘的時間里缩筛,隨機(jī)停掉不同數(shù)據(jù)中心里的節(jié)點,甚至關(guān)閉整個數(shù)據(jù)中心堡称,然后再重新啟動瞎抛,簡直就是亂來一通。而視頻里顯示却紧,基于 CRDT 的系統(tǒng)仍然健壯如牛桐臊。
數(shù)據(jù)層的健壯性不僅在發(fā)生宕機(jī)或發(fā)生數(shù)據(jù)中心故障時能夠帶來好處,它還能降低 DDoS 攻擊所帶來的影響晓殊。
Edge Serverless 進(jìn)行時
NearCloud 看似遙不可及断凶,但其實它已經(jīng)帶著有狀態(tài) Serverless 來到了 Edge 系統(tǒng)里。SAE 最主要的優(yōu)勢在于它全局性的低延遲巫俺,另外還具有高度的健壯性(包括降低 DDoS 攻擊的影響面)认烁,當(dāng)然也具備 Serverless 所有的優(yōu)點。Kuhiro 的有狀態(tài) Serverless 為用戶提供了創(chuàng)建去中心化應(yīng)用的能力介汹,也可以對已有的 Serverless 應(yīng)用去中心化却嗡,為客戶提供超低延遲的服務(wù)。
原文鏈接:https://mp.weixin.qq.com/s/I9bN8Kl872FpvR3nD2J4ZA
英文鏈接:http://highscalability.com/blog/2017/11/6/birth-of-the-nearcloud-serverless-crdts-edge-is-the-new-next.html