随着互联网技术的发展,云计算在资源层面竞争已经进入白热化的阶段,网易视频云定位于PAAS层面,从各个技术领域进行技术钻研以提供给用户更高效、更稳定、更便捷的视频直播技术服务;notify系统作为网易视频云对外技术服务的一员,提供面向海量用户的高可用异步回调服务。
目前直播平台大多采用以下架构(图一):客户通过推拉流SDK或软件直接与直播/点播平台进行推拉流/转码交互,这样的架构下客户企业应用中对直播/点播状态及数据的管理增加了更多条件限制,客户企业应用服务器在维护直播/点播数据信息需要考虑各种复杂场景因素:一、推流端非正常退出时客户企业应用服务器无法感知用户真实的流状态;二、客户企业应用无法感知推流用户使用第三方技术进行推拉流等。
[img]http://ww3.sinaimg.cn/mw690/738da497jw1f8xl5m4fy9j20ou0dewfh.jpg[/img]
因此为了让客户能更准确高效的获取实时直播数据,网易视频云提供了一套高效稳定的异步回调服务机制(图二),给用户提供实时高效的数据服务。
[img]http://ww1.sinaimg.cn/mw690/738da497jw1f8xl5mjt9oj20h40c974v.jpg[/img]
与内部服务系统相比,外部异步通知不仅需要考虑海量数据处理的性能同时还需要考虑不同接收方网络环境、数据处理耗时差异的影响。因此如何在负责环境下,给用户提供可靠通知服务是首要解决问题。
系统设计
[img]http://ww1.sinaimg.cn/mw690/738da497jw1f8xl5n2fx7j20ku07fmxo.jpg[/img]
通知系统作为网易视频云通用化海量通知发送平台为设计目标并不关心具体业务场景(图三),接入方只需要根据自己的业务状态将发送目标地址、发送内容进行通知注册,通知系统即可根据相关用户配置信息进行高容错发送,在流程上尽可能提高发送方的业务处理效率;为更好支持业务通知系统还提供了提交、回滚可选项二阶段注册方式。
通知客户端/api:提供给业务接入方进行通知注册、查询、提交、回滚功能的高可用RPC接口。
通知恢复处理器:用于触发指定时间点的通知进行重发处理,对重发任务进行恢复调度。
消息通道:可根据不同业务或用户配置不同的消息通道(图四),一个通道被堵不会影响其他通道,一部分用户处理缓慢不会影响全部客户,从而起到故障隔离的目的。
[img]http://ww3.sinaimg.cn/mw690/738da497jw1f8xl5neaw3j20cw059gls.jpg[/img]
通知协议处理器:真正执行通知发送的组件,不同的接收方往往基于自己的技术使用不同的协议,如:http、https或其他协议,协议处理器按用户配置选择指定的协议进行通知处理,插拔式功能模块更方便支持业务拓展。
决策器:决策处理器根据协议处理器处理结果和用户的通知发送配置信息进行重试调度、消息降级、丢弃、归档处理;第一次通知发送往往是业务最关心的即时信息,因此具有通道中最高优先调度权,正常情况下第一次发送失败后则会立即进行重发尝试,否则根据策略进行消息降级处理,对于发送失败越高的通知调度的优先级越低。
monitor:监控实时系统状态,监控通知积压情况。
通知系统内部采用注册和发送分离的方案,面向接入业务提供高tps数据写入,让业务处理更纯粹,更效率;通知内部基于通道、协议及决策器协同处理设计方案从细节上提高海量数据处理能力,使通知系统具备资源合理分配、故障隔离、优先调度调控的能力,为通知发送发和接收方提供更高的质量保障;同时通知集群采用高可用分布式服务框架,通知业务接入方和通知服务端采用点对点的调用方式,支持对业务透明的动态扩容方案。