阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

避免流量高峰期 CDN 问题的 10 个方法

  • 2018-07-26
  • 本文字数:2515 字

    阅读完需:约 8 分钟

在视频流媒体中,因平台火爆而出现问题是件好事。至少,这比根本没有观众要好。

也许你正在使用世界级的 CDN,但是,在大型赛事期间,当 CDN 的服务器和对等点流量变得饱和的时候,一些用户还是无法享受到流畅的体验。因为每个 CDN 拥有的容量都是有限的,所以都有其局限性。

更糟糕的是,每个 CDN 都是一个黑盒子,在任何特定时候几乎都不能提供可用容量的信息。因此,CDN 在大型赛事中的实际表现情况是无法预测的,尤其是当有不同内容供应商进行活动视频直播的时候。你会发现,实际上你和其他内容供应商在共享 CDN 这种稀缺资源上竞争。

今年的世界杯正如火如荼地进行着,可以说世界杯会是有史以来最大的流媒体活动。我们对一些进行世界杯视频直播的广播公司客户进行了采访,询问了他们为世界杯直播做了哪些准备。

根据采访,我们总结了如下10 个方面的经验。你可以主动采取这些行动,以确保用户在观看世界杯直播时尽可能获得最佳体验。用户已经为这次盛会等了足足四年,你可不想让他们失望吧。

1. 数据是关键 —— 了解 CDN 表现如何

使用 Mux、Youbora 或 Conviva 等服务以准确了解你的 CDN 表现如何。再强调一遍,每个 CDN 都是一个黑盒子,但是你至少应该从外部进行测试,并获得关于交付情况有意义的数据。

此图来源于某次活动现场直播的Peer5 分析仪表盘

Peer5 的内置流媒体分析还能对 CDN 交付提供很多洞察分析,即使你没有使用我们的 P2P 交付产品,你还是可以使用这些免费的分析数据 。如果目前你还没有分析数据,那么有一点分析总比什么都没有好。如果你有分析数据,那么可以把 Peer5 的数据和现有供应商的统计数据进行比较,以进行完整性检查。

2. 让 CDN 供应商为问题负责

CDN 提供商并不完美。它们经常返回 HTTP 错误,而且有些会优先考虑重要或者咄咄逼人的客户。与你的 CDN 提供商取得联系,准备好数据(#1 中提到的),并要求他们为你的大型赛事提供更好的性能。

如果你的 CDN 提供商没有解决问题,没有达到你的期望,就要考虑换 CDN!如今,换个 CDN 不再是个大麻烦了,通常只需要几天来部署和测试一个新的 CDN。

3. 如果你还没换 CDN,那么就用多个 CDN 以保安全

你不能仅仅依靠单独一个供应商来进行世界杯直播。流媒体直播的关键是冗余,如今使用多个 CDN 要容易得多。首先,纯粹使用 CDN 进行缓存,并删除任何类似摄入等供应商锁定的功能。然后,可以轻松地添加另一个(或者两个,甚至四个!)CDN。接着,你可以在 CDN 之间进行负载平衡,如果出现问题,就切换到没有问题的 CDN 上。

即使你无法更改供应商,无法真的从你的 CDN 迁移,也有办法使用额外的 CDN 进行缓存和冗余,同时仍然使用你的主 CDN 专门进行摄入 / 编码。

4. 改进多个 CDN 切换逻辑

你是如何在 CDN 之间实行负载平衡的?我们看到很多平台仍然使用非常简单的静态负载平衡方案。这意味着,每个用户在整个过程中被分配到一个 CDN,这可能是个问题。首先你必须要测试的是:如果一个 CDN 不能工作了(或者表现糟糕),是否能中途切换 CDN?你可以自己构建这个功能,或者采用第三方解决方案,比如:Cedexis 或 DLVR。

5. 多样化 CDN —— 添加一个无服务器 CDN

给你自己多准备条路。点对点(Peer-to-Peer,简称 P2P)网状网络在解决大规模问题方面已经有几十年的历史了。一旦谷歌开源 WebRTC,Peer5 就可以构建一个 P2P,一个无需终端用户下载或安装的无服务器 CDN,因为 WebRTC 已经嵌入了浏览器。这意味着 Peer5 对于终端用户来说是透明的,就像任何一个基于服务器的 CDN,并且与目前的流媒体架构无缝集成。

这个混合方法(传统的CDN + 无服务器CDN)很独特,因为它使交付堆栈完全多样化了,不受负载的影响。P2P CDN 是最终的流媒体保险方案,其中最棒的是,它完全免费。如果一切正常,并且传统的CDN 表现良好,那么你将永远不需要P2P 容量,也就不必为此付费。但是,如果一切都乱了套,并且观看人数太多了,那么,你就真的需要一个解决方案来解救你。

6. 增加一些额外的服务器

如今,很多公司运营着自己的数据中心,有时也和商业 CDN 合作。如果你运营自己的 CDN,谨慎起见,要增加一些额外的服务器以防万一。考虑到惊群(thundering herd)现象,要在为时已晚前启动更多的实例。

7. 准备好阻止更多用户访问视频流

没有人希望自己处于这个境地,但是,你也许需要在 CDN 出现问题的地区掐断连接。

考虑告诉用户是否 / 何时遇到了交付问题。或者,考虑从页面中删除视频元素一段时间。完全没有视频比有个不断出现错误和缓冲的视频要好一点。

通过采取这个步骤,你也减轻了 CDN 的负担。你肯定不希望在大型节目中出现错误信息或推送代码更改。提前开发这个功能,并确保你能够在需要的时候马上就能触发该功能。

8. 准备好妥协 —— 添加更低的格式标准

由于质量不够好,很多内容供应商不再提供 360p 格式。但是,在大型节目中,你应该考虑把它们添加进来。更低的格式标准意味着即使你的 CDN 受到压力,容量有限,一些终端用户仍然可以观看。

9. 完美并不总是好事 —— 删除更高的格式标准

一种更有趣的方法是,如果碰到紧急状况(容量问题),删除最高格式标准的能力。ABR 算法是很贪婪的,这意味着每个播放者都会试图从 CDN 攫取尽可能多的带宽,以获得尽可能高的视频质量。每个播放器都是独立的,不会“知道”服务器是否压力过大或者当前有多少个其他用户在请求视频片段。很有可能发生这样的情况:所有播放器都在争夺达到同样的最高格式标准,但是最终,没有一个能够做到(可以想想囚徒困境)。

同样,这不是一个理想的场景,但是,当糟糕的事情开始发生时,拥有一个可以消除副本的故障安全措施也许是非常有用的。

10. 了解极限 —— 事先进行压力测试

不幸的是,目前还没有完美的全球压力测试解决方案。有像 LoadRunner 这样的综合解决方案,会创建数以千计的请求发送给你的 CDN,但是这些请求通常将来自位于同一数据中心的几台服务器,它们和你的 CDN 有着良好的连接性。你不能真正超高规模地或在有困难的地区测试你的 CDN,这会非常昂贵和耗时。

我们找到的最佳解决方案是,使用以前大型赛事的真实数据,并认真地深入研究那些第 1 条中的分析所识别出的薄弱痛点。

祝你好运!

查看英文原文: 10 ways to avoid CDN issues at peak

感谢张婵对本文的审校。

2018-07-26 08:516799
用户头像

发布了 199 篇内容, 共 81.7 次阅读, 收获喜欢 293 次。

关注

评论 1 条评论

发布
用户头像
不错不错
2020-03-08 18:35
回复
没有更多了
发现更多内容

LeakCanary核心源码解析,android开发从入门到精通素材

android 程序员 移动开发

Linux学习~树莓派gpio控制,如何化身BAT面试收割机

android 程序员 移动开发

Kotlin协程到底是怎么切换线程的?你是否知晓?,写得太好了

android 程序员 移动开发

Kotlin学习手记——构造器,【深夜思考】

android 程序员 移动开发

LC狂刷66道Dynamic-Programming算法题。跟动态规划说拜拜

android 程序员 移动开发

Kotlin协程,flutterplugin打包aar

android 程序员 移动开发

lambda表达式(4)(Shawn),开发android

android 程序员 移动开发

LayoutManager高端玩家,实现花式表格(1),安卓面试题高级

android 程序员 移动开发

Kotlin-风险高、RxJava-不老,Android-原生开发现状分析

android 程序员 移动开发

FinClip通过中国信通院SDK安全专项测试

FinClip

Vue进阶(幺陆叁):vue项目启动后自动打开页面并设置默认浏览器

No Silver Bullet

Vue 11月日更

Kotlin学习手记——协程进阶,嵌入式android开发教程

android 程序员 移动开发

Spring Boot+Vue实现汽车租赁系统(毕设)

偶尔善良

MySQL redis Spring Boot Vue

Tapdata 等40余家行业知名企业,应邀参与共建 NextArch Foundation

tapdata

数据库 数据融合

Kotlin学习手记——基本类型,安卓开发kotlin推荐书籍

android 程序员 移动开发

LeetCode,牛客面试必刷,看了这些,flutter面试

android 程序员 移动开发

直呼内行!阿里大佬离职带出内网专属“高并发系统设计”学习笔记

编程 程序员 消息队列 高并发系统

LayoutManager高端玩家,实现花式表格,kotlin中文

android 程序员 移动开发

🔥 DeepVideo 智能视频生产训练营火热报名中!

阿里云视频云

阿里云 媒体处理 智能视频 智能生产 视频云

MotionLayout_ 打开动画新世界大门 (part II),android插件化原理

android 程序员 移动开发

Linux编程之权限系统与工具使用(二),一文详解

android 程序员 移动开发

springmvc的定时任务

小鲍侃java

11月日更

Kotlin协程到底是怎么切换线程的?你是否知晓?(1),kotlin开源项目实战

android 程序员 移动开发

Kotlin的自定义View,实现带弧形的进度条,软件开发项目经理面试题

android 程序员 移动开发

就这?腾讯云高工熬夜手写'Java微服务学习笔记'也就让我月薪涨3k

Java spring 程序员 面试

阿里大佬手写Docker学习笔记就这?也就是让我五体投地的水平罢了

Docker 编程 程序员

《黑客之道》干了一夜的kali Linux之Metasploit渗透测试框架的基本使用

学神来啦

Linux 运维 黑客 渗透 Metasploit

MotionLayout_ 打开动画新世界大门 (part II)(1),kotlin框架

android 程序员 移动开发

Kotlin修炼指南(三),如何在Android-Studio下进行NDK开发

android 程序员 移动开发

记一次“U盘拔出”后重要文件丢失的恢复之旅

淋雨

EasyRecovery

Gartner预测到2025年,将有一半的云数据中心部署具有人工智能功能的机器人

WorkPlus

避免流量高峰期CDN问题的10个方法_音视频(后端)_Hadar Weiss_InfoQ精选文章