隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展查描,云計算在資源層面競爭已經(jīng)進(jìn)入白熱化的階段,網(wǎng)易視頻云定位于PAAS層面组力,從各個技術(shù)領(lǐng)域進(jìn)行技術(shù)鉆研以提供給用戶更高效省容、更穩(wěn)定、更便捷的視頻直播技術(shù)服務(wù)燎字;notify系統(tǒng)作為網(wǎng)易視頻云對外技術(shù)服務(wù)的一員腥椒,提供面向海量用戶的高可用異步回調(diào)服務(wù)。
目前直播平臺大多采用以下架構(gòu)(圖一):客戶通過推拉流SDK或軟件直接與直播/點播平臺進(jìn)行推拉流/轉(zhuǎn)碼交互候衍,這樣的架構(gòu)下客戶企業(yè)應(yīng)用中對直播/點播狀態(tài)及數(shù)據(jù)的管理增加了更多條件限制笼蛛,客戶企業(yè)應(yīng)用服務(wù)器在維護(hù)直播/點播數(shù)據(jù)信息需要考慮各種復(fù)雜場景因素:一、推流端非正常退出時客戶企業(yè)應(yīng)用服務(wù)器無法感知用戶真實的流狀態(tài)蛉鹿;二滨砍、客戶企業(yè)應(yīng)用無法感知推流用戶使用第三方技術(shù)進(jìn)行推拉流等。
因此為了讓客戶能更準(zhǔn)確高效的獲取實時直播數(shù)據(jù)妖异,網(wǎng)易視頻云提供了一套高效穩(wěn)定的異步回調(diào)服務(wù)機制(圖二)惋戏,給用戶提供實時高效的數(shù)據(jù)服務(wù)。
與內(nèi)部服務(wù)系統(tǒng)相比他膳,外部異步通知不僅需要考慮海量數(shù)據(jù)處理的性能同時還需要考慮不同接收方網(wǎng)絡(luò)環(huán)境响逢、數(shù)據(jù)處理耗時差異的影響。因此如何在負(fù)責(zé)環(huán)境下棕孙,給用戶提供可靠通知服務(wù)是首要解決問題舔亭。
系統(tǒng)設(shè)計
通知系統(tǒng)作為網(wǎng)易視頻云通用化海量通知發(fā)送平臺為設(shè)計目標(biāo)并不關(guān)心具體業(yè)務(wù)場景(圖三),接入方只需要根據(jù)自己的業(yè)務(wù)狀態(tài)將發(fā)送目標(biāo)地址散罕、發(fā)送內(nèi)容進(jìn)行通知注冊分歇,通知系統(tǒng)即可根據(jù)相關(guān)用戶配置信息進(jìn)行高容錯發(fā)送傀蓉,在流程上盡可能提高發(fā)送方的業(yè)務(wù)處理效率欧漱;為更好支持業(yè)務(wù)通知系統(tǒng)還提供了提交、回滾可選項二階段注冊方式葬燎。
通知客戶端/api:提供給業(yè)務(wù)接入方進(jìn)行通知注冊误甚、查詢、提交谱净、回滾功能的高可用RPC接口窑邦。
通知恢復(fù)處理器:用于觸發(fā)指定時間點的通知進(jìn)行重發(fā)處理,對重發(fā)任務(wù)進(jìn)行恢復(fù)調(diào)度壕探。
消息通道:可根據(jù)不同業(yè)務(wù)或用戶配置不同的消息通道(圖四)冈钦,一個通道被堵不會影響其他通道,一部分用戶處理緩慢不會影響全部客戶李请,從而起到故障隔離的目的瞧筛。
通知協(xié)議處理器:真正執(zhí)行通知發(fā)送的組件厉熟,不同的接收方往往基于自己的技術(shù)使用不同的協(xié)議,如:http较幌、https或其他協(xié)議揍瑟,協(xié)議處理器按用戶配置選擇指定的協(xié)議進(jìn)行通知處理,插拔式功能模塊更方便支持業(yè)務(wù)拓展乍炉。
決策器:決策處理器根據(jù)協(xié)議處理器處理結(jié)果和用戶的通知發(fā)送配置信息進(jìn)行重試調(diào)度绢片、消息降級、丟棄岛琼、歸檔處理底循;第一次通知發(fā)送往往是業(yè)務(wù)最關(guān)心的即時信息,因此具有通道中最高優(yōu)先調(diào)度權(quán)槐瑞,正常情況下第一次發(fā)送失敗后則會立即進(jìn)行重發(fā)嘗試此叠,否則根據(jù)策略進(jìn)行消息降級處理,對于發(fā)送失敗越高的通知調(diào)度的優(yōu)先級越低随珠。
monitor:監(jiān)控實時系統(tǒng)狀態(tài)灭袁,監(jiān)控通知積壓情況。
通知系統(tǒng)內(nèi)部采用注冊和發(fā)送分離的方案窗看,面向接入業(yè)務(wù)提供高tps數(shù)據(jù)寫入茸歧,讓業(yè)務(wù)處理更純粹,更效率显沈;通知內(nèi)部基于通道软瞎、協(xié)議及決策器協(xié)同處理設(shè)計方案從細(xì)節(jié)上提高海量數(shù)據(jù)處理能力,使通知系統(tǒng)具備資源合理分配拉讯、故障隔離涤浇、優(yōu)先調(diào)度調(diào)控的能力,為通知發(fā)送發(fā)和接收方提供更高的質(zhì)量保障魔慷;同時通知集群采用高可用分布式服務(wù)框架只锭,通知業(yè)務(wù)接入方和通知服務(wù)端采用點對點的調(diào)用方式,支持對業(yè)務(wù)透明的動態(tài)擴(kuò)容方案院尔。