隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,云計算在資源層面競爭已經(jīng)進入白熱化的階段,網(wǎng)易視頻云定位于PAAS層面,從各個技術(shù)領(lǐng)域進行技術(shù)鉆研以提供給用戶更高效、更穩(wěn)定、更便捷的視頻直播技術(shù)服務(wù);notify系統(tǒng)作為網(wǎng)易視頻云對外技術(shù)服務(wù)的一員,提供面向海量用戶的高可用異步回調(diào)服務(wù)。
目前直播平臺大多采用以下架構(gòu)(圖一):客戶通過推拉流SDK或軟件直接與直播/點播平臺進行推拉流/轉(zhuǎn)碼交互,這樣的架構(gòu)下客戶企業(yè)應(yīng)用中對直播/點播狀態(tài)及數(shù)據(jù)的管理增加了更多條件限制,客戶企業(yè)應(yīng)用服務(wù)器在維護直播/點播數(shù)據(jù)信息需要考慮各種復(fù)雜場景因素:一、推流端非正常退出時客戶企業(yè)應(yīng)用服務(wù)器無法感知用戶真實的流狀態(tài);二、客戶企業(yè)應(yīng)用無法感知推流用戶使用第三方技術(shù)進行推拉流等。

因此為了讓客戶能更準確高效的獲取實時直播數(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ù)處理耗時差異的影響。因此如何在負責環(huán)境下,給用戶提供可靠通知服務(wù)是首要解決問題。
系統(tǒng)設(shè)計

通知系統(tǒng)作為網(wǎng)易視頻云通用化海量通知發(fā)送平臺為設(shè)計目標并不關(guān)心具體業(yè)務(wù)場景(圖三),接入方只需要根據(jù)自己的業(yè)務(wù)狀態(tài)將發(fā)送目標地址、發(fā)送內(nèi)容進行通知注冊,通知系統(tǒng)即可根據(jù)相關(guān)用戶配置信息進行高容錯發(fā)送,在流程上盡可能提高發(fā)送方的業(yè)務(wù)處理效率;為更好支持業(yè)務(wù)通知系統(tǒng)還提供了提交、回滾可選項二階段注冊方式。
通知客戶端/api:提供給業(yè)務(wù)接入方進行通知注冊、查詢、提交、回滾功能的高可用RPC接口。
通知恢復(fù)處理器:用于觸發(fā)指定時間點的通知進行重發(fā)處理,對重發(fā)任務(wù)進行恢復(fù)調(diào)度。
消息通道:可根據(jù)不同業(yè)務(wù)或用戶配置不同的消息通道(圖四),一個通道被堵不會影響其他通道,一部分用戶處理緩慢不會影響全部客戶,從而起到故障隔離的目的。

通知協(xié)議處理器:真正執(zhí)行通知發(fā)送的組件,不同的接收方往往基于自己的技術(shù)使用不同的協(xié)議,如:http、https或其他協(xié)議,協(xié)議處理器按用戶配置選擇指定的協(xié)議進行通知處理,插拔式功能模塊更方便支持業(yè)務(wù)拓展。
決策器:決策處理器根據(jù)協(xié)議處理器處理結(jié)果和用戶的通知發(fā)送配置信息進行重試調(diào)度、消息降級、丟棄、歸檔處理;第一次通知發(fā)送往往是業(yè)務(wù)最關(guān)心的即時信息,因此具有通道中最高優(yōu)先調(diào)度權(quán),正常情況下第一次發(fā)送失敗后則會立即進行重發(fā)嘗試,否則根據(jù)策略進行消息降級處理,對于發(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è)計方案從細節(jié)上提高海量數(shù)據(jù)處理能力,使通知系統(tǒng)具備資源合理分配、故障隔離、優(yōu)先調(diào)度調(diào)控的能力,為通知發(fā)送發(fā)和接收方提供更高的質(zhì)量保障;同時通知集群采用高可用分布式服務(wù)框架,通知業(yè)務(wù)接入方和通知服務(wù)端采用點對點的調(diào)用方式,支持對業(yè)務(wù)透明的動態(tài)擴容方案。