文档章节

网易视频云专注于技术服务——异步通知系统

 依湘2015
发布于 2016/10/19 15:12
字数 1154
阅读 5
收藏 0

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

© 著作权归作者所有

粉丝 0
博文 30
码字总数 47198
作品 0
吕梁
私信 提问
网易云x云片 云原生趋势下,架构的演进之路

近年来云原生相关的应用增长超过了200% ,CNCF所评估的项目数甚至达到了372%的增长。越来越多的公司将云原生作为技术选型。云原生(Cloud Native)是一套技术体系和一套方法论,更是一种文化...

云片
06/06
71
0
网易汪源:网易产品体验好,离不开AI驱动

4月26日,2019华为智能计算大会杭州站如约而来,网易副总裁、网易杭州研究院执行院长汪源受邀参加本次大会,分享网易在人工智能方面的探索与实践。汪源表示,人工智能已经成为网易业务发展的...

网易云
04/26
0
0
Kubernetes杭州集市干货大起底,你get了吗?

2018年3月31日,在美丽的西子湖畔,CNCF Meetup——Kubernetes GeekGathering 2018杭州站与众多新朋老友如约相会,此次技术集会由K8S技术社区、EasyStack、网易云联合主办,谐云科技、网银互...

k8scaptain
2018/04/20
0
0
网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?

5月19日,LiveVideoStack携手网易云易盾,共同打造了“娱乐多媒体开发应用实践”专题,帮助开发者和泛娱乐平台运营人员,提升技术能力,突破难点,拓展思路与视野。 在专题论坛中,网易云易盾...

网易云易盾
2018/05/23
0
0
揭秘“二次元”企业背后的技术实践丨又拍云Open Talk NO.34

最近B站有一部新番《骑士&魔法》,讲述了优秀的程序员,转生到了骑士与魔法的异世界!转生后的他,活用程序员的编程知识,开始制造强大的机器人,改变异世界。那么身为程序员的他,在“二次元...

又拍云
2017/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
6
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
1K
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部