网易云信自研大规模传输网核心系统架构剖析
隨著邊緣計(jì)算及RTC技術(shù)的興起,業(yè)務(wù)服務(wù)器的邊緣化可以帶來(lái)大量收益:一方面就近接入可以優(yōu)化客戶端上下行質(zhì)量,另一方面邊緣節(jié)點(diǎn)可以大幅降低帶寬成本。但如何保證相隔千山萬(wàn)水的邊緣服務(wù)器之間的網(wǎng)絡(luò)傳輸質(zhì)量成了一個(gè)難題。本次LiveVideoStackCon 2021北京站,我們邀請(qǐng)到了網(wǎng)易云信服務(wù)端首席架構(gòu)師——吉奇通過(guò)分析網(wǎng)易云信自研大規(guī)模分布式傳輸網(wǎng)(WE-CAN)核心系統(tǒng)的架構(gòu)對(duì)上述問(wèn)題進(jìn)行了深入探討。
文 | 吉奇
整理 | LiveVideoStack
大家好,我是吉奇,來(lái)自網(wǎng)易云信,今天演講的主題是網(wǎng)易云信自研大規(guī)模傳輸網(wǎng)核心系統(tǒng)架構(gòu)剖析。
首先自我介紹一下,我目前在網(wǎng)易云信做服務(wù)端架構(gòu),原來(lái)在美國(guó)工作過(guò)一段時(shí)間,回國(guó)之后接觸到RTC和通信行業(yè)。我本身的經(jīng)歷是一直在做服務(wù)端,在分布式后臺(tái)、網(wǎng)絡(luò)傳輸,包括高并發(fā)、傳輸協(xié)議等領(lǐng)域都有一定的經(jīng)驗(yàn)。
1. 云信介紹
云信是網(wǎng)易集24年IM以及音視頻技術(shù)打造的融合通信云服務(wù)專家,穩(wěn)定易用的通信與視頻PaaS平臺(tái)。相信大部分同行對(duì)云信的IM能力應(yīng)該是很熟悉,其實(shí)我們的音視頻技術(shù)也有很多的積累,最近也有很好的發(fā)展。包括現(xiàn)在我們結(jié)合網(wǎng)易易盾也有了很多安全方面的一些獨(dú)到的方案,我們立志要做全行業(yè)最好的融合通信PaaS平臺(tái)。最近我們網(wǎng)易云信也被納入Gartner 2021年《CPaaS 市場(chǎng)指南》研究報(bào)告,還是有很不錯(cuò)的進(jìn)展的。
2. 項(xiàng)目介紹
我們這個(gè)WE-CAN項(xiàng)目是云信自研的傳輸基座,承擔(dān)的是網(wǎng)易云信所有業(yè)務(wù)層需要通信的流量傳輸?shù)囊粋€(gè)大型傳輸網(wǎng)絡(luò)。
目前WE-CAN在全球所有主要地區(qū)都已經(jīng)實(shí)現(xiàn)節(jié)點(diǎn)部署,在國(guó)內(nèi)的話,我們?cè)诿恳粋€(gè)省份的ISP都有節(jié)點(diǎn),比如你在中國(guó)任意一個(gè)省份,不管電信、聯(lián)通還是移動(dòng),都可以就近接到一個(gè)與你這個(gè)ISP匹配的同省的機(jī)房。在國(guó)外的話,所有大洲都有節(jié)點(diǎn),在東南亞的主要國(guó)家,像新興市場(chǎng),一些主要的出海目標(biāo)國(guó)家,每一個(gè)國(guó)家都有可能不止一個(gè)節(jié)點(diǎn)來(lái)做本地覆蓋。
WE-CAN作為云信的通用傳輸基座,它本身是完全獨(dú)立于業(yè)務(wù)的,是完全獨(dú)立的一個(gè)通用傳輸網(wǎng)絡(luò)。本次分享主要是從網(wǎng)絡(luò)分層的角度去剖析WE-CAN的架構(gòu),因?yàn)閃E-CAN是一個(gè)非常復(fù)雜的系統(tǒng),它有很多的核心組件和邊緣輔助組件。所以本次分享不采取分解服務(wù)或者部署架構(gòu)的角度,而是用這樣一個(gè)比較抽象的網(wǎng)絡(luò)分層的角度去講解,會(huì)比較易于理解和抓住WE-CAN的關(guān)鍵設(shè)計(jì)決策。
3. WE-CAN網(wǎng)絡(luò)分層
這是WE-CAN的一個(gè)分層架構(gòu),大家可以看一下。
我把WE-CAN分成了這么幾層,核心的當(dāng)然是網(wǎng)絡(luò)層、傳輸層和應(yīng)用層了,某種程度上對(duì)應(yīng)傳統(tǒng)的互聯(lián)網(wǎng)模型的三層。當(dāng)然不是嚴(yán)格對(duì)照。
在分層架構(gòu)最底下是基建層,基建層都是我們網(wǎng)易自研或者說(shuō)云信自研的一些基礎(chǔ)平臺(tái)。包括數(shù)據(jù)平臺(tái)、管控平臺(tái)即我們WE-CAN的內(nèi)部Dashboard、我們自研的一個(gè)全球的分布式的緩存系統(tǒng)即所謂存儲(chǔ)平臺(tái),還有配置平臺(tái)。
基建層往上的控制層其實(shí)和網(wǎng)絡(luò)層結(jié)合非常緊密,可以看到接入、轉(zhuǎn)發(fā)、調(diào)度和路由這四塊是WE-CAN最核心的模塊。再上面的傳輸層主要是一個(gè)協(xié)議層,網(wǎng)絡(luò)層和控制層是做路由的,那么傳輸層就是做QoS和各種各樣的策略層。
最上面的應(yīng)用層是對(duì)傳輸層和網(wǎng)絡(luò)層能力的封裝,做了很多比較抽象的基礎(chǔ)服務(wù)。業(yè)務(wù)層是實(shí)際各個(gè)業(yè)務(wù)場(chǎng)景中對(duì)應(yīng)用層能力的使用。
4. 為什么要強(qiáng)調(diào)網(wǎng)絡(luò)分層
那么為什么要強(qiáng)調(diào)網(wǎng)絡(luò)分層呢?首先WE-CAN本身就是一個(gè)overlay,它本身就是基于公共互聯(lián)網(wǎng)上的一層。然后網(wǎng)絡(luò)分層做得好,我認(rèn)為可以做到各個(gè)系統(tǒng)模塊各司其職,系統(tǒng)邊界比較清晰,并且其實(shí)各層有各自不同的傳輸優(yōu)化策略,這個(gè)后面會(huì)展開(kāi)講。比如網(wǎng)絡(luò)層和傳輸層的優(yōu)化策略是不一樣的,可以做的事情不一樣,甚至同樣的優(yōu)化策略如ARQ,在網(wǎng)絡(luò)層和傳輸層的實(shí)現(xiàn)方式也是不一樣的,網(wǎng)絡(luò)層策略都是轉(zhuǎn)發(fā)節(jié)點(diǎn)間逐跳的,傳輸層是接入節(jié)點(diǎn)到接入節(jié)點(diǎn)之間的。
最后網(wǎng)絡(luò)分層和解耦做得好,可以支持更多的傳輸場(chǎng)景。WE-CAN不只是要支持實(shí)時(shí)音視頻通信、低延遲媒體流傳輸,我們是要做一個(gè)通用的傳輸加速網(wǎng)絡(luò),所以分層做得好可以把各層的能力抽象剝離,就可以支持更多的傳輸場(chǎng)景。
5. 目錄
這個(gè)是我要講的順序,跟剛才的分層順序有一點(diǎn)調(diào)整,把網(wǎng)絡(luò)層放在前面,控制層放在后面,這樣更有利于理解。
6. 網(wǎng)絡(luò)層
網(wǎng)絡(luò)層是WE-CAN核心網(wǎng)的入口,WE-CAN的節(jié)點(diǎn)數(shù)量比較多,報(bào)文從邊緣節(jié)點(diǎn)出來(lái)后就直接進(jìn)入網(wǎng)絡(luò)層了。
網(wǎng)絡(luò)層的功能主要就是報(bào)文的尋址路由,它會(huì)將一個(gè)報(bào)文從它的上行接入節(jié)點(diǎn)投遞到目的地下行接入節(jié)點(diǎn)去,這是WE-CAN最核心最基礎(chǔ)的能力,所以它是架構(gòu)最復(fù)雜、流程最長(zhǎng)的一層。
網(wǎng)絡(luò)層是基于公共互聯(lián)網(wǎng)提供優(yōu)質(zhì)傳輸能力的。為什么要強(qiáng)調(diào)公共互聯(lián)網(wǎng)這幾個(gè)字呢?因?yàn)檫@個(gè)是我們WE-CAN“軟件定義”的特點(diǎn),意思是我們走的是公網(wǎng)流量,通過(guò)軟件路由來(lái)保障傳輸質(zhì)量,在絕大部分場(chǎng)景下我們都用不到專線,在傳輸層面我們不需要建設(shè)大型的中心機(jī)房和專門(mén)的骨干線路,這些大型基建的建設(shè)周期很長(zhǎng)并且成本是很高的。
6.1接入
網(wǎng)絡(luò)層可以分為兩部分,一個(gè)是接入,一個(gè)是轉(zhuǎn)發(fā)。
首先在接入部分我們對(duì)比一下兩個(gè)常見(jiàn)的接入方案,接入節(jié)點(diǎn)又叫登錄節(jié)點(diǎn)或者邊緣節(jié)點(diǎn)。WE-CAN做的一個(gè)主要的事情是節(jié)點(diǎn)的邊緣化。在云信采用WE-CAN之前,我們的節(jié)點(diǎn)是比較典型的那種大型中心機(jī)房,比如在國(guó)內(nèi)我們主要有北京、杭州、廣州以及中西部貴州節(jié)點(diǎn),在海外全球有少數(shù)的那么幾個(gè)數(shù)據(jù)中心。這些數(shù)據(jù)中心規(guī)模比較大,并且建設(shè)周期比較長(zhǎng),投入比較大。在這種少數(shù)中心機(jī)房的情況下調(diào)度策略很簡(jiǎn)單,基本上就是看看哪個(gè)節(jié)點(diǎn)離用戶相對(duì)較近,這樣做的問(wèn)題是很多情況下用戶還是會(huì)遠(yuǎn)程接入,比較依賴節(jié)點(diǎn)本身的網(wǎng)絡(luò)質(zhì)量。但最大的問(wèn)題是因?yàn)橐采w廣地域的各種用戶,所以中心節(jié)點(diǎn)一般來(lái)說(shuō)都是采用的BGP資源,BGP資源的帶寬成本是非常貴的,跟單線的邊緣節(jié)點(diǎn)比是數(shù)量級(jí)上的差距。BGP資源可能要大幾十,一兩百塊錢(qián)一兆,單線資源的話便宜的可能就幾塊錢(qián)一兆,這個(gè)差距是非常大的。
所以WE-CAN的思路是節(jié)點(diǎn)邊緣化,首先我們都是比較小型的節(jié)點(diǎn),就像我剛剛說(shuō)的,我們的節(jié)點(diǎn)覆蓋是非常全面的,比如在全國(guó)每一個(gè)省份都有覆蓋,海外我們目前最重點(diǎn)的區(qū)域東南亞每一個(gè)國(guó)家都有覆蓋。要做到這一點(diǎn),我們每個(gè)節(jié)點(diǎn)的規(guī)模是不大的,這樣的好處是靈活易于調(diào)整,實(shí)際上節(jié)點(diǎn)的規(guī)模小不是壞事,其實(shí)是好事。因?yàn)槲覀儍?nèi)部有一個(gè)賽馬機(jī)制,我們對(duì)節(jié)點(diǎn)有一套運(yùn)營(yíng)機(jī)制,如果某個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)質(zhì)量不好,當(dāng)我們跟供應(yīng)商溝通無(wú)效,查問(wèn)題也查不出來(lái),那我們可以直接把它換掉。我們會(huì)有一批儲(chǔ)備的資源,實(shí)時(shí)觀察,質(zhì)量不好了就淘汰,質(zhì)量好的就會(huì)提高優(yōu)先級(jí)或者擴(kuò)容。
然后在擁有大量的邊緣節(jié)點(diǎn)之后,就可以做精細(xì)的調(diào)度優(yōu)化,可以給用戶分配更適合的節(jié)點(diǎn),這樣的話就能夠做到真正的就近接入,提高Last-mile質(zhì)量,降低上下行延遲。
最后正因?yàn)槲覀兺ㄟ^(guò)WE-CAN大網(wǎng)組織起了各地的邊緣節(jié)點(diǎn),我們才可以挑選成本最低的單線靜態(tài)帶寬資源,大大降低上下行帶寬成本。
6.2 轉(zhuǎn)發(fā)
當(dāng)流量通過(guò)接入節(jié)點(diǎn)進(jìn)入WE-CAN網(wǎng)絡(luò)之后,就來(lái)到了我們的轉(zhuǎn)發(fā)網(wǎng)絡(luò)了。
轉(zhuǎn)發(fā)網(wǎng)絡(luò)是WE-CAN真正的核心。我們的轉(zhuǎn)發(fā)網(wǎng)絡(luò)是由中轉(zhuǎn)節(jié)點(diǎn)組成full-mesh網(wǎng)絡(luò),是一個(gè)軟件定義的實(shí)時(shí)智能路由網(wǎng)絡(luò)。我們的中轉(zhuǎn)節(jié)點(diǎn)會(huì)探測(cè)互相之間的網(wǎng)絡(luò)質(zhì)量,然后由控制節(jié)點(diǎn)通過(guò)數(shù)據(jù)平臺(tái)收集到實(shí)時(shí)的探測(cè)網(wǎng)絡(luò)質(zhì)量,計(jì)算出各個(gè)節(jié)點(diǎn)之間的路由表,并把路由表下發(fā)到各個(gè)中轉(zhuǎn)節(jié)點(diǎn)。最終由中轉(zhuǎn)節(jié)點(diǎn)根據(jù)路由表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。
轉(zhuǎn)發(fā)網(wǎng)絡(luò)的原理、模型非常簡(jiǎn)單,各家的實(shí)現(xiàn)都大同小異。但是WE-CAN做了很多獨(dú)到的優(yōu)化,比如我們?cè)诼酚傻臅r(shí)候計(jì)算的是Top K的最短路徑,不只是最佳路由。在轉(zhuǎn)發(fā)節(jié)點(diǎn)會(huì)對(duì)這Top K的每一條路徑實(shí)時(shí)維護(hù)一個(gè)動(dòng)態(tài)的權(quán)重分值,也就是說(shuō)報(bào)文在決定下一跳往哪走時(shí)不一定會(huì)去路由算法決定的最短的那條。完全依賴最短路徑的話問(wèn)題是當(dāng)網(wǎng)絡(luò)有抖動(dòng)的時(shí)候,路由切換傳輸恢復(fù)時(shí)間較長(zhǎng)。正常情況下如果網(wǎng)絡(luò)有抖動(dòng)或者節(jié)點(diǎn)之間的網(wǎng)絡(luò)有擁塞,這個(gè)擁塞情況會(huì)由節(jié)點(diǎn)之間的質(zhì)量探測(cè)機(jī)制感知到,質(zhì)量探測(cè)結(jié)果通過(guò)數(shù)據(jù)鏈路反饋到控制節(jié)點(diǎn),控制節(jié)點(diǎn)更新完路由表下發(fā)到中轉(zhuǎn)節(jié)點(diǎn),才會(huì)把這個(gè)有問(wèn)題的“前最短路徑”切走。但是這個(gè)流程比較長(zhǎng),導(dǎo)致所有經(jīng)過(guò)擁塞節(jié)點(diǎn)中轉(zhuǎn)的路由都會(huì)出現(xiàn)抖動(dòng)。
為了解決這種問(wèn)題,我們的邊緣節(jié)點(diǎn)現(xiàn)在對(duì)路由表本身是有一定的調(diào)整能力的,它可以根據(jù)當(dāng)前的網(wǎng)絡(luò)反饋情況去對(duì)這個(gè)Top K路徑去做動(dòng)態(tài)調(diào)整。這種動(dòng)態(tài)調(diào)整使得對(duì)于丟失的報(bào)文,在網(wǎng)絡(luò)擁塞情況下,在重傳的時(shí)候可以選一個(gè)不一樣的路徑,也許是次優(yōu)路徑,但如果不做這種避免,那重傳報(bào)文很有可能還是丟了。并且這些選擇次優(yōu)路徑的決策又會(huì)動(dòng)態(tài)影響接下來(lái)新的報(bào)文對(duì)路徑的選擇。
WE-CAN的轉(zhuǎn)發(fā)網(wǎng)絡(luò)另一個(gè)投入較大、做了深度優(yōu)化的地方是在多目的地的多播場(chǎng)景下,路由的時(shí)候會(huì)自動(dòng)組成樹(shù)狀級(jí)聯(lián),對(duì)中轉(zhuǎn)路徑盡可能復(fù)用。這在大頻道或者直播的場(chǎng)景下有很好的應(yīng)用,當(dāng)頻道比較大,用戶分布比較廣,接入服務(wù)器跨度大數(shù)量多的時(shí)候,上行的媒體流往外擴(kuò)散的度會(huì)比較大。WE-CAN通過(guò)樹(shù)狀級(jí)聯(lián)一是可以最大化路徑復(fù)用以降低帶寬成本,二是可以優(yōu)化傳輸質(zhì)量,降低每個(gè)節(jié)點(diǎn)的流量擴(kuò)散使得節(jié)點(diǎn)間可以有余地做冗余策略,當(dāng)然最根本的一點(diǎn)是樹(shù)狀級(jí)聯(lián)消除了上行節(jié)點(diǎn)的出度限制,使得超大頻道成為可能。
另外,如果組成一個(gè)級(jí)聯(lián)的轉(zhuǎn)發(fā)樹(shù),那么越上游靠近樹(shù)根的節(jié)點(diǎn)發(fā)生故障,影響越大。而WE-CAN的樹(shù)狀級(jí)聯(lián)結(jié)構(gòu)是各個(gè)中轉(zhuǎn)節(jié)點(diǎn)自動(dòng)生成的,對(duì)于任何一個(gè)節(jié)點(diǎn)的故障的規(guī)避和恢復(fù)是非常及時(shí)的。
7. 控制層
講了網(wǎng)絡(luò)層,下面是控制層。控制層其實(shí)就是控制網(wǎng)絡(luò)層工作的,在傳統(tǒng)的CDN或者SDN里就是所謂的控制面,其他都是數(shù)據(jù)面。
控制層分為兩部分,一個(gè)是路由,一個(gè)是調(diào)度。在我跟別人解釋W(xué)E-CAN的時(shí)候常常把它比作一個(gè)數(shù)據(jù)的高速公路,上面有很多節(jié)點(diǎn),路由做的事情是我們組織一個(gè)高速公路,把流量從高速路網(wǎng)的任何一個(gè)節(jié)點(diǎn)快速地投遞到任意另外的一個(gè)節(jié)點(diǎn)。這里所謂的節(jié)點(diǎn)是WE-CAN內(nèi)部的節(jié)點(diǎn)。所以路由解決的是網(wǎng)內(nèi)傳輸質(zhì)量,提高網(wǎng)內(nèi)傳輸?shù)牡竭_(dá)率,降低延遲。
調(diào)度系統(tǒng)的角度不同,它解決的是上下行Last-mile的質(zhì)量問(wèn)題,類比高速公路路網(wǎng),調(diào)度的任務(wù)是為你找到一個(gè)距離最近,能夠最快上高速的入口或說(shuō)高速公路收費(fèi)站。因?yàn)長(zhǎng)ast-mile質(zhì)量相對(duì)來(lái)說(shuō)是比較難解決的一個(gè)問(wèn)題,我們對(duì)Last-mile的控制力度和可以做的事情相對(duì)網(wǎng)內(nèi)傳輸要少一些,所以調(diào)度質(zhì)量也是我們極為關(guān)注的一個(gè)方面。
7.1 調(diào)度
WE-CAN的邊緣節(jié)點(diǎn)調(diào)度技術(shù)我把它分為兩大類,靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度,這個(gè)名字是我自己取的,不是標(biāo)準(zhǔn)術(shù)語(yǔ),那么什么是動(dòng)靜態(tài)調(diào)度,什么是動(dòng)態(tài)調(diào)度呢?它的區(qū)別就是靜態(tài)調(diào)度是傳統(tǒng)的查表調(diào)度,有一個(gè)靜態(tài)的IP庫(kù),當(dāng)然這個(gè)IP庫(kù)是經(jīng)常更新的,每天更新,但總體來(lái)說(shuō)還是比較固定的。基本原理是通過(guò)查找這個(gè)靜態(tài)IP庫(kù),對(duì)于每一個(gè)調(diào)度請(qǐng)求,我們能獲得用戶的相對(duì)準(zhǔn)確的地理位置,并分配一個(gè)同ISP的情況下地理距離最近的一個(gè)節(jié)點(diǎn)。當(dāng)然我們并不總是單純地做直線距離就近分配,在實(shí)際情況下,我們會(huì)優(yōu)先考慮用戶的區(qū)域歸屬,尤其在一些省份的邊界或者國(guó)家交界處。比如國(guó)內(nèi)我們希望用戶到同一個(gè)省份的節(jié)點(diǎn)去,不一定是最近。在海外不一定有這么細(xì)粒度但希望用戶起碼可以去同國(guó)的節(jié)點(diǎn),也不一定是最近的。但總體來(lái)說(shuō)所謂靜態(tài)調(diào)度原理是通過(guò)查找靜態(tài)的IP庫(kù),就近分配。
動(dòng)態(tài)調(diào)度是跟靜態(tài)調(diào)度相對(duì)的,它查找的是動(dòng)態(tài)IP庫(kù)。動(dòng)態(tài)IP庫(kù)的核心在于它不是預(yù)先生成好的,而是依托我們的業(yè)務(wù)數(shù)據(jù),對(duì)實(shí)時(shí)和歷史數(shù)據(jù)進(jìn)行分析和匯聚,來(lái)產(chǎn)生一個(gè)我們認(rèn)為對(duì)用戶來(lái)說(shuō)最優(yōu)的選擇。
動(dòng)態(tài)調(diào)度系統(tǒng)會(huì)根據(jù)用戶歷史數(shù)據(jù),匯聚成各個(gè)維度的質(zhì)量指標(biāo),比如說(shuō)登錄的成功率,信令連通情況,音視頻的卡頓率等等。同時(shí)WE-CAN也會(huì)針對(duì)每一個(gè)客戶端產(chǎn)生一個(gè)探測(cè)列表,客戶端會(huì)主動(dòng)地對(duì)這些接入節(jié)點(diǎn)做網(wǎng)絡(luò)探測(cè)并上報(bào)。根據(jù)這些數(shù)據(jù)的匯聚結(jié)果,動(dòng)態(tài)調(diào)度系統(tǒng)會(huì)產(chǎn)生出調(diào)度黑名單和白名單,黑名單就是根據(jù)數(shù)據(jù)分析發(fā)現(xiàn)某些客戶端IP地址到某些機(jī)房質(zhì)量持續(xù)不好,那就避免分配這些機(jī)房給這個(gè)客戶端,即使它是距離最近的。白名單就是根據(jù)歷史數(shù)據(jù),尤其是探測(cè)數(shù)據(jù)判斷客戶端到某些節(jié)點(diǎn)質(zhì)量很好,那WE-CAN就優(yōu)先讓這個(gè)用戶去那些機(jī)房。
動(dòng)態(tài)調(diào)度首先可以大大提高接入質(zhì)量,最終提升端到端質(zhì)量,另外有一個(gè)好處就是小運(yùn)營(yíng)商用戶可以不用再固定去一批預(yù)留的BGP節(jié)點(diǎn)了。因?yàn)槲覀兊倪吘壒?jié)點(diǎn)都是單線靜態(tài)帶寬,所以需要在各地保留少量的BGP節(jié)點(diǎn)去覆蓋小運(yùn)營(yíng)商用戶,而在動(dòng)態(tài)調(diào)度系統(tǒng)中,對(duì)于小運(yùn)營(yíng)商用戶我們會(huì)下發(fā)任務(wù)讓他們?nèi)ズ透浇膯尉€節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)探測(cè)。因?yàn)樾∵\(yùn)營(yíng)商一般來(lái)說(shuō)跟大運(yùn)營(yíng)商都有一些親緣關(guān)系,如果比如探測(cè)結(jié)果表明某些用戶連電信的服務(wù)器質(zhì)量好,那調(diào)度的時(shí)候就會(huì)讓這個(gè)用戶分配到這個(gè)電信的節(jié)點(diǎn)去,這樣不但可以提高小運(yùn)營(yíng)商用戶的接入質(zhì)量,也可以降低BGP帶寬消耗。
因?yàn)橥ㄟ^(guò)數(shù)據(jù)實(shí)時(shí)計(jì)算產(chǎn)生的IP庫(kù)我認(rèn)為它是動(dòng)態(tài)的,所以叫動(dòng)態(tài)調(diào)度。這是調(diào)度的兩個(gè)大的模塊,調(diào)度系統(tǒng)的架構(gòu)我會(huì)在后面再深入講。
7.2 路由
調(diào)度是解決Last-mile接入的問(wèn)題,路由就是解決網(wǎng)內(nèi)傳輸?shù)馁|(zhì)量問(wèn)題了,它體現(xiàn)的是控制層對(duì)于中轉(zhuǎn)節(jié)點(diǎn)的控制。
首先中轉(zhuǎn)節(jié)點(diǎn)負(fù)責(zé)探測(cè)節(jié)點(diǎn)間網(wǎng)絡(luò)質(zhì)量,并上報(bào)到數(shù)據(jù)平臺(tái)。經(jīng)過(guò)數(shù)據(jù)平臺(tái)的原因是一方面可以借助數(shù)據(jù)平臺(tái)的計(jì)算匯聚能力來(lái)輔助路由表生成,另外這些路由原始數(shù)據(jù)存下來(lái)之后可以對(duì)它做各種展示和分析。
然后WE-CAN的路由計(jì)算是中心化的,也就是說(shuō)路由表的計(jì)算完全是由中心控制節(jié)點(diǎn)完成的。為什么不能像比如說(shuō)BGP協(xié)議一樣去中心化地計(jì)算路由表呢?是因?yàn)樵赪E-CAN這個(gè)大型的傳輸網(wǎng)絡(luò)里有一個(gè)很關(guān)鍵的核心問(wèn)題就是流量的管控問(wèn)題或者說(shuō)是流量分配的問(wèn)題。如果去中心化地計(jì)算路由表,網(wǎng)絡(luò)是沒(méi)有辦法對(duì)全局的流量進(jìn)行管控和分配的。
如果缺乏全局流量管控,首先很多成本優(yōu)化就沒(méi)辦法做,并且最嚴(yán)重的一個(gè)問(wèn)題是在節(jié)點(diǎn)故障路由表切換的時(shí)候,尤其是一些流量比較高的重要中轉(zhuǎn)節(jié)點(diǎn)網(wǎng)絡(luò)出現(xiàn)抖動(dòng)的時(shí)候,在重新計(jì)算路由表的時(shí)候網(wǎng)絡(luò)自然要繞開(kāi)這個(gè)中轉(zhuǎn)節(jié)點(diǎn),把它上面的現(xiàn)有流量切到別的節(jié)點(diǎn)上去。在這個(gè)情況下很多流量網(wǎng)網(wǎng)會(huì)跑去另一個(gè)“次優(yōu)節(jié)點(diǎn)”,如果網(wǎng)絡(luò)缺乏總體流量管控,這個(gè)次優(yōu)節(jié)點(diǎn)很快就會(huì)被瞬時(shí)流量突增打爆,就會(huì)引發(fā)雪崩效應(yīng)進(jìn)而引起全網(wǎng)大規(guī)模故障。而且不只是故障處理方面,在日常運(yùn)行的情況下,我們也希望能夠控制各個(gè)節(jié)點(diǎn)的流量在相對(duì)比較平穩(wěn),比較均勻的水平線上。
當(dāng)然成本優(yōu)化也是很重要的一個(gè)因素,不同的中轉(zhuǎn)節(jié)點(diǎn)的帶寬成本是不一樣的,我們希望通過(guò)流量分配來(lái)避免流量尖峰,并且對(duì)不同的業(yè)務(wù)場(chǎng)景和服務(wù)分級(jí)來(lái)使用不同的節(jié)點(diǎn)帶寬。
8. 傳輸層
講完了網(wǎng)絡(luò)層和控制層,接下來(lái)是傳輸層。如果說(shuō)網(wǎng)絡(luò)層是WE-CAN架構(gòu)最復(fù)雜、流程最長(zhǎng)的一層,傳輸層就是WE-CAN協(xié)議、代碼最復(fù)雜的一層。
傳輸層是基于網(wǎng)絡(luò)層的路由和轉(zhuǎn)發(fā)的能力,為了服務(wù)更復(fù)雜的應(yīng)用場(chǎng)景,對(duì)網(wǎng)絡(luò)層做了很多協(xié)議、傳輸場(chǎng)景上的適配。其中最主要的是我們基于UDP協(xié)議自研了一套可靠傳輸協(xié)議,包括重傳、排序等等。
相對(duì)于網(wǎng)絡(luò)層原始UDP協(xié)議,傳輸層還有很多其他功能,比如說(shuō)它對(duì)UDP MTU的限制進(jìn)行了擴(kuò)充,對(duì)大報(bào)文進(jìn)行切片,對(duì)小報(bào)文聚合發(fā)送。對(duì)小報(bào)文聚合發(fā)送,一個(gè)是提高效率,降低報(bào)文overhead,另一個(gè)方面是我們?cè)谧鯢EC的時(shí)候希望能把報(bào)文盡量對(duì)齊,盡量靠齊到接近MTU的大小,這樣可以降低FEC冗余報(bào)文的開(kāi)銷。
另外傳輸層還負(fù)責(zé)流量控制、熔斷限流等,傳輸層還有一個(gè)重要的作用就是要提供各種提供分級(jí)服務(wù)策略,提供各種冗余傳輸能力。傳輸層的協(xié)議是非常復(fù)雜的,它有各種力度的冗余傳輸和QoS的能力和策略。
8.1 協(xié)議
這里大概示意一下傳輸層協(xié)議的各個(gè)字段,圖上列舉的是最主要的一些字段,我們的傳輸層協(xié)議是一個(gè)很復(fù)雜的二進(jìn)制協(xié)議,和互聯(lián)網(wǎng)分層一樣,WE-CAN傳輸層有一個(gè)傳輸層的報(bào)頭,網(wǎng)絡(luò)層有網(wǎng)絡(luò)層的報(bào)頭,網(wǎng)絡(luò)層的報(bào)頭相對(duì)比較簡(jiǎn)單,所以就沒(méi)有展開(kāi)講。
傳輸層協(xié)議字段主要有三類,標(biāo)識(shí)字段、尋址字段、策略字段。首先我們每一個(gè)報(bào)文會(huì)有一個(gè)唯一的標(biāo)識(shí),一方面是為了用來(lái)做問(wèn)題調(diào)查,報(bào)文的鏈路跟蹤。另一方面標(biāo)識(shí)字段本身有一些功能,比如序列號(hào)是用來(lái)做排序的,分段號(hào)是用來(lái)做切片的,其他比如做報(bào)文聚合的時(shí)候,還有聚合號(hào)等。
尋址嚴(yán)格意義上講不是傳輸層的事情,主要是在網(wǎng)絡(luò)層實(shí)現(xiàn)的。WE-CAN協(xié)議里傳輸層和網(wǎng)絡(luò)層在尋址上面的區(qū)別是:網(wǎng)絡(luò)層負(fù)責(zé)把報(bào)文從網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn)傳輸?shù)搅硗庖粋€(gè)節(jié)點(diǎn),核心是路由。而傳輸層的尋址字段充當(dāng)?shù)墓δ苡悬c(diǎn)像端口,到了目的地節(jié)點(diǎn)之后我用傳輸層所帶的信息把報(bào)文分發(fā)給每個(gè)實(shí)際的客戶端或者說(shuō)實(shí)際的服務(wù)器。因?yàn)閃E-CAN的定位是一個(gè)通用的傳輸服務(wù),它不只是為云信RTC或者IM做傳輸。
策略字段相對(duì)最復(fù)雜,首先我們的報(bào)文會(huì)有優(yōu)先級(jí),不同的優(yōu)先級(jí)會(huì)有不同的FEC策略,不同的重傳策略,不同的冗余策略,它是一個(gè)綜合的字段,很多其他的策略都會(huì)參考優(yōu)先級(jí)字段的賦值。另外每種其他策略都會(huì)有單獨(dú)的開(kāi)關(guān),比如我們會(huì)有多路冗余策略,典型場(chǎng)景是在重要會(huì)議的音頻可以發(fā)兩路,這兩路我們要保證它路徑不重合,這些都是由傳輸層透給網(wǎng)絡(luò)層來(lái)保證的。另外還有重傳次數(shù)、重傳等待時(shí)間等等。
之前提到過(guò)網(wǎng)絡(luò)層和傳輸層對(duì)提高網(wǎng)內(nèi)傳輸質(zhì)量有不同的做法,比如說(shuō)網(wǎng)絡(luò)層和傳輸層的重傳是不同的。對(duì)于網(wǎng)絡(luò)層來(lái)說(shuō),中轉(zhuǎn)節(jié)點(diǎn)到中轉(zhuǎn)節(jié)點(diǎn)之間它是有逐跳的重傳的,而傳輸層有傳輸層的重傳,也就是說(shuō)WE-CAN的兩個(gè)接入節(jié)點(diǎn)之間也有自己的ARQ。然后網(wǎng)絡(luò)層會(huì)有逐跳的FEC,因?yàn)橹鹛鯢EC會(huì)比較靈活,比在兩個(gè)接入節(jié)點(diǎn)之間做效率更高。
9. 應(yīng)用層
下面是講應(yīng)用層,應(yīng)用層是對(duì)傳輸層的協(xié)議能力的一個(gè)封裝,目前最主要的一個(gè)應(yīng)用叫Message Bus。
9.1 Message Bus
Message Bus是一個(gè)通用的消息服務(wù),它是對(duì)傳輸層可靠傳輸協(xié)議的一個(gè)封裝,在消息傳輸之外提供了一套Topic自動(dòng)訂閱、管理的機(jī)制。
Message Bus你可以認(rèn)為它是一個(gè)全球部署的一個(gè)分布式的跨地域的消息隊(duì)列系統(tǒng),類似分布式的Kafka。所以除了傳輸之外,它還有狀態(tài)管理的能力。另外Message Bus的消息投遞支持廣播的形式,也支持Round Robin的形式,由Message Bus負(fù)責(zé)輪詢和鏈接狀態(tài)管理。
Message Bus由WE-CAN核心網(wǎng)絡(luò)來(lái)保證傳輸?shù)目煽啃?#xff0c;目前它最主要的業(yè)務(wù)場(chǎng)景之一就是承載了RTC服務(wù)端的信令。
這個(gè)是Message Bus的架構(gòu)圖,畫(huà)得很簡(jiǎn)單,因?yàn)镸essage Bus最主要的復(fù)雜度是在協(xié)議上面。
它的架構(gòu)中最復(fù)雜的是上面這個(gè)Topic管理的模塊,這是我之前提到的基建層里面的存儲(chǔ)平臺(tái),是我們?nèi)蚍植际降囊粋€(gè)緩存系統(tǒng),會(huì)做跨大洲的狀態(tài)同步和緩存,來(lái)保證Topic狀態(tài)同步的一致性和及時(shí)性。
消息服務(wù)的傳輸保證跟媒體是不一樣的,首先消息需要保證有序到達(dá),另外要保證一定程度上的可靠,在實(shí)在無(wú)法投遞時(shí)也要能明確告知發(fā)送端投遞失敗。
9.2 HTTP Proxy
在Message Bus之上我們封裝了另一個(gè)服務(wù)叫HTTP Proxy。HTTP Proxy的用意是簡(jiǎn)單易用,對(duì)業(yè)務(wù)代碼侵入性小,比如說(shuō)REST API要加速,就可以直接上HTTP Proxy,開(kāi)發(fā)工作量非常小。
架構(gòu)也比較簡(jiǎn)單,從客戶端直接調(diào)用我們這個(gè)Proxy Server,通過(guò)Message Bus,利用WE-CAN的傳輸能力,到目的地的Proxy Server,目的地的Proxy Server可以幫你去做HTTP調(diào)用,最后把結(jié)果通過(guò)Message Bus再回傳過(guò)來(lái),在調(diào)用發(fā)起方HTTP Proxy轉(zhuǎn)換成HTTP Response。
時(shí)序圖里,我們有個(gè)比較特別的地方是在做HTTP代替的時(shí)候,要把目的地的URL放在請(qǐng)求里面,沒(méi)有用標(biāo)準(zhǔn)HTTP代理的形式,因?yàn)镠TTPS如果用標(biāo)準(zhǔn)協(xié)議代理的話,握手信息也需要來(lái)來(lái)回回傳輸,在跨大洲的情況下延遲會(huì)比較高。所以我們用了這種形式,HTTPS的握手跟我們的代理服務(wù)器去做,到了目的地代理服務(wù)器再去和實(shí)際的資源做握手,可以降低延遲。
9.3 統(tǒng)一調(diào)度
另外一個(gè)非常重要的應(yīng)用層的系統(tǒng)叫統(tǒng)一調(diào)度,這個(gè)其實(shí)就是我們整個(gè)調(diào)度系統(tǒng)的一個(gè)外在表現(xiàn),是一個(gè)高度抽象的通用調(diào)度服務(wù)。為什么要強(qiáng)調(diào)“高度抽象”、“通用”呢?是因?yàn)閃E-CAN能支持很多的應(yīng)用場(chǎng)景,有很多的下游的業(yè)務(wù)系統(tǒng)都在用WE-CAN,每一個(gè)場(chǎng)景、每一個(gè)應(yīng)用都要用到我們的調(diào)度服務(wù)。對(duì)于業(yè)務(wù)應(yīng)用來(lái)說(shuō),如果接了WE-CAN,那必然要給最終用戶選擇一個(gè)接入節(jié)點(diǎn)。
統(tǒng)一調(diào)度系統(tǒng)是與實(shí)際業(yè)務(wù)的調(diào)度邏輯解耦的,因?yàn)閷?shí)際業(yè)務(wù)的調(diào)度中不一定只是要給用戶找一個(gè)最好的節(jié)點(diǎn)去接入,往往各個(gè)業(yè)務(wù)有自己的附加要求和各種其他業(yè)務(wù)邏輯。WE-CAN的統(tǒng)一調(diào)度系統(tǒng)就提供了一種純粹的,保證調(diào)度質(zhì)量的服務(wù),在此之上我們通過(guò)管控平臺(tái)提供了多個(gè)維度的定制能力,盡最大可能滿足各個(gè)業(yè)務(wù)方的調(diào)度需求。實(shí)際上在實(shí)現(xiàn)中業(yè)務(wù)方會(huì)在統(tǒng)一調(diào)度系統(tǒng)之上再加一個(gè)業(yè)務(wù)調(diào)度系統(tǒng),對(duì)WE-CAN調(diào)度結(jié)果再做一次封裝,這樣可以在我們挑選出來(lái)的結(jié)果之上再去使用自己的業(yè)務(wù)邏輯和各種各樣的限制。
統(tǒng)一調(diào)度系統(tǒng)在選擇最優(yōu)節(jié)點(diǎn)的同時(shí)會(huì)進(jìn)行負(fù)載均衡,調(diào)度系統(tǒng)另一個(gè)重要的概念是資源匯聚,在RTC中就是頻道匯聚。比如在音視頻通話中如果同一個(gè)房間里有一個(gè)江蘇移動(dòng)和一個(gè)浙江移動(dòng)的用戶,我們可能就不希望江蘇人接到江蘇移動(dòng)機(jī)房去,浙江人接到浙江移動(dòng)機(jī)房去,而是希望他們匯聚到同一個(gè)機(jī)房。這樣一來(lái)可以降低轉(zhuǎn)發(fā)帶寬成本,另一方面落到最終端到端傳輸質(zhì)量上往往是有提高的。
統(tǒng)一調(diào)度的架構(gòu)非常復(fù)雜,圖上只是其中的一部分,它封裝了WE-CAN的各種各樣的能力。首先Message Bus會(huì)去幫它做各個(gè)節(jié)點(diǎn)的負(fù)載的收集,客戶端會(huì)報(bào)它自己的負(fù)載,我們叫它c(diǎn)ustom load,接入節(jié)點(diǎn)又會(huì)觀察收集機(jī)器的一些資源使用情況,比如內(nèi)存、CPU、網(wǎng)絡(luò)等。這些信息會(huì)通過(guò)Message Bus發(fā)到統(tǒng)一調(diào)度系統(tǒng)的控制模塊去。控制模塊對(duì)外提供一個(gè)RESTful接口,它本身是一個(gè)信息收集匯總的模塊,WE-CAN基建層的配置平臺(tái),IP庫(kù)等信息都會(huì)匯總到控制模塊去,對(duì)于每一次調(diào)度請(qǐng)求它都會(huì)去調(diào)用策略模塊,由策略模塊計(jì)算調(diào)度的結(jié)果。
動(dòng)態(tài)調(diào)度系統(tǒng)是通過(guò)數(shù)據(jù)平臺(tái)的數(shù)據(jù)通過(guò)匯聚、計(jì)算,最后把動(dòng)態(tài)IP表更新到策略模塊去。我們會(huì)優(yōu)先考慮使用動(dòng)態(tài)IP表,然后用靜態(tài)IP庫(kù)做兜底,因?yàn)閷?shí)際上不一定有這個(gè)用戶的歷史數(shù)據(jù),所以很多情況下還是要有傳統(tǒng)的基于地理位置的就近接入來(lái)做兜底。
架構(gòu)圖里沒(méi)畫(huà)上去的一個(gè)重要模塊是我之前提到過(guò)的資源匯聚系統(tǒng)。
在應(yīng)用層還有許多其他的服務(wù),比如說(shuō)我們有一個(gè)全球的時(shí)鐘同步系統(tǒng),它是基于WE-CAN的大量節(jié)點(diǎn)和中轉(zhuǎn)傳輸?shù)哪芰?lái)搭建的,這個(gè)系統(tǒng)會(huì)保證所有的服務(wù)器之間的時(shí)鐘是能以非常高的進(jìn)度來(lái)達(dá)到一致,最終可以同步給客戶端,以及一些其他的應(yīng)用服務(wù)系統(tǒng)。
10. 業(yè)務(wù)層
10.1 RTC
下面來(lái)說(shuō)一下我們具體的業(yè)務(wù)應(yīng)用,最主要的肯定是RTC了,我們?cè)菩诺膶?shí)時(shí)音視頻服務(wù)。
對(duì)于RTC來(lái)說(shuō),首先WE-CAN最大的好處是可以提高端到端的傳輸質(zhì)量,因?yàn)橛脩艟徒尤肓?#xff0c;而網(wǎng)內(nèi)傳輸又相對(duì)可控。尤其是WE-CAN可以大大優(yōu)化遠(yuǎn)距離特別是跨國(guó)通話質(zhì)量,在云信的出海業(yè)務(wù)中,海外跨國(guó)通話或者海外回國(guó)等場(chǎng)景下,利用WE-CAN的傳輸服務(wù)就不需要再拉專線或者是用專門(mén)的代理加速來(lái)保證通話質(zhì)量,WE-CAN可以保證從全球的任意一個(gè)地方到另外任一個(gè)地方的通信質(zhì)量。
另外RTC用 WE-CAN可以大幅降低節(jié)點(diǎn)帶寬成本。從BGP機(jī)房或者三線機(jī)房替換為單線機(jī)房,帶寬成本是數(shù)量級(jí)上的一個(gè)降低。
這是簡(jiǎn)化的RTC接入WE-CAN的架構(gòu)圖,大家可以看到有兩個(gè)不同顏色的箭頭表示,下面是媒體服務(wù)器之間直接互相級(jí)聯(lián),通過(guò)WebRTC各種協(xié)議直接進(jìn)行通信。而接入WE-CAN之后WE-CAN的接入節(jié)點(diǎn)跟媒體服務(wù)器之間是同機(jī)部署的,媒體流通過(guò)IPC進(jìn)入接入節(jié)點(diǎn),然后由WE-CAN負(fù)責(zé)投遞到目的地接入節(jié)點(diǎn)去。
10.2 IM
這是IM接入WE-CAN的架構(gòu),云信的IM有很長(zhǎng)的歷史了,并且市場(chǎng)對(duì)我們的認(rèn)可度很高,我們的IM系統(tǒng)也很成熟,WE-CAN給IM的架構(gòu)帶來(lái)了很大的改變。
原來(lái)我們跟大部分IM系統(tǒng)一樣,是相對(duì)比較中心化的架構(gòu),因?yàn)镮M有大量的狀態(tài)需要存儲(chǔ)。而有了WE-CAN之后我們做了一個(gè)很重要的改造,就是長(zhǎng)鏈接服務(wù)器前置部署。長(zhǎng)鏈接服務(wù)器就是登錄服務(wù)器或者叫邊緣服務(wù)器、接入服務(wù)器,客戶端SDK是直接登陸在這個(gè)服務(wù)器上的,消息最終是通過(guò)這個(gè)長(zhǎng)鏈接服務(wù)器來(lái)推給客戶端的。
WE-CAN首先可以改善IM上下行的接入質(zhì)量,這是一個(gè)很明顯的優(yōu)勢(shì),還有一個(gè)重要的好處是廣播消息的下推。也就是說(shuō)我們IM數(shù)據(jù)中心產(chǎn)生的消息不再由數(shù)據(jù)中心的中心節(jié)點(diǎn)去廣播或者說(shuō)擴(kuò)散給各個(gè)客戶端了,我們先擴(kuò)散到相關(guān)的邊緣服務(wù)器,邊緣服務(wù)器再擴(kuò)散到客戶端,相當(dāng)于天然有了一個(gè)兩層的樹(shù)狀級(jí)聯(lián)模式。這種模式有很多的優(yōu)勢(shì),比如說(shuō)我們實(shí)際遇到過(guò)的一個(gè)場(chǎng)景,某個(gè)跨國(guó)的大頻道,國(guó)內(nèi)的消息要發(fā)給海外的用戶的話,如果沒(méi)有WE-CAN,首先肯定是要走專線加速,專線加速本身就帶寬有限而且很昂貴。而且如果消息有一萬(wàn)個(gè)人要接收,你就得重復(fù)跨國(guó)發(fā)一萬(wàn)份。現(xiàn)在有了WE-CAN之后,首先不再需要專線了,WE-CAN會(huì)幫保證跨國(guó)傳輸質(zhì)量,然后這個(gè)消息只用跨國(guó)發(fā)一份,利用WE-CAN發(fā)到海外接入節(jié)點(diǎn)再去做本地?cái)U(kuò)散。這對(duì)于降低中心機(jī)房的帶寬壓力和提升消息的水平擴(kuò)展能力有本質(zhì)的、巨大的改變。
為什么說(shuō)降低中心機(jī)房帶寬壓力能夠提升的水平擴(kuò)展能力的同時(shí)還能夠降低成本?因?yàn)橹行臋C(jī)房的成本一般比較高,比如它一般都是BGP節(jié)點(diǎn),而海外的邊緣節(jié)點(diǎn)的公網(wǎng)帶寬成本是很低的。
10.3 直播點(diǎn)播
下一個(gè)應(yīng)用是直播點(diǎn)播,云信現(xiàn)在可以提供低延遲直播服務(wù),這是一個(gè)現(xiàn)在比較火的能力。在一些對(duì)互動(dòng)要求比較高的場(chǎng)景下,我們會(huì)通過(guò)WE-CAN來(lái)代替?zhèn)鹘y(tǒng)的CDN做音視頻的分發(fā),這樣最大的好處就是延遲低了,并且通過(guò)WE-CAN的各種節(jié)約成本的手段,我們可以接近傳統(tǒng)CDN的價(jià)格。
圖上的全局智能融合調(diào)度不是WE-CAN的調(diào)度,它決定的是比如一個(gè)直播的房間是走WE-CAN還是走傳統(tǒng)CDN 或者是走哪個(gè)CDN的選擇。
10.4 數(shù)據(jù)上報(bào)
還有一個(gè)應(yīng)用是數(shù)據(jù)上報(bào),大家往往會(huì)比較忽略數(shù)據(jù)上報(bào)質(zhì)量,但數(shù)據(jù)上報(bào)其實(shí)是走WE-CAN的一個(gè)很好的應(yīng)用場(chǎng)景,尤其是當(dāng)業(yè)務(wù)出海的時(shí)候。因?yàn)闊o(wú)論你的用戶分布在哪,一些監(jiān)控和打點(diǎn)數(shù)據(jù),包括質(zhì)量數(shù)據(jù)和事件上報(bào)的存儲(chǔ)中心一般都會(huì)集中在一個(gè)地方,在跨國(guó)的情況下這些數(shù)據(jù)的上報(bào)成功率是沒(méi)有辦法保證的。而接了WE-CAN數(shù)據(jù)可以先報(bào)給分布在邊緣接入節(jié)點(diǎn)上的數(shù)據(jù)收集服務(wù),再由WE-CAN傳給數(shù)據(jù)中心集群。這樣一來(lái)可以顯著提高數(shù)據(jù)上報(bào)成功率和及時(shí)性,二來(lái)我們邊緣節(jié)點(diǎn)本身在傳輸層做了報(bào)文的緩存,緩存時(shí)長(zhǎng)可以由具體業(yè)務(wù)調(diào)整,這樣在數(shù)據(jù)中心不可用,或者在維護(hù)的時(shí)候WE-CAN可以將數(shù)據(jù)緩存一段時(shí)間,等數(shù)據(jù)中心恢復(fù)服務(wù)的時(shí)候再通過(guò)流控慢慢發(fā)過(guò)去。
當(dāng)然這里所說(shuō)的數(shù)據(jù)不涉及到個(gè)人信息,單純地只是一些質(zhì)量數(shù)據(jù),比如說(shuō)丟包率、卡頓率和一些事件統(tǒng)計(jì)等。
目前主要的業(yè)務(wù)層的應(yīng)用都講完了,還有一些比如互動(dòng)白板等沒(méi)有在這里展開(kāi)。
可以看到,這些架構(gòu)圖里都缺失了一個(gè)重要的東西——調(diào)度。實(shí)際上所有的應(yīng)用都是要用到我們的統(tǒng)一調(diào)度系統(tǒng)的,沒(méi)畫(huà)上去是因?yàn)槠邢?#xff0c;但是WE-CAN的所有接入節(jié)點(diǎn)的選擇和調(diào)度都是由我們的統(tǒng)一調(diào)度系統(tǒng)來(lái)完成的。
今天的演講和分享就到這里,謝謝大家!
總結(jié)
以上是生活随笔為你收集整理的网易云信自研大规模传输网核心系统架构剖析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【城市沙龙】LiveVideoStack
- 下一篇: 大话ion系列(五)