技术编程,网易|网易云信流媒体服务端架构设计与实现( 五 )
文章图片
文章图片
发布订阅机制发布的内容是:以stream为发布单位 , 以编码能力为基本内容 。其中编码能力包括:codec、分辨率、帧率、码率 。
订阅分为两个部分:客户端订阅和服务器订阅 。客户端订阅以stream为订阅单位 , 并携带订阅优先级 , 也就是流在下行接收中的重要性会反馈在订阅优先级上 。另外 , 当所有的客户发布订阅消息后是交由服务器订阅 , 它汇聚所有端的订阅消息 , 向发布源端发送订阅消息 , 同时将订阅码率反馈给源端 。
右图显示的是多流的发布机制是弹性码率大小流机制 , 上行发布的大小流并不是固定的分辨率 , 而是一个可伸展的码率空间 , 小流的码率范围和大流的码率范围都是很大的 , 这样的设计是以弹性的码率针对上行的带宽 , 并动态的调整码率 , 以进行最佳的上行发布,针对下行所有的接收端来调整码率 , 做到最大程度提高用户体验 。
3.3 传输层上下行QoS策略
3.3.1 传输层上行QoS策略
文章图片
文章图片
对于上行QoS服务器策略主要设计了四种:一是FEC/RED;二是NACK重传请求;三是PLI/FIR;四是接受信息反馈 。
在这里我区分了FEC/RED , 因为使用RED是为了增强音频的保障性 。对于视频 , 使用矩阵运算的方式生成额外的冗余包去对抗丢包 。NACK重传请求是服务器作为接收端在上行传授过程中 , 如果数据有丢失的话会主动作为接收端发送重传请求进行对抗丢包 。
PLI/FIR主要是首帧问题 , 在偏大量的丢包场景下 , 也会进行关键帧请求去替代NACK请求 。
接受信息反馈是记录上行接受信息 , 并反馈给源端 , 源端基于接收信息计算带宽、网络指标等进行一个上行的把控 。
文章图片
文章图片
FEC/RED和NACK重传请求这两种设计都是比较普通的对抗丢包的手段 。
FEC/RED机制是基于预测丢包 , 提前产生冗余 , 对抗丢包 。它的优势是低时延;劣势是抗丢包效果依赖于丢包预测准确性 。NACK/RTX机制是如果丢包已经发生 , 则基于测量的RTT做重传请求的控制 。它的优势是不用预测 , 低时延恢复率高 , 产生额外流量小;劣势是产生时延 , 高时延场景恢复效果差 , 设计不好容易产生NACK风暴 。
文章图片
文章图片
针对前两个设计对抗丢包的特点 , 网易云信分三个步骤来进行传输质量控制:一是建立网络状态的观测器 , 评估网络相关指标 。二是ARQ手段先行 , FEC手段做兜底 , 也就是尽量利用ARQ对抗丢包 , 再利用FEC兜底 , 这样可以减少带宽的浪费 , 做到较好的抗丢包效果 , 图中的式子是FEC需要做兜底的丢包率 。三是基于接受端反馈以及模块自检的策略调整 , 这一模块会统计NACK成功率、NACK响应时长和FEC恢复率 。
文章图片
文章图片
具体做法是:ARQ和FEC并不是割裂的两个模块 , 它们的统筹由抗丢包综合控制器进行管控 , 抗丢包综合控制器最核心的地方是FEC兜底的丢包率的计算公式 , 它的计算来源于网络观测器基于对它的观测 , 计算出来的网络的指标 , 去生成公式 。而且基于服务器端FEC模块数据统计反馈、服务器端ARQ请求响应模块数据统计反馈和拥塞控制模块数据反馈统筹的告知抗丢包综合控制器 。
推荐阅读
- 技术编程|后台权限管理设计思路:三种模型分析
- 技术编程|如何利用数据库进行世界史研究
- 青年|西安邮电大学与安康汉滨区深度合作,研发适合毛绒玩具全产业链实用技术
- 无人科技,电池技术|盘点几种常见的无人机电池
- 行业互联网|让青少年爱上科学 核桃编程AI人机双师模式受关注
- 技术编程|无服务器调研,部署REST API是最普遍用例
- 京东,折叠屏手机|围绕柔性屏的技术、特性、应用、产业化进行了非常专业的解读
- 云计算|腾讯云小微首次技术开放日,揭秘AI语音背后的奥秘
- iQOO手机|“快稳双全”!120W超快闪充技术炫技,十五分钟充满电量
- 驱动中国|国内首次应用!支付宝开放宠物鼻纹识别技术:猫狗都能买保险