基于CDN的邊緣計(jì)算平臺(tái)設(shè)計(jì)和思考
CDN的重要性不僅僅在于CDN的業(yè)務(wù)本身,更重要的是CDN的基礎(chǔ)設(shè)施屬性,CDN節(jié)點(diǎn)是全球分布的,隨著5G的正式商用,目前來(lái)看,CDN的規(guī)模最大、算力最強(qiáng),將成為布局邊緣計(jì)算最佳的位置。但是邊緣計(jì)算不是孤立存在,是必須跟云中心協(xié)同的。本文介紹從CDN的角度思考如何打造一個(gè)云邊端協(xié)同的邊緣計(jì)算平臺(tái)。
CDN和邊緣計(jì)算
CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò)。CDN是構(gòu)建在現(xiàn)有網(wǎng)絡(luò)基礎(chǔ)之上的智能虛擬網(wǎng)絡(luò),依靠部署在各地的邊緣服務(wù)器,通過(guò)中心平臺(tái)的負(fù)載均衡、內(nèi)容分發(fā)、調(diào)度等功能模塊,使用戶就近獲取所需內(nèi)容,降低網(wǎng)絡(luò)擁塞,提高用戶訪問(wèn)響應(yīng)速度和命中率。CDN的關(guān)鍵技術(shù)主要有內(nèi)容存儲(chǔ)和分發(fā)技術(shù)。
以上是來(lái)自來(lái)自百度百科的解釋,簡(jiǎn)單的說(shuō)CDN就是用空間換時(shí)間,空間的話就是分部在離終端用戶較近的邊緣節(jié)點(diǎn),時(shí)間上就是終端用戶直接從邊緣節(jié)點(diǎn)直接獲取資源,這樣就不需要直接訪問(wèn)源站,從而提升用戶體驗(yàn)。
舉一個(gè)不是很恰當(dāng)?shù)念惐?,比如現(xiàn)在國(guó)內(nèi)電商平臺(tái)建立物流系統(tǒng):在一城市會(huì)建一二個(gè)大型物流中心(源站),三四線城市會(huì)建立小型物流中心(邊緣節(jié)點(diǎn)),像雙十一這種大促,會(huì)根據(jù)大數(shù)據(jù)統(tǒng)計(jì)算提前在各地的小物流中心準(zhǔn)備好商品(預(yù)熱),這樣用戶就可以快速獲取包裹(就近獲?。?。所以CDN可以認(rèn)為是目前整個(gè)互聯(lián)網(wǎng)的物流系統(tǒng),只不過(guò)CDN分發(fā)的不是包裹,而是圖片、視頻、軟件安裝包。一般一家CDN服務(wù)商需要有成百上千個(gè)邊緣節(jié)點(diǎn),才可以具備比較好的服務(wù)質(zhì)量。
CDN已經(jīng)是一個(gè)充分驗(yàn)證過(guò)的成熟技術(shù),可以不夸張地說(shuō),CDN扛住了整個(gè)互聯(lián)網(wǎng)大部分的流量,沒(méi)有CDN就沒(méi)有現(xiàn)在繁榮的各種視頻網(wǎng)站、直播平臺(tái)和小視頻APP。同時(shí)經(jīng)過(guò)長(zhǎng)期的發(fā)展,CDN在供應(yīng)鏈體系、節(jié)點(diǎn)建設(shè)、網(wǎng)絡(luò)運(yùn)維都有非常成熟的經(jīng)驗(yàn)和沉淀。
隨著互聯(lián)網(wǎng)智能終端設(shè)備數(shù)量的急劇增加,以及5G和物聯(lián)網(wǎng)時(shí)代的到來(lái),傳統(tǒng)云計(jì)算中心集中存儲(chǔ)、計(jì)算的模式已經(jīng)無(wú)法滿足終端設(shè)備對(duì)于時(shí)效、容量、算力的需求。將云計(jì)算的能力下沉到邊緣側(cè)、設(shè)備側(cè),并通過(guò)中心進(jìn)行統(tǒng)一交付、運(yùn)維、管控,將是云計(jì)算的重要發(fā)展趨勢(shì),這個(gè)就是邊緣計(jì)算。
IDC預(yù)計(jì),到2020年全球?qū)⒂谐^(guò)500億的終端與設(shè)備聯(lián)網(wǎng),超過(guò)40%的數(shù)據(jù)要在網(wǎng)絡(luò)邊緣側(cè)進(jìn)行分析、處理與存儲(chǔ),這對(duì)邊緣計(jì)算提供了充分的場(chǎng)景和想象空間。
邊緣計(jì)算分層結(jié)構(gòu)包括云、邊、端:
云,Centralized Cloud:傳統(tǒng)云計(jì)算的中心節(jié)點(diǎn),資源豐富,計(jì)算力強(qiáng),擴(kuò)展性強(qiáng),服務(wù)多區(qū)域,但離終端用戶遠(yuǎn)。同時(shí)云中心是邊緣計(jì)算的管控端,負(fù)責(zé)全網(wǎng)算力和數(shù)據(jù)的統(tǒng)一管理、調(diào)度、存儲(chǔ);
邊,Infrastructure Edge:通常服務(wù)特定的一個(gè)區(qū)域,如市、縣、區(qū)等,部署在目標(biāo)服務(wù)區(qū)域10~30公里的地方,提供滿足目標(biāo)服務(wù)區(qū)域的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)服務(wù)。Infrastructure Edge邊緣通常位于IDC內(nèi),擁有充足的算力和存儲(chǔ)容量,和中心有專線或骨干網(wǎng)連接,如CDN節(jié)點(diǎn)等。Infrastructure Edge又可分為Access Edge和Aggregation Edge兩層,其中Access Edge靠近Device Edge,與用戶或設(shè)備端更近,Aggregation Edge聚合一個(gè)或多個(gè)Access Edge的數(shù)據(jù),與云端進(jìn)行交互。
端,Device Edge:終端設(shè)備,如手機(jī)、智能家電、各類傳感器、攝像頭等。
可以認(rèn)為CDN是邊緣計(jì)算的一種形態(tài),并且是當(dāng)前來(lái)看規(guī)模最大、算力最強(qiáng)的形態(tài)、也是成熟度最高的業(yè)務(wù)形態(tài)。但是CDN的業(yè)務(wù)形態(tài)也需要做技術(shù)架構(gòu)升級(jí),才能支撐更多的邊緣計(jì)算場(chǎng)景。
邊緣計(jì)算的技術(shù)形態(tài)
邊緣計(jì)算技術(shù)形態(tài)也可以按照傳統(tǒng)的邏輯劃分為IaaS、PaaS和SaaS:
IaaS:在邊緣測(cè)提供虛擬機(jī),這個(gè)跟在云中心購(gòu)買ECS差不多,只不過(guò)機(jī)器是部署在邊緣IDC(這里的邊緣IDC其實(shí)是相對(duì)于云中心IDC),但是在網(wǎng)絡(luò)情況和穩(wěn)定性上是跟云中心不一樣的,畢竟云中心有幾萬(wàn)臺(tái)機(jī)器的規(guī)模冗余,有專門的駐場(chǎng)人員、機(jī)房和網(wǎng)絡(luò)維護(hù),而邊緣節(jié)點(diǎn)有時(shí)候是不具備這些條件的,但是在使用場(chǎng)景上肯定也是不一樣的,比如:不建議在邊緣部署對(duì)數(shù)據(jù)可靠性要求非常高的業(yè)務(wù)。
PaaS:提供虛擬機(jī)的方式對(duì)于有些用戶來(lái)說(shuō),可能運(yùn)維起來(lái)有點(diǎn)麻煩:比如機(jī)器是分部在不同地方和不同運(yùn)營(yíng)商的,各地的網(wǎng)絡(luò)不大一樣,機(jī)房也有網(wǎng)絡(luò)割接的時(shí)候,管理這些虛擬機(jī)也會(huì)有不小的成本,難以快速進(jìn)行業(yè)務(wù)切換調(diào)度。這樣一來(lái)就需要有個(gè)邊緣場(chǎng)景的PaaS服務(wù),來(lái)幫助用戶管理和調(diào)度邊緣的資源,容器和K8S的話是一個(gè)在運(yùn)維調(diào)度層面很好的解決方案。在解決運(yùn)維的問(wèn)題后,用戶對(duì)于PaaS的需求也會(huì)上升到更加多樣的能力,特別對(duì)于各種中間件的需求,EdgeKV,EdgeStore等等,比如KV需要具備全網(wǎng)數(shù)據(jù)同步的能力。
SaaS:CDN就是典型的SaaS服務(wù),主要包含包含靜態(tài)文件(文件、圖片、視頻)加速、流媒體加速、動(dòng)態(tài)加速,衍生的形態(tài)還包括安全、P2P。另外視頻AI也是后續(xù)一個(gè)重要的SaaS能力,比如自動(dòng)駕駛、IOT場(chǎng)景的一個(gè)重要需求就是需要在邊緣能夠直接進(jìn)行視頻AI處理來(lái)保證延時(shí)。
可編程CDN:除了往通用計(jì)算轉(zhuǎn)型,CDN的一個(gè)重要方向是往可編程CDN轉(zhuǎn)型,簡(jiǎn)單的說(shuō)就是通過(guò)函數(shù)計(jì)算或者腳本來(lái)控制CDN邏輯,比如Cloudfare的EdgeWorker,在邊緣支持V8引擎來(lái)運(yùn)行JS腳本,這種技術(shù)方案相比于容器的優(yōu)勢(shì)在于更加輕量級(jí)、成本更低、啟動(dòng)時(shí)間更快。
可以看出邊緣計(jì)算并不是孤立存在的,邊緣計(jì)算一定是需要跟云計(jì)算進(jìn)行協(xié)同,所謂云邊端協(xié)同。
一種比較形象的說(shuō)法:如果把云計(jì)算比作整個(gè)計(jì)算機(jī)智能系統(tǒng)的大腦。那么邊緣計(jì)算就是這個(gè)系統(tǒng)的眼睛耳朵和手腳。完全依賴云計(jì)算的計(jì)算機(jī)系統(tǒng)就好比每一件事都要請(qǐng)示司令部的軍隊(duì),在需要大量和外界互動(dòng)的時(shí)候會(huì)顯得僵化,反應(yīng)遲緩,而且一旦網(wǎng)絡(luò)有點(diǎn)問(wèn)題就徹底歇菜。加上邊緣計(jì)算之后就好比讓中低層軍官也開(kāi)始發(fā)揮主觀能動(dòng)性,能一定程度上自主做出智能判斷和行動(dòng)決策,同時(shí)也只需要把一部分經(jīng)過(guò)篩選的信息上傳到司令部。大大緩解了網(wǎng)絡(luò)通訊的壓力。即使在和總司令部暫時(shí)失去聯(lián)系的情況下,也能自主做出部分決策。
邊緣計(jì)算跟云計(jì)算相比也面臨著諸多挑戰(zhàn),以CDN為例,邊緣節(jié)點(diǎn)分布廣,單節(jié)點(diǎn)規(guī)模?。?~100機(jī)器左右),大部分節(jié)點(diǎn)是沒(méi)有駐場(chǎng)人員,所以維修周期長(zhǎng)(1~2周)。同時(shí)節(jié)點(diǎn)的網(wǎng)絡(luò)復(fù)雜并且不可控,網(wǎng)絡(luò)割接、運(yùn)營(yíng)商封禁是常有的事情,省與省,國(guó)與國(guó)(海外)之間都有種非常復(fù)雜的調(diào)用鏈路。
面對(duì)這些問(wèn)題,就需要對(duì) 調(diào)度/容災(zāi)能力、運(yùn)維能力要有比較高的要求,CDN本身的業(yè)務(wù)形態(tài)就是天然容災(zāi)和可調(diào)度的:一個(gè)節(jié)點(diǎn)掛了,流量就可以切換到其他節(jié)點(diǎn)上。CDN節(jié)點(diǎn)架構(gòu)也相對(duì)比較簡(jiǎn)單,經(jīng)典三層架構(gòu):四層負(fù)載均衡(LVS)+七層負(fù)載均衡(Nginx或者HaProxy)+緩存服務(wù)(Squid),所以CDN運(yùn)維也是比較簡(jiǎn)單的,機(jī)器上主要是緩存數(shù)據(jù),機(jī)器掛了整體影響不大,不需要做數(shù)據(jù)遷移。
但是CDN要轉(zhuǎn)型到通用邊緣計(jì)算平臺(tái),調(diào)度/容災(zāi)能力和運(yùn)維能力就會(huì)變成規(guī)?;囊粋€(gè)主要瓶頸,怎么做調(diào)度、怎么做容災(zāi)、怎么做運(yùn)維,這些問(wèn)題在邊緣場(chǎng)景更加突出。
因此容器的輕量級(jí)和DevOps屬性,加上Kubernetes的調(diào)度,目前看來(lái)是非常是非常適合邊緣計(jì)算。
容器在邊緣計(jì)算的落地形態(tài)
容器和Kubernetes的落地場(chǎng)景主要還是在中心大集群場(chǎng)景,目前在邊緣的落地形態(tài)也是在探索和實(shí)踐中,目前針對(duì)邊緣場(chǎng)景的Kubernetes有:
K3S:K3S是Rancher開(kāi)源的輕量級(jí)Kubernetes發(fā)行版,K3S是通過(guò)大量裁剪Kubernetes代碼,只保留主要核心代碼,這是是為了在邊緣計(jì)算環(huán)境中運(yùn)行在x86、ARM64和ARMv7處理器上的小型、易于管理的Kubernetes集群日益增長(zhǎng)的需求??梢钥闯鯧3S主要是適配端(Device Edge)上的場(chǎng)景,通過(guò)簡(jiǎn)化Kubernetes來(lái)保證可以運(yùn)行在終端設(shè)備上。
KubeEdge:KubeEdge是華為貢獻(xiàn)給開(kāi)源社區(qū)的一個(gè)項(xiàng)目,從名字上可以看出也是真的邊緣場(chǎng)景, KubeEdge的優(yōu)勢(shì)在于設(shè)備連接,它可以支持多種協(xié)議,并使用基于標(biāo)準(zhǔn)MQTT的通信,這有助于有效地使用新節(jié)點(diǎn)和設(shè)備擴(kuò)展邊緣集群。KubeEdge主要的場(chǎng)景在于邊緣接入層(Access Edge),解決各種IOT終端設(shè)備接入的問(wèn)題。
ACK@Edge:ACK@Edge是阿里云ACK(Kubernetes)適配邊緣的形態(tài),ACK@Edge在實(shí)現(xiàn)上保存了原生Kubernetes的所有能力,所有邊緣相關(guān)的特性均通過(guò)Addon實(shí)現(xiàn),Master是部署在云中心,Node在邊緣端。ACK@Edge比較適合基礎(chǔ)設(shè)施邊緣(Infrastructure Edge),比如CDN場(chǎng)景。
以CDN場(chǎng)景的落地場(chǎng)景來(lái)說(shuō),形態(tài)上就是在云中心部署Kubernetes Master,將云中心所在Region附近的CDN節(jié)點(diǎn)接入到Kubernetes中,最后Kubernetes之上構(gòu)建Fedration能力,進(jìn)行全局容器調(diào)度。這樣就能利用Kubernetes調(diào)度能力和容器的DevOps能力。具體可以參考https://yq.aliyun.com/articles/711767。
未來(lái)展望和趨勢(shì)判斷
CDN轉(zhuǎn)型邊緣計(jì)算平臺(tái),CDN已經(jīng)是一個(gè)非常成熟技術(shù)和業(yè)務(wù),也是因?yàn)槌墒?,所以同質(zhì)化嚴(yán)重,同時(shí)因?yàn)镃DN的業(yè)務(wù)粘性不夠(改個(gè)DNS業(yè)務(wù)就切走了),所以目前國(guó)內(nèi)CDN的商業(yè)環(huán)境并不是太好,CDN行業(yè)變成價(jià)格紅海,所以CDN廠商也紛紛在進(jìn)行戰(zhàn)略轉(zhuǎn)型邊緣計(jì)算平臺(tái),但是5G還未大規(guī)模商用,轉(zhuǎn)型之路面臨著諸多問(wèn)題:落地場(chǎng)景存不確定因素,客戶接受程度不夠等等。但是改變可能失敗,不改變必定掉隊(duì),所以當(dāng)務(wù)之急是先修煉好內(nèi)功,把新技術(shù)(虛擬化/容器/AI)在CDN進(jìn)行落地和磨煉,同時(shí)積極挖掘各種新業(yè)務(wù)和場(chǎng)景。
安全容器是重要能力,容器天然適合邊緣計(jì)算,但是容器也是比較大的硬傷,那就是安全和隔離,這也是為什么現(xiàn)在邊緣計(jì)算的主要對(duì)外售賣形態(tài)還是虛擬機(jī)。所以安全容器就是一個(gè)最佳解決方案,具備容器的DevOps屬性,又有比較好的隔離和安全保證。今年Kata安全容器發(fā)展迅猛,所以安全容器是邊緣計(jì)算的一個(gè)關(guān)鍵技術(shù)。
視頻AI和邊緣計(jì)算天生一對(duì),視頻AI目前已經(jīng)有不少落地場(chǎng)景:人臉識(shí)別門禁、自動(dòng)垃圾分類、食堂自助結(jié)賬等等,可以預(yù)見(jiàn)視頻AI將會(huì)繼續(xù)快速發(fā)展。但是隨著規(guī)模的擴(kuò)大和場(chǎng)景的挖掘,視頻AI對(duì)于低延時(shí)的需求會(huì)日漸強(qiáng)烈,如果能把視頻AI能力部署在邊緣節(jié)點(diǎn)上:云中心進(jìn)行大數(shù)據(jù)計(jì)算和AI訓(xùn)練,AI訓(xùn)練結(jié)果下沉到邊緣節(jié)點(diǎn),邊緣負(fù)責(zé)視頻接入,直接在邊緣進(jìn)行處理。
Q&A
Q:能否介紹一下,目前CND節(jié)點(diǎn)改造成邊緣計(jì)算節(jié)點(diǎn),主要涉及哪些方面改造,阿里的實(shí)踐情況,謝謝。
A:目前CDN改造有3個(gè)部分:基礎(chǔ)設(shè)施到改造(交換機(jī)、機(jī)型),軟件層面的改造(容器化),CDN節(jié)點(diǎn)架構(gòu)的改造(比如把傳統(tǒng)的7層負(fù)載均衡改成Kubernetes的Ingress Controller)。
Q:CDN場(chǎng)景的落地場(chǎng)景來(lái)說(shuō),形態(tài)上就是在云中心部署Kubernetes Master,將云中心所在Region附近的CDN節(jié)點(diǎn)接入到Kubernetes中 ,指的是在各個(gè)Region里面的節(jié)點(diǎn)當(dāng)作Kubernetes的Node處理嗎?
A:比如我們?cè)诎⒗镌浦行牡暮贾軷egion創(chuàng)建一個(gè)Kubernetes Master,然后會(huì)把杭州整個(gè)省的CDN節(jié)點(diǎn),全部接入到這個(gè)Kubernetes Master里面,CDN節(jié)點(diǎn)指的是一個(gè)機(jī)房,一個(gè)機(jī)房會(huì)有1~100臺(tái)機(jī)器,整個(gè)CDN節(jié)點(diǎn)的機(jī)器都會(huì)接入。
Q:請(qǐng)問(wèn)阿里邊緣計(jì)算有和5G結(jié)合的計(jì)劃嗎?具體有哪些結(jié)合點(diǎn)?
A:在今年云棲大會(huì)上,我們已經(jīng)發(fā)布了5G邊緣計(jì)算戰(zhàn)略,這個(gè)可以網(wǎng)上找下視頻回放。具體的結(jié)合點(diǎn)目前來(lái)看是城市大腦和城市云。不過(guò)因?yàn)?G還未大規(guī)模商用,所以我們也在探索。https://yunqi.youku.com/2019/hangzhou/review?spm=a2c4e.11165380.1395223.1
Q:請(qǐng)問(wèn)未來(lái)Docker會(huì)向安全容器轉(zhuǎn)型嗎?安全容器是趨勢(shì),作為開(kāi)發(fā)者要注意哪些點(diǎn)?
A:其實(shí)Kata和普通runC容器,在行為上沒(méi)有太大差別,如果非要說(shuō)關(guān)注點(diǎn)的話,目前我覺(jué)得是內(nèi)核部分,因?yàn)镵ata容器對(duì)于內(nèi)核要求是比較高的,穩(wěn)定性方面還需要打磨。
Q:在云上部署Kubernetes Master節(jié)點(diǎn),CDN節(jié)點(diǎn)作為邊緣節(jié)點(diǎn)。對(duì)Kubernetes來(lái)說(shuō),節(jié)點(diǎn)之前的網(wǎng)絡(luò)通訊要求會(huì)比較高,那當(dāng)網(wǎng)絡(luò)不穩(wěn)定時(shí),邊緣節(jié)點(diǎn)和Master節(jié)點(diǎn)斷開(kāi),這時(shí)如何實(shí)現(xiàn)邊緣節(jié)點(diǎn)上的服務(wù)自治呢?
A:這個(gè)就是ACK@Edge解決的問(wèn)題了,ACK@Edge在邊緣測(cè)機(jī)器上部署了一個(gè)Edgehub的組件,kubelet并不是直接請(qǐng)求kube-apiserver,而是通過(guò)Edgehub然后再請(qǐng)求到APIServer。Edgehub做了緩存和代理的能力,即使在斷網(wǎng)的情況下,也能保障邊緣節(jié)點(diǎn)的kubelet正常工作。這個(gè)能力叫做邊緣自治,是ACK加強(qiáng)的能力。
Q:請(qǐng)談?wù)劙⒗锟吹降倪吘売?jì)算cover的真實(shí)價(jià)值場(chǎng)景或者客戶群,感覺(jué)很多現(xiàn)有場(chǎng)景中心計(jì)算也能滿足,不一定要用邊緣計(jì)算。特別是邊緣計(jì)算節(jié)點(diǎn)也賣虛機(jī),價(jià)值不大。謝謝。
A:以CDN為例,CDN就是通過(guò)邊緣做加速來(lái)提高用戶體驗(yàn)。虛擬只是一種形態(tài),比如你購(gòu)買虛擬機(jī)自建CDN。所以邊緣的場(chǎng)景肯定是跟中心不一樣,比如城市大腦,就是需要在就近有個(gè)節(jié)點(diǎn)可以做接入,如果全部回中心,對(duì)中心的壓力也很大。
Q:請(qǐng)問(wèn)安全容器的存儲(chǔ)性能有考慮過(guò)么?接入點(diǎn)在邊緣還是放云端?
A:安全容器最終是跑著邊緣上的,安全容器的存儲(chǔ)目前是一個(gè)大的問(wèn)題,Kata開(kāi)源的存儲(chǔ)方案性能并不好。阿里云的內(nèi)核團(tuán)隊(duì)做了大量的優(yōu)化,目前應(yīng)該有了比較大的性能改進(jìn)。
Q:容器安全方面有什么需要注意的?除了Kata之外,使用dockerd與Kubernetes有什么安全建議psp之類的?
A:安全容器的使用,第一Kubernetes需要做適配runtimeClass,第二內(nèi)核也要求比較高(應(yīng)該是要4.*內(nèi)核比較穩(wěn)定)。安全建議:就是加證書(shū)、改端口,不然容易被外部注入容器。其他的安全建議:就是直接使用云上產(chǎn)品,云上產(chǎn)品具備了比較高的安全能力。
Q:CDN的流量分配是在哪里做的?是DNS還是GSLB那種?異地災(zāi)備也可以用同樣的方式?
A:CDN的流量分配就有DNS、HTTPDNS、302調(diào)度,CDN本身就是成熟的技術(shù)了,調(diào)度這塊都是非常成熟的技術(shù)。