34

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

 5 years ago
source link: http://www.infoq.com/cn/news/2018/07/10way-avoid-CDN-atpeak?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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

1mess1-1532595594805.jpg

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

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

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

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

1pp5-1532595593732.png

此图来源于某次活动现场直播的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,并且与目前的流媒体架构无缝集成。

1yin-yang-1532595592272.png

这个混合方法(传统的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

感谢张婵对本文的审校。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK