写点什么

避免流量高峰期 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:517475
用户头像

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

关注

评论 1 条评论

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

美景本天成,妙笔偶得之——“妙笔”是怎样炼成的?

百度开发者中心

注意!这种笔试方式正在逐渐被取代……

ShowMeBug

笔试 在线面试

使用APICloud AVM多端组件快速实现app中的搜索功能

YonBuilder低代码开发平台

前端 APP开发 APICloud 跨端开发 跨端框架

为冬奥加油——利用贝塞尔曲线实现冰墩墩

战场小包

前端 canvas 冬奥会 2月月更

虎符Hoo交易所开启全新生态布局 完成HOO首次回购

区块链前沿News

Hoo 虎符交易所 HOO回购

跨项目度量,CTO、PMO们的好帮手

阿里云云效

阿里云 云原生 敏捷开发 CTO 研发度量

DevSecOps端到端的安全能力构建为什么重要

极狐GitLab

安全 DevSecOps

作业7

施正威

官宣 | 极狐GitLab SaaS来了

极狐GitLab

剖析react核心设计原理--异步执行调度

有道技术团队

【堡垒机】堡垒机是啥?一线品牌有哪些?

行云管家

网络安全 数据安全 堡垒机 IT运维

在线YAML转XML工具

入门小站

工具

8分钟了解TDengine的WAL机制

TDengine

数据库 tdengine 开源 物联网

前端培训:Vue3 的自定义指令

@零度

Vue 前端开发

大数据培训:Flink 快照分析

@零度

flink 大数据开发

Tapdata 在线研讨会:如何快速上手 Tapdata Cloud?

tapdata

数据库 Cloud

深入解析 Flink 细粒度资源管理

Apache Flink

大数据 flink 开源 编程 实时计算

艾瑞咨询:青云科技入选中国开源软件产业图谱

青云技术社区

云计算 开源 混合云

优酷 IPv6 演进和实践指南

阿里巴巴终端技术

ipv6 移动网络

英特尔至强单月总出货量超其他厂商全年服务器CPU总出货量

科技新消息

直播预告|一线专家邀你共话:数据科学赋能多元应用场景价值

MobTech袤博科技

算法 数据 商业

深入浅出特征工程 – 基于 OpenMLDB 的实践指南(上)

第四范式开发者社区

机器学习 数据库 大数据 OpenMLDB

百度App Objective-C/Swift 组件化混编之路(二)- 工程化

百度开发者中心

关于极狐GitLab SaaS,你应该知道这些!

极狐GitLab

DevSecOps SaaS平台

用UML来描述领域模型吧

蜜糖的代码注释

UML 领域建模 2月月更

【Python训练营】Python每日一练----第23天:字符计数

是Dream呀

2月月更

百度App Objective-C/Swift 组件化混编之路(一)

百度开发者中心

人才短缺、成本高昂,制造企业智能化转型路径如何破局?

百度开发者中心

Mysql数据库表中有索引为什么还是查询慢?

慕枫技术笔记

数据库 2月月更

全方位构建信创生态体系,焱融科技完成海光 CPU 生态兼容性认证

焱融科技

云计算 分布式 高性能 文件存储 生态

【网络安全】知名网络安全企业有哪些?

行云管家

网络安全 数据安全 堡垒机

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