海量并发低延时 RTC-CDN 系统架构设计(下)

news2024/11/27 4:34:29

上半部分内容:海量并发低延时 RTC-CDN 系统架构设计(上)

低延时 RTC-CDN 系统的架构

传统 CDN 直播发展多年,为了优化延时,业界基本上朝两大优化方向:优化传输层协议和在传输层协议的基础上优化应用层协议。

RTMP 和 HTTP with FLV 以及 HLS 底层均使用 TCP 作为传输层协议。针对 TCP 协议的优化在一定程度上可以达到降低延时的效果,比如使用全链路 TCP 加速方案以及替换使用 BBR 在内的更好的拥塞控制算法。

苹果在 2019 年推出了 LL-HLS(Low-Latency HLS),采用 chunk 编码传输模式,将延迟降低到 3 秒左右。目前基于 TCP 方案的 LL-HLS 和 LL-DASH 方案的极限延迟在 2-3 秒左右。

为了优化 TCP 协议,业界在可靠 UDP 协议上做了很多探索。随着大家对 Google QUIC 协议研究的深入,有不少项目和开发者,开始用 RTMP over QUIC 替代传统的 RTMP over TCP。QUIC 是一个非常优秀的协议,现在它已经成为 HTTP3 的标准协议。但 QUIC 作为一种通用协议,它对音视频媒体不友好,也就是它没办法理解音视频媒体数据的具体含义,它以一视同仁的角度来对待这些媒体数据,这也是它不能彻底解决流媒体传输难题的根本原因。

这几年 SRT 也得到了广泛的应用, SRT 底层使用 UDT 协议,UDT 协议也是一个老牌的基于 UDP 的可靠传输协议,当然原生的 UDT 传输延迟是比较高的,SRT 在此基础上做了不少的拥塞控制策略的相关优化以降低传输延时。

近两年随着 WebRTC 成功推广,利用 RTC 技术实现的低延时直播技术越来越成熟,我们来看看云信 RTC 低延时核心技术要点。

网易云信 RTC 低延时核心技术

  • 首先是抗弱网,为了对抗极限场景下 80% 的丢包,像业界常用的 FEC RED 以及 HARQ 技术大家都很熟悉,云信除此之外还利用基于机器学习的 PLC 算来进一步提高音频丢包后处理,并使用长参考帧 LTR 技术进一步降低视频的单帧丢失后连续参考导致的卡顿。

  • 在去抖动部分,利用 Jitterbuffer和NetEQ 技术也是非常成熟的方案,我们花了很多的精力在做 Jitterbuffer 和 ARQ 以及音画同步模块的配合策略,在抗住 2000ms 的抖动情况下,还需要保证音画通话还是有不少工程方面的挑战。

  • 在智能流控部分,首先一定要有优秀的带宽估计和拥塞判断算法,云信这几年对 GCC、BBR 和 PCC 等算法深入研究,融合各算法的优势,自研了一套稳定可靠的拥塞控制算法,可以保证带宽利用率在限制网络下达到 90%+;同时流控要做好必须做好全链路的反馈和源侧的响应,云信利用多层 Simulcast 和 SVC 技术增加了增加了调控的维度,同时利用全链路 VQC 技术保证视频全链路的效果。

  • 除了端侧的 QoS,云信这几年在服务端全链路分段 QoS 部分也做了很多实践。所谓分段 QoS,其实总结来说就是上行和下行的抗丢包要分段,带宽估计要分段,只要这样才能在服务端上针对每个用户的下行网络做最优的适配。

  • 另外,第一公里加速是做好上行 QoS 的重点,包括根据地理位置的就近接入、动态调度以及 MultiPath 的多路径都是很关键的技术。

  • 要做好 QoS 一套完善的云端下发与自适应参数配置服务是必不可少的,除了适配数千款各机型的参数,还需要做差异化场景的自动适配,各个客户端的差异化能力需要做好能力协商和能力降级,保证各个客户端都能有一个最优体验。

如何构建低延时 RTC-CDN 分发网络

在前面介绍云信的流媒体服务器架构时,已经提到了云信媒体服务器使用的无向图的拓扑结构,同时为了提升用户就近接入的效果,云信在全球各地部署了大量的边缘节点,边缘节点之间利用 WE-CAN 大网的路由节点来保证节点之间的网络传输效果。

常规的 RTC 房间,为了尽量减少端到端的延时,基本上采用的是 Full Mesh 的网状拓扑结构,尽量让用户就近接入。但是在房间人数不断上涨,到达万人乃至十万人大房间以后,网状拓扑的分发压力和级联成本都会大大上涨,在这种场景下网状拓扑已经无法满足业务的需求。为了解决这种问题,就需要采用类 CDN 的树状拓扑结构,针对一路上行流使用一棵树来做订阅者的分发。在云信实现的方案中,利用 WE-CAN 大网的路由节点和边缘服务器节点,可以自动适配网状和树状结构,通过流级别的调度策略自动调整每条流的分发拓扑。该方案在低延时直播场景下特别适用,低延时直播将延时控制在 1 秒左右,也为了控制成本采用多层的树状结构,并做一定的边缘聚合,在牺牲一定“最优接入“的情况下,做到了成本和延迟的平衡,同时也满足了低延时直播超大频道的需求做到了无限扩展的能力。因为大网路由节点和媒体边缘节点原来的拓扑组织形态就是无向图,所以天然能够兼容网状和树状拓扑,而且可以复用所有的边缘节点和路由节点,做到最佳的资源利用率,去平衡体验和成本。

低成本

大家或多或少都能感受到 2022 年的互联网多少有点“寒冬将至“的氛围,所以大家对于成本越来越敏感,在我看来低成本主要有两个维度:接入低成本和价格低成本。价格低成本很好理解,而接入成本降低可以节省人力成本,因此这两个维度总结起来都和”钱“相关。对于云服务提供商来说只有做到了低成本也才能让我们的产品竞争力提高,让用户更爱用。

接入低成本

直播 CDN 的接入特别简单,究其原因主要有两方面:一个是直播使用的协议非常标准,比如 RTMP、HTTP with FLV 和 HLS 都是非常标准且通用的协议,各个 CDN 产商都支持;第二是有大量优秀的开源软件在支持直播,比如大家熟知的 OBS、FFmpeg 和 IjkPlayer 等等。标准的协议和优秀的开源软件,都大大降低了 CDN 接入的难度。因此我们认为低成本 RTC 也需要努力探索这两个方向。

云信目前在低延时直播场景进行相关方向的探索和落地,在这里先简单介绍一下云信的低延时直播能力,在推流侧支持第三个推流工具和云信推流工具,将流用 RTMP 或者 WebRTC 协议推到边缘加速服务器,再根据配置如果是开通了低延时能力的就通过 WE-CAN 进行分发,否则就通过融合 CDN 分发。相比于 CDN 直播动辄 4s 以上的延迟,低延时直播延迟更低,最低可以达到 600ms,同时基于自研的 WE-CAN 全球智能路由网络,可支持千万级高并发拉流,并且首帧和抗弱网表现优势明显,让用户用接近 CDN 的价格体验到 RTC 的效果。

说回接入低成本,从开源和标准协议的角度,云信都做了探索,首先我们来看看云信已经开源的基于 WebRTC 的开源低延时直播播放器,大家可以在 github 上搜索 LLS-Player(https://github.com/GrowthEase/LLS-Player),找到这个项目。

上图是云信开源的低延时播放器的框架。云信低延时播放器是一个传输层的 SDK,最底层是 WebRTC。因为我们旨在打造一个通用版的 SDK,所以我们将 WebRTC 全量包入,通过 PeerConnection 层接入,里面是一些主要模块,例如 JitterBuffer、NetEQ、RTP/RTCP、Transport 等。中间是 RtdEngine 层,主要作用是对 WebRTC 进行封装,包含 API、引擎创建、信令建连、 媒体数据的接收回调等。最上层是 FFMPEG 插件。直播已经发展了数些年,各厂商都有一些存量的播放器,市面上大多数播放器都是基于 FFMPEG 开发,为了降低用户 SDK 接入门槛,云信将 API 封装成 FFMPEG 插件,这样只需要在原来的播放器里面就可以实现低延时直播的拉流。

除了开源的低延时直播播放器,云信还支持使用由 Millicast 开放的标准信令 WHIP 进行 SDP 协商后向云信音视频服务推拉流。同时,未来云信还有计划开源包括低延时推流插件在内的其它 RTC-CDN 产品。

价格低成本

这个章节是各个产商的核心,如何优化成本,我这里提供几个思路,供大家参考。

  • 提高资源利用率——CPU 算力错峰利用率,边缘接入节点复用率,大网内部使用组播来提高带宽复用率。

  • 降低带宽开销——各业务带宽错峰(带宽规划),聚合调度,95 峰值成本调度,通过节点的赛马机制去寻找更多优质的低成本边缘节点。

低延时 RTC-CDN 场景化技术实战

  • 低延时直播在线教育大班课

大班课大多都是通过传统的直播解决方案实现的,主要会面临两个问题:白板与直播画面的同步以及答题系统与直播画面的同步,传统直播由于底层传输层协议的固有问题,所以是很难攻坚的;而 RTC 方案虽能解决上述问题,但其高昂的成本让人“又爱又恨”。因此低成本的 RTC-CDN 架构在这个场景下就演化出了低延时直播的解决方案,去平衡效果(也就是清晰度、端到端延时、流畅度)与成本。上文已经分享了低延时直播就是利用了 RTC-CDN 的 QoS 机制、低延时树状分发网络以及低成本方案等,各类技术保障,就是让用户用 CDN 的价格体验到了 RTC 的效果。

  • 云游戏

与之类似的低延时直播场景还有“云游戏“,也是要将实时操作与画面做到极致的同步,特别是在云游戏直播的场景下,低延时直播可以大大提高观众侧的体验,当然云游戏除了延时要求以外,还对视频的清晰度和帧率提出了很高的要求,需要在编码策略和 QoS 机制上做更多的适配。

  • 直播

除了“云游戏“以外,近两年弹幕游戏直播也作为一种新型的直播形态在不少平台取得成功,弹幕游戏直播天然是与低延时直播场景匹配的,因为所有观众发的弹幕都希望尽快在直播画面上看到弹幕的结果,需要做到秒级延时的体验。

  • IoT 机器人

低延时 RTC-CDN 除了在教育、游戏、娱乐社交等场景得到落地以外,云信这两年还将它应用在了远程操控与 IoT 机器人的场景,所谓远程操控其实就是利用低延时流媒体技术实现对设备的远距离操控。

云信和网易伏羲机器人团队的合作的远程挖掘机就是其中一个落地实践的方向,为了实现远程开挖掘机,我们需要有一套超低延时的控制信令系统和超低延时的实时音视频系统,再配合云端的 VR 渲染。这些超低延时的传输能力,不仅要考虑户外网络较差信号较差的情况,还要面临超大流量的上行流量传输,因为同时传输很多个摄像头的数据,很多传统 RTC 的场景下的 QoS 机制还是需要针对性做较多的优化以适配这样的场景。

  • 元宇宙

除了挖掘机以外,云信还在近两年特别热门的元宇宙场景进行通用传输能力的探索。元宇宙如今已成为全球科技业的下一个风口。在元宇宙琳琅满目的各种应用场景中,无论是如电影《头号玩家》中的那种体感交互设备,还是医生利用 VR 医疗,远程做手术,元宇宙强交互的基础是数据的低延迟传输和同步。

云信与网易瑶台合作研发的瑶台是国内首批元宇宙落地产品,区别于传统视频会议的呈现方式,瑶台更具虚拟的沉浸感。去年网易曾将全球投资者大会的举办地搬到了瑶台虚拟世界,来自全球几十个国家的 200 多位投资者,通过自己的虚拟形象,交流网易业务的最新动态。整个互动场景便是基于网易云信的低延时 RTC-CDN 能力打造。

  • MPS 云端实时转码

除了通用传输技术,云信也在探索通用的远端媒体处理技术,使用云信自研的 MPS 高性能媒体处理服务器,云信能够在云端实现虚拟人、转码、超分、场景渲染等能力,来满足不同客户和场景的实际需求,我们认为云端的媒体处理构建,也是音视频在元宇宙时代的一个非常重要的组成部分。

总结和展望

总结

  • 我们探讨了全球分布式多单元流媒体服务器架构,利用分层架构和统一调度来支持了海量并发以及流量蜂拥。

  • 我们基于多单元流媒体服务器架构,并深度打磨低延时技术,打造了 RTC-CDN 系统,针对 RTC-CDN 系统探索了低成本服务架构,同时拥抱了标准化和开源。

  • 我们利用 RTC-CDN 优化了低延时直播、元宇宙的传输、云渲染以及远程机器人控制等场景。

  • 这里我们对 RTC-CDN 这个新词做一个总结:什么是 RTC-CDN 系统?就是在一套系统里同时具备 RTC 和 CDN 的能力,并让 RTC 的接入与使用如 CDN 一样低成本。

展望

  • 系统架构的融合和多样性是未来,而全面的 RTC-CDN 时代,应该会在未来几年内到来。

  • 未来的音视频编解码还是会不断的迭代创新,比如 8K 的新一代视频编码器 AVS3 和 VVC 和谷歌基于 AI 的音频编码器 SoundStream。

  • 传输技术会继续迭代,不仅是已经得到广泛应用的 QUIC 和 HTTP3,5G 和 6G 这些底层通信技术也会不断演进,这些都会推进 RTC 技术不断迭代。

  • AI 与大数据挖掘,会不断在 RTC 领域中发挥重要作用。

技术是永无止境的,我坚信技术是可以改变世界,音视频领域未来有无限可能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hadoop环境搭建(1)

一、在已安装的虚拟机上面进行修改(以CentOS 7为例)①修改主机名查看自己主机名,命令hostname第一种修改主机名方法,命令vi /etc/hostname第二种修改主机名方法,命令hostnamectl set -hostname 自定义主机名可以更改为…

简单介绍如何使用robotium进行自动化测试

创建一个简单的工程作为被测程序,运行后显示如下界面: 2.创建一个Test Project 1). 打开eclipse,选择File->New->Project…->Android Test Project,点击Next。 2). 在Test Project Name中输入测试工程的名称&#xff…

华为HCIP-Datacom认证题库(H12-821)

第一套(100题) 1. (单选题)下面关于0SPF的特殊区域,描述错误的是: A.Totally Stub Area允许ABR发布缺省的三类LSA,不接受五类LSA和细化三类LSA B.NSSA Area和Stub区域的不同在于该区域允许自治系统外部路由的引入&…

「实践总结」订单超时自动取消

在进行开发的过程中,在开发的时候,有遇到相关的延时支付相关的问题,在解决延时支付的相关的问题的时候,会有很多种的解决办法,现在就讲对应的解决办法先进行相关的总结操作;「引言」在开发中,往…

mysql索引失效的几种情况

失效的几种情况 1、select * from xxx 2、索引列上有计算 3、索引列上有函数 4、like左边包含‘%’ 5、使用or关键字 6、not in和not exists 7、order by 8、不满足最左匹配原则 给code、age和name这3个字段建好联合索引:idx_code_age_name。 该索引字段的顺…

ChatGPT告诉你:项目管理能干到60岁吗?

早上好,我是老原。这段时间最火的莫过于ChatGPT,从文章创作到论文写作,甚至编程序,简直厉害的不要不要的。本以为过几天热度就自然消退了,结果是愈演愈烈,热度未减……大家也从一开始得玩乐心态&#xff0c…

注意,这本2区SCI期刊最快18天录用,还差一步录用只因犯了这个错

发表案例分享: 2区医学综合类SCI,仅18天录用,录用后28天见刊 2023.02.10 | 见刊 2023.01.13 | Accepted 2023.01.11 | 提交返修稿 2022.12.26 | 提交论文至期刊部系统 录用截图来源:期刊部投稿系统 见刊截图来源&#xff1a…

npm link

正文npm link的用法假如我们想自己开发一个依赖包,以便在多个项目中使用。一种可行的方法,也是npm给我们提供的标准做法,那就是我们独立开发好这个 "依赖包",然后将它直接发布到 npm镜像站 上去,等以后想在其…

熟读阿里总结的 Java10w 字总结,15 天拿下 5 个大厂 offer(阿里,美团,字节...)

Java 面试都会有很多程序员找工作、跳槽等一系列的安排。说实话,面试中 7 分靠能力,3 分靠技能;在刚开始的时候介绍项目都是技能中的重中之重,它也是可以决定一次面试的成败的,那么在面试的时候你会如何介绍自己、熟练…

Sms多平台短信服务商系统~完成阿里云短信服务发送可自行配置

1.项目中引入Maven 阿里云地址 不同编程语言都有对应的SDK,你们下载自己需要的即可。 pom.xml中添加maven坐标 <!--阿里云短信服务--><dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-dysmsapi20170525</artifactId>…

八、CSS新特性二

文章目录一、CSS3多背景和圆角二、怪异盒子模型三、多列属性四、H5多列布局瀑布流五、CSS3线性渐变5.1 线性渐变5.2 径向渐变六、CSS3过渡动画七、CSS3 2D八、CSS3动画一、CSS3多背景和圆角 css3多背景&#xff0c;表示CSS3中可以添加多个背景。 CSS3圆角 border-radius: 0px;…

日本机载激光雷达测深进展(二)机载激光雷达测深经验

日本海岸警卫队海洋情报部&#xff08;JHOD&#xff09;拥有14年的机载激光雷达测深(ALB)经验。由于ALB调查高效率和高分辨率&#xff0c;JHOD已将ALB应用于各种用途&#xff0c;如制图、海啸受灾港口的恢复重建、安全监测和火山活动研究。本文简要描述了JHOD激光雷达测深系统的…

基于Hibernate对数据库表的单表查询

基于Hibernate对数据库表的单表查询 1.依赖 1.1jar包 1.2配置文件。persistence.xml <?xml version"1.0" encoding"UTF-8"?> <persistence version"2.1"xmlns"http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi"…

docker 部署centos7.9并打包成docker

下载centos基础镜像 docker pull centos:centos7 运行镜像 docker run -itd --name centos-test -p 60001:22 --privileged centos:centos7 /usr/sbin/init 进入容器 docker exec -it ebec90068696 /bin/bash 配置容器信息 安装ssh服务和网络必须软件 yum install net-to…

Linux基础命令-pstree树状显示进程信息

Linux基础命令-uname显示系统内核信息 Linux基础命令-lsof查看进程打开的文件 Linux基础命令-uptime查看系统负载 文章目录 前言 一 命令介绍 二 语法及参数 2.1 使用man查看命令语法 2.2 常用参数 三 参考实例 3.1 以树状图的形式显示所有进程 3.2 以树状图显示进程号…

【计算机网络 -- 期末复习】

例题讲解 IP地址&#xff08;必考知识点&#xff09; 子网掩码 子网划分 第一栗&#xff1a; 子网划分题目的答案一般不唯一&#xff0c;我们主要采用下方的写法&#xff1a; 第二栗&#xff1a; 路由跳转 数据传输 CSMA/CD数据传输 2、比特率与波特率转换 四相位表示&am…

一文高端Android性能优化-总结篇

以下从几个方面来总结一下Android的性能优化&#xff1a;1&#xff1a;界面卡顿优化2&#xff1a;内存优化3&#xff1a;App启动优化界面卡顿优化Android的界面为每秒60帧&#xff0c;即必须在16ms内完成1帧的绘制&#xff0c;如果某个方法耗时过程&#xff0c;导致16ms内无法完…

OIDC OAuth2.0 协议及其授权模式详解|认证协议最佳实践系列【1】

OIDC / OAuth2.0 是一种开放的标准&#xff0c;可以帮助应用程序安全地访问用户的资源&#xff0c;而无需将用户的凭据&#xff08;如用户名和密码&#xff09;暴露给应用程序&#xff0c;我们可以通过标准协议&#xff0c;建立集中的用户目录和统一认证中心&#xff0c;将内外…

健身的时候可以戴耳机吗、最适合健身时佩戴的耳机推荐

戴着耳机锻炼&#xff0c;听着动感的音乐&#xff0c;会让你心潮澎湃&#xff0c;瞬间感觉自己力大无穷。那什么样的耳机更适合在健身房锻炼时戴呢&#xff1f;首先稳固性和舒适度一定要比较好&#xff0c;毕竟在运动的过程中老是感觉到不适或者掉落&#xff0c;那真的是很令人…

计算机组成原理:3. 系统总线

更好的阅读体验\huge{\color{red}{更好的阅读体验}}更好的阅读体验 文章目录3.1 总线的基本概念3.1.1 总线的定义3.1.2 总线的分类片内总线系统总线通信总线3.2 总线特性及性能指标3.2.1 总线特性3.2.2 总线性能指标3.2.3 总线标准3.3 总线结构3.3.1 单总线结构3.3.2 多总线结构…