隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展城豁,云計(jì)算在資源層面競(jìng)爭(zhēng)已經(jīng)進(jìn)入白熱化的階段赞警,網(wǎng)易視頻云定位于PAAS層面弄跌,從各個(gè)技術(shù)領(lǐng)域進(jìn)行技術(shù)鉆研以提供給用戶(hù)更高效甲喝、更穩(wěn)定、更便捷的視頻直播技術(shù)服務(wù)铛只;notify系統(tǒng)作為網(wǎng)易視頻云對(duì)外技術(shù)服務(wù)的一員埠胖,提供面向海量用戶(hù)的高可用異步回調(diào)服務(wù)糠溜。
目前直播平臺(tái)大多采用以下架構(gòu)(圖一):客戶(hù)通過(guò)推拉流SDK或軟件直接與直播/點(diǎn)播平臺(tái)進(jìn)行推拉流/轉(zhuǎn)碼交互,這樣的架構(gòu)下客戶(hù)企業(yè)應(yīng)用中對(duì)直播/點(diǎn)播狀態(tài)及數(shù)據(jù)的管理增加了更多條件限制直撤,客戶(hù)企業(yè)應(yīng)用服務(wù)器在維護(hù)直播/點(diǎn)播數(shù)據(jù)信息需要考慮各種復(fù)雜場(chǎng)景因素:一非竿、推流端非正常退出時(shí)客戶(hù)企業(yè)應(yīng)用服務(wù)器無(wú)法感知用戶(hù)真實(shí)的流狀態(tài);二谋竖、客戶(hù)企業(yè)應(yīng)用無(wú)法感知推流用戶(hù)使用第三方技術(shù)進(jìn)行推拉流等红柱。
[img]http://ww3.sinaimg.cn/mw690/738da497jw1f8xl5m4fy9j20ou0dewfh.jpg[/img]
因此為了讓客戶(hù)能更準(zhǔn)確高效的獲取實(shí)時(shí)直播數(shù)據(jù),網(wǎng)易視頻云提供了一套高效穩(wěn)定的異步回調(diào)服務(wù)機(jī)制(圖二)圈盔,給用戶(hù)提供實(shí)時(shí)高效的數(shù)據(jù)服務(wù)豹芯。
[img]http://ww1.sinaimg.cn/mw690/738da497jw1f8xl5mjt9oj20h40c974v.jpg[/img]
與內(nèi)部服務(wù)系統(tǒng)相比,外部異步通知不僅需要考慮海量數(shù)據(jù)處理的性能同時(shí)還需要考慮不同接收方網(wǎng)絡(luò)環(huán)境驱敲、數(shù)據(jù)處理耗時(shí)差異的影響铁蹈。因此如何在負(fù)責(zé)環(huán)境下,給用戶(hù)提供可靠通知服務(wù)是首要解決問(wèn)題众眨。
系統(tǒng)設(shè)計(jì)
[img]http://ww1.sinaimg.cn/mw690/738da497jw1f8xl5n2fx7j20ku07fmxo.jpg[/img]
通知系統(tǒng)作為網(wǎng)易視頻云通用化海量通知發(fā)送平臺(tái)為設(shè)計(jì)目標(biāo)并不關(guān)心具體業(yè)務(wù)場(chǎng)景(圖三)握牧,接入方只需要根據(jù)自己的業(yè)務(wù)狀態(tài)將發(fā)送目標(biāo)地址、發(fā)送內(nèi)容進(jìn)行通知注冊(cè)娩梨,通知系統(tǒng)即可根據(jù)相關(guān)用戶(hù)配置信息進(jìn)行高容錯(cuò)發(fā)送沿腰,在流程上盡可能提高發(fā)送方的業(yè)務(wù)處理效率;為更好支持業(yè)務(wù)通知系統(tǒng)還提供了提交狈定、回滾可選項(xiàng)二階段注冊(cè)方式颂龙。
通知客戶(hù)端/api:提供給業(yè)務(wù)接入方進(jìn)行通知注冊(cè)、查詢(xún)纽什、提交措嵌、回滾功能的高可用RPC接口。
通知恢復(fù)處理器:用于觸發(fā)指定時(shí)間點(diǎn)的通知進(jìn)行重發(fā)處理芦缰,對(duì)重發(fā)任務(wù)進(jìn)行恢復(fù)調(diào)度企巢。
消息通道:可根據(jù)不同業(yè)務(wù)或用戶(hù)配置不同的消息通道(圖四),一個(gè)通道被堵不會(huì)影響其他通道让蕾,一部分用戶(hù)處理緩慢不會(huì)影響全部客戶(hù)浪规,從而起到故障隔離的目的。
[img]http://ww3.sinaimg.cn/mw690/738da497jw1f8xl5neaw3j20cw059gls.jpg[/img]
通知協(xié)議處理器:真正執(zhí)行通知發(fā)送的組件探孝,不同的接收方往往基于自己的技術(shù)使用不同的協(xié)議笋婿,如:http、https或其他協(xié)議顿颅,協(xié)議處理器按用戶(hù)配置選擇指定的協(xié)議進(jìn)行通知處理萌抵,插拔式功能模塊更方便支持業(yè)務(wù)拓展。
決策器:決策處理器根據(jù)協(xié)議處理器處理結(jié)果和用戶(hù)的通知發(fā)送配置信息進(jìn)行重試調(diào)度元镀、消息降級(jí)绍填、丟棄、歸檔處理栖疑;第一次通知發(fā)送往往是業(yè)務(wù)最關(guān)心的即時(shí)信息讨永,因此具有通道中最高優(yōu)先調(diào)度權(quán),正常情況下第一次發(fā)送失敗后則會(huì)立即進(jìn)行重發(fā)嘗試遇革,否則根據(jù)策略進(jìn)行消息降級(jí)處理卿闹,對(duì)于發(fā)送失敗越高的通知調(diào)度的優(yōu)先級(jí)越低。
monitor:監(jiān)控實(shí)時(shí)系統(tǒng)狀態(tài)萝快,監(jiān)控通知積壓情況锻霎。
通知系統(tǒng)內(nèi)部采用注冊(cè)和發(fā)送分離的方案,面向接入業(yè)務(wù)提供高tps數(shù)據(jù)寫(xiě)入揪漩,讓業(yè)務(wù)處理更純粹旋恼,更效率;通知內(nèi)部基于通道奄容、協(xié)議及決策器協(xié)同處理設(shè)計(jì)方案從細(xì)節(jié)上提高海量數(shù)據(jù)處理能力冰更,使通知系統(tǒng)具備資源合理分配、故障隔離昂勒、優(yōu)先調(diào)度調(diào)控的能力蜀细,為通知發(fā)送發(fā)和接收方提供更高的質(zhì)量保障;同時(shí)通知集群采用高可用分布式服務(wù)框架戈盈,通知業(yè)務(wù)接入方和通知服務(wù)端采用點(diǎn)對(duì)點(diǎn)的調(diào)用方式奠衔,支持對(duì)業(yè)務(wù)透明的動(dòng)態(tài)擴(kuò)容方案。