来源:Lumen Technologies Asia Pacific 主讲人:Gautier Demond 内容整理:王珅 本次分享的主讲人为来自 Lumen Asia Pacific 的内容交付服务总监 Gautier Demond,主讲人分享了他对广播公司如何通过多 CDN 战略提高直播弹性和性能的见解与案例分析。
目录
- 直播视频服务不断增加的大环境与面临的挑战
- 视频需求的急剧增加
- 举办大型体育赛事的挑战
- 当前互联网传输的挑战
- 直播和视频点播的来源访问的挑战
- 性能进一步降低的原因与解决方案
- 缺乏负载平衡工具
- 缺少实时监控
- 建立一个有弹性的架构 - 全球 CDN
- 用正确的协议部署 Multi CDN
- 把内容来源放在中立区域
- 考虑替代交付方法
- 客户端实时分析和负载平衡器
直播视频服务不断增加的大环境与面临的挑战
视频需求的急剧增加
由于居家工作的限制和户外活动机会大大减少的原因,媒体公司和广播公司观察到直播视频的流量有了空前的增长,这也带来了新的挑战。
- 保持提供的服务在预定的性能水平上稳定运行:随着区域内实时流量的急剧增加,确保你的架构有足够的容量和对接能力,并平稳的到达终端用户,是至关重要的。
- 快速有效地应对不同情况:建立一个能够管理更高的峰值与平均比率的交付架构,并能够应对流量的意外激增。
- 为不可预知的互联网条件进行准备和计划:冗余架构是避免在较差的视频交付环境中出现中断或其他问题的关键。
- 为地理多样性做好准备:每个 CDN 在世界的不同地方都有优势和劣势,了解你的供应商是非常重要的。
举办大型体育赛事的挑战
游戏/媒体/广播公司的首要问题主要包括以下四个:
- 流量变化大
- 一个以满足日常活动为出发点设计的架构可能无法处理突发的峰值。
- 用户群的地理多样性
- 大多数体育赛事都是为分布于五大洲的全球观众设计的
当前互联网传输的挑战
- 本地网络的挑战 大多数收发容量问题发生在对等水平上。CDN 具有合适的服务器容量,但通向 ISP 的容量过大,无法正常接收额外的流量。
- 局部停电 尽管这种情况变得越来越少,但在 2022 年仍旧存在这种情况导致的平台故障导致内容交付持续几分钟或几个小时无法实现。
直播和视频点播的来源访问的挑战
- 与来源的专用链接 大规模的流量高峰会造成源头连接的急剧增加。公共互联网连接可能是一个挑战,优先考虑专用私人连接可以保证高峰期的稳定性。
- 中层--源头防护设置 为了防止源头过载,造成整个交付架构出现瓶颈,让每个 CDN 设置自己的源头防护是一种强制性保护手段。
性能进一步降低的原因与解决方案
在介绍了前面一些当前面对的基本挑战之后,主讲人深入讲解了会进一步影响直播性能,导致质量降低的因素与解决方案。
缺乏负载平衡工具
而解决方案可以从以下三个方面进行:
- 创建一个强大的 Multi CDN 战略
- Multi CDN 环境的效率仅次于负载平衡器的决策效率。
- 负载平衡决策的自动化过程在任何时候都可以切换,不需要人工验证
缺少实时监控
实时监控的缺失导致无法了解发生了什么。而解决问题的第一步就是检测错误情况是否发生了,通过监测正确的 KPls 来衡量你的交付效率,包括三个关键参数
- 缓冲率
- 播放失败
- 5xx 错误 根据这三个关键指标建立一个适当的警报系统
建立一个有弹性的架构 - 全球 CDN
主讲人进一步介绍了如何建立一个有弹性的架构,也即全球 CDN。
用正确的协议部署 Multi CDN
在每个交付区域内提供一定冗余。确保你的商业协议允许你根据业绩而不是商业奖励来实现负载平衡。在每个地区测试每一个 CDN,并在每个目标市场建立一个业绩排名。
Multi CDN
把内容来源放在中立区域
来源访问是非常关键的。来源应该提供给所有将在负载平衡策略中考虑的 CDN。在选择交付供应商时,应考虑你的 CDN 和内容来源之间的直接连接。确保你没有使用需要其他 CDN 提供专业服务的专有认证。
CDN 网络
考虑替代交付方法
冗余度也应该在交付技术中体现出来。利用 WebRTC 协议的网状传输,直接在 ISP 层面开放缓存,并利用ISP 网络内的组播。
客户端实时分析和负载平衡器
客户端是必须的,直接从你的客户的设备上获取统计数据。根据性能实施实时的负载平衡政策。实现自动切换,不要在冗余过程中引入人力瓶颈,同时每月审查数据并重新评估你的交付架构。
最后附上演讲视频:
http://mpvideo.qpic.cn/0bc33iaaiaaax4ap75dimrrfbwwdatnaabaa.f10002.mp4?dis_k=18c4b3111ac795f545830e426349dffa&dis_t=1653459778&vid=wxv_2373221056381026306&format_id=10002&support_redirect=0&mmversion=false