直播課堂下海外加速

又換工作了,去了一家新公司好未來(lái)。我本人是十分不看好當(dāng)前環(huán)境下的在線教育,瘋狂招人、各種擴(kuò)張。不出意外的話明年又是一地雞毛,但是沒(méi)有辦法,別的公司不要我。
說(shuō)說(shuō)新部門(mén)的環(huán)境吧,也還行。整體環(huán)境比不上馬蜂窩但是工位大了一些,但是入職竟然不是發(fā)MAC,總體差評(píng)。加班么?基本不加班。
回到正題,當(dāng)前正趕上巨變的時(shí)候。學(xué)而思這邊準(zhǔn)備融合之前收購(gòu)的一些公司。VIPX,DaDa英語(yǔ)等,而我所在的部門(mén)的前身是大海1對(duì)1。從規(guī)模上而言大海+VIPX<DaDa,現(xiàn)在是大海要吃掉DaDa,資本主義的力量。
DaDa和大海還是有很大的差異的,DaDa專(zhuān)注于外教,大海都在國(guó)內(nèi)。所以從底層上而言,直播課堂要具備一個(gè)海外<=>國(guó)內(nèi)的一個(gè)高速互通網(wǎng)絡(luò),而這個(gè)是大海以及網(wǎng)校所謂的中臺(tái)部門(mén)所不具備的。
關(guān)于海外場(chǎng)景,首先應(yīng)該關(guān)注用戶分布。假如海外用戶都是在美國(guó),其實(shí)也簡(jiǎn)單,搞個(gè)專(zhuān)線把國(guó)內(nèi)和美國(guó)互通,然后美國(guó)再部署幾個(gè)邊緣節(jié)點(diǎn)足以。所以整個(gè)加速網(wǎng)絡(luò)如下


加速網(wǎng)絡(luò).png

如圖所示,用戶就近接入,美國(guó)訪問(wèn)美國(guó)節(jié)點(diǎn),中國(guó)訪問(wèn)中國(guó)節(jié)點(diǎn)。每個(gè)地區(qū)都有自己的中心節(jié)點(diǎn),中心節(jié)點(diǎn)基于跨國(guó)專(zhuān)線同步。美國(guó)的中心節(jié)點(diǎn)會(huì)去中國(guó)的中心節(jié)點(diǎn)獲取數(shù)據(jù)。這樣相當(dāng)于中國(guó)是全球中心節(jié)點(diǎn)。so fine,看起來(lái)問(wèn)題不大。當(dāng)都是美國(guó)用戶的時(shí)候美國(guó)的中心節(jié)點(diǎn)也可以直接提供服務(wù)。
ok,那我們看看DaDa的用戶分布吧


用戶分布.png

簡(jiǎn)直了,我覺(jué)得微信可能也不用考慮這么多的節(jié)點(diǎn)?;谖覀兩厦娴姆桨肝覀冃枰谌?30多個(gè)國(guó)家都去部署這么一套東西。我覺(jué)得問(wèn)題不大,反正互聯(lián)網(wǎng)嘛,就是花錢(qián)花錢(qián)花錢(qián)。能不能掙再說(shuō)。
說(shuō)干就干,所以就馬不停蹄的去找運(yùn)維。運(yùn)維說(shuō)好辦,我們都是阿里云,分分鐘搞定。然而打開(kāi)之后才發(fā)現(xiàn),阿里云國(guó)外只有19個(gè)地區(qū)。瞬間覺(jué)得不美好了。
所以我們把需要加速的東西歸下類(lèi)吧
加速.png

對(duì)于靜態(tài)資源而言,其實(shí)是最容易解決的。找個(gè)CDN廠商放到CDN上就完美了。事實(shí)上這么做足以。但是阿里云卻不足以完成這個(gè)重任,在某些偏遠(yuǎn)地區(qū),比如非洲等基本上不可用。此處使用的Akamai的CDN。(但是Akamai不支持國(guó)內(nèi)到國(guó)內(nèi)的加速場(chǎng)景)
API接口的要求其實(shí)也不高,能通就行。三四秒的響應(yīng)時(shí)間也無(wú)所謂。所以此處也直接使用Akamai的加速服務(wù)。

對(duì)于RTC和信道,基本上特別關(guān)注時(shí)延。有個(gè)200ms+的響應(yīng)就會(huì)有一堆投訴。哎,難搞哦。Akamai表示對(duì)于這種場(chǎng)景他們只能做最基礎(chǔ)的路由優(yōu)化,加速效果很不明顯。
回過(guò)頭來(lái)看看上面的方案,先基于現(xiàn)狀吧,不管采用什么方式先在全球能建節(jié)點(diǎn)的地方都建吧。運(yùn)維也很給力,噼里啪啦在全球建了40多個(gè)節(jié)點(diǎn),并和阿里云打通了。按照上面的方案我們需要在每個(gè)地區(qū)還需要一個(gè)中心節(jié)點(diǎn),但是也沒(méi)啥用。我們基本上老師在海外,學(xué)生在國(guó)內(nèi)。這么多節(jié)點(diǎn)肯定還是覆蓋不全的。但是肯定有能連上的節(jié)點(diǎn)吧。
所以我們需要一個(gè)測(cè)網(wǎng)的環(huán)節(jié)。這個(gè)環(huán)節(jié)主要是用來(lái)看看能不能連上我們的服務(wù)器。

  1. 獲取到所有的邊緣節(jié)點(diǎn)列表
  2. 并發(fā)請(qǐng)求,看看能不能通,延時(shí)多少
  3. 排序選擇最優(yōu)節(jié)點(diǎn)
  4. 緩存結(jié)果到本地,萬(wàn)一有的用著用著就沒(méi)法用了呢

在這樣的設(shè)計(jì)下我們進(jìn)行了簡(jiǎn)單的聯(lián)通性測(cè)試,發(fā)現(xiàn)還可以。
但是還會(huì)有些問(wèn)題,某個(gè)節(jié)點(diǎn)連的設(shè)備太多了,使用這個(gè)節(jié)點(diǎn)的設(shè)備開(kāi)始明顯卡頓,這個(gè)時(shí)候需要一個(gè)動(dòng)態(tài)切換節(jié)點(diǎn)的方案。也比較簡(jiǎn)單,服務(wù)端通過(guò)信道push到客戶端,客戶端重新完成一次測(cè)網(wǎng)即可。

image.png

本文沒(méi)有對(duì)一些細(xì)節(jié)展開(kāi)。比如如何實(shí)現(xiàn)負(fù)載均衡,課堂的錄制回放以及視頻流處理相關(guān)細(xì)節(jié)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容