海淀BRDYUN的會(huì)議云直播流量控制
時(shí)間:2020-11-21 16:03:46 信息來(lái)源:百睿德 點(diǎn)擊:86616次
1. 錯(cuò)誤代碼102004表示:會(huì)議已經(jīng)存在無(wú)法創(chuàng)建;
2. 錯(cuò)誤代碼102005表示:MC服務(wù)器不可用;
3. 錯(cuò)誤代碼102011表示:請(qǐng)升級(jí)zoom客戶端;
4. 錯(cuò)誤代碼103002表示:會(huì)議沒(méi)有開(kāi)啟;
5. 錯(cuò)誤代碼103003表示:會(huì)議已經(jīng)關(guān)閉;
6. 錯(cuò)誤代碼103006表示:會(huì)議已滿,達(dá)到人數(shù)上限;
7. 錯(cuò)誤代碼103011表示:會(huì)議被主持人鎖定;
8. 錯(cuò)誤代碼104005表示:會(huì)議在MC上不存在;
9. 錯(cuò)誤代碼104101~104118表示:無(wú)法和MC服務(wù)器建立連接;
10. “會(huì)議異常,錯(cuò)誤代碼16” 表示:需升級(jí)zoom客戶端;
當(dāng)BRDYUN決定放棄流量時(shí),它會(huì)向設(shè)備發(fā)送信號(hào),讓對(duì)方知道我們需要它們卸載流量。BRDYUN會(huì)議直播系統(tǒng)將告訴設(shè)備最大的重試次數(shù),以及可以在什么樣的時(shí)間窗口下執(zhí)行這些重試命令,這樣就解決了重試風(fēng)暴的問(wèn)題。比方說(shuō):
{“maxRetries”:<max-retries>,“retryAfterSeconds”:<seconds>}
使用這種反壓機(jī)制,我們可以比過(guò)去更快地停止重試風(fēng)暴。我們會(huì)根據(jù)請(qǐng)求的優(yōu)先級(jí)自動(dòng)調(diào)整這兩個(gè)撥盤(pán)。高優(yōu)先級(jí)的請(qǐng)求將比低優(yōu)先級(jí)的請(qǐng)求更積極地重試,這也提高了流式傳輸?shù)目捎眯浴?/p>
利用這種反壓機(jī)制,跟過(guò)去相比,我們可以更快地停止重試風(fēng)暴。我們會(huì)根據(jù)請(qǐng)求的優(yōu)先級(jí)自動(dòng)調(diào)整這兩個(gè)刻度盤(pán),高優(yōu)先級(jí)的請(qǐng)求的重試頻率會(huì)比低優(yōu)先級(jí)的請(qǐng)求的更高,這也會(huì)提高流媒體的可用性。
驗(yàn)證哪些請(qǐng)求適合這項(xiàng)任務(wù)
為了驗(yàn)證關(guān)于特定請(qǐng)求是否屬于NON_CRITICAL,DEGRADED或CRITICAL存儲(chǔ)桶的請(qǐng)求分類法假設(shè),我們需要一種方法來(lái)測(cè)試該請(qǐng)求發(fā)出時(shí)用戶的體驗(yàn)。為此,我們利用了內(nèi)部故障注入工具(FIT),并在Zuul中創(chuàng)建了一個(gè)故障注入點(diǎn),該點(diǎn)使我們能夠根據(jù)提供的優(yōu)先級(jí)發(fā)出任何請(qǐng)求。這使我們能夠手動(dòng)模擬負(fù)載脫落的阻斷優(yōu)先級(jí)范圍,特定設(shè)備或成員,讓我們知道哪些要求可能是安全的,而不會(huì)影響用戶體驗(yàn)棚。
為了對(duì)我們的請(qǐng)求分類假設(shè)(NON_CRITICAL、DEGRADED及CRITICAL)是否合適進(jìn)行驗(yàn)證假設(shè),我們需要有一種方法來(lái)測(cè)試當(dāng)該請(qǐng)求被卸載時(shí)用戶的體驗(yàn)。為此,我們利用了內(nèi)部故障注入工具(FIT),并在Zuul中創(chuàng)建了一個(gè)故障注入點(diǎn),這讓我們可以根據(jù)提供的優(yōu)先級(jí)來(lái)舍棄任何的請(qǐng)求。如此,我們就可以通過(guò)屏蔽特定設(shè)備或會(huì)員特定優(yōu)先級(jí)范圍的請(qǐng)求,來(lái)手動(dòng)模擬負(fù)載分流體驗(yàn),讓我們了解哪些請(qǐng)求可以安全地卸載掉,而不會(huì)影響到用戶。
不斷確保這些請(qǐng)求仍適合工作
這里的目標(biāo)之一,是通過(guò)丟棄預(yù)期不會(huì)影響用戶流媒體體驗(yàn)的請(qǐng)求,來(lái)減輕會(huì)員的痛苦。不過(guò),BRDYUN的會(huì)議云直播的變化是很快的,那些被認(rèn)為非關(guān)鍵的請(qǐng)求可能也會(huì)意外地變成關(guān)鍵請(qǐng)求。此外,Netflix還有多種的客戶端設(shè)備、客戶端版本,以及多種跟系統(tǒng)交互的方式。為了確保在任何情況下限制NON_CRITICAL請(qǐng)求時(shí)我們都不會(huì)引起成員的痛苦,我們利用了自己的基礎(chǔ)設(shè)施試驗(yàn)平臺(tái)ChAP。
這個(gè)平臺(tái)可以讓我們開(kāi)展A/B測(cè)試,把我們的少量產(chǎn)品用戶分配到對(duì)照組或?qū)嶒?yàn)組,每次實(shí)驗(yàn)45分鐘的時(shí)間,同時(shí)對(duì)實(shí)驗(yàn)組一定范圍內(nèi)的優(yōu)先級(jí)進(jìn)行限制。這可以讓我們捕捉到各種實(shí)時(shí)的用例,并衡量它們對(duì)回放體驗(yàn)的影響。ChAP按照設(shè)備分析每一位會(huì)員的KPI,以確定對(duì)照組和實(shí)驗(yàn)組之間是否存在偏差。
在我們的第一個(gè)實(shí)驗(yàn)里,我們?cè)贏ndroid和iOS設(shè)備上都檢測(cè)到了低優(yōu)先級(jí)請(qǐng)求的紊亂情況,這會(huì)導(dǎo)致零星的播放錯(cuò)誤。由于我們進(jìn)行的是連續(xù)實(shí)驗(yàn),所以一旦初始的實(shí)驗(yàn)開(kāi)始運(yùn)行,并且bug得到了修復(fù),我們會(huì)安排實(shí)驗(yàn)繼續(xù)按照周期運(yùn)行。這樣一來(lái),我們就能夠盡早檢測(cè)出回歸,并讓用戶保持正常播放。