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

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

\\

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

\\

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

\\

ef04da9b749193bb211dd517fe90e0b8.jpg

\\

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

\\

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

\\

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

\\

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

\\

6c312e515e42a9d1ff69f8adbeade949.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,并且与目前的流媒体架构无缝集成。

\\

22d102aadaa40ed80d281c2d1a364ed7.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  

\\

感谢张婵对本文的审校。

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

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

相关文章

Android应用进入爆发期 手机游戏仍是市场重心

近日,91无线发布了《91无线移动应用发展趋势报告(Android版)》。报告显示,2012年,无论Android移动应用用户下载还是开发者研发均呈爆发态势,手机游戏仍是市场重心所在。同时,Android移动应用下载…

WebService中文件传输

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 WebService处理传递普通的信息,还可以传输文件,下面介绍WebService是怎么完成文件传输的。 1、 首先编写服务器端…

Django框架-Form组件

一、DjangoForm组件介绍 我们之前在html页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如验证用户是否输入,输入的长度和格式等是否正…

主席树的各类模板(区间第k大数【动,静】,区间不同数的个数,区间=k的个数)...

取板粗 好东西来的 1.(HDOJ2665)http://acm.hdu.edu.cn/showproblem.php?pid2665 (POJ2104)http://poj.org/problem?id2104 (POJ2761)http://poj.org/problem?id2761 题意:求区间第K大&…

分享Spring Cloud分布式微服务架构图

分布式、微服务、云架构JAVA语言开发、跨平台、高性能、高可用、安全、服务化、模块化、组件化、驱动式开发模式 从现在开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友&#xff0…

Lyft Level 5 Challenge 2018 - Elimination Round翻车记

打猝死场感觉非常作死。 A&#xff1a;判一下起点和终点是否在其两侧即可。 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() {int x0,…

mysql用户的权限分配

2019独角兽企业重金招聘Python工程师标准>>> 因今天在分配数据库权限的时候&#xff0c;同事反映账户不能使用函数&#xff0c;遂搜集资料总结了一番关于mysql用户的权限分配。 MySQL 赋予用户权限命令的简单格式可概括为&#xff1a; grant 权限 on 数据库对象 to …

小米360口水战背后:国产手机第三态诞生

摘要&#xff1a;按照双方公布的配置信息&#xff0c;小米手机青春版为1.2G H z双核处理器&#xff0c;华为闪耀为1G H z双核。种向市场投入海量推广资金&#xff0c;以换取产品上的高利润&#xff0c;代表为步步高、金立、O PPO。南都制图&#xff1a;宋小伟 互联网入侵通信业…

线段与多边形的关系

转自周见智 介绍 最近项目中要用到有关几何&#xff08;Geometry&#xff09;方面的知识&#xff0c;程序需要判断给定的一条线段&#xff08;Segment&#xff09;与指定多边形&#xff08;Polygon&#xff09;的位置关系。这种关系分为三种&#xff1a;多边形包含线段、多边形…

解决,文件上传到 ftp 服务器,中文出现乱码问题

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 上传到 ftp 服务器&#xff0c;中文出现乱码解决&#xff0c;之前文件名 “ 网关信息 ” 始终不能正确显示&#xff0c;尝试了多种编码…

常用负载均衡策略分析

背景 一般生产环境单机所能承受的QPS压力为2w左右&#xff0c;过大的压力会导致服务器爆炸。即便是单机能够撑住2w QPS&#xff0c;一般也不会这么做&#xff0c;生产环境一般会预留50%的冗余能力&#xff0c;防止QPS因为某个热门的活动而爆炸。当QPS超过单机所能承受的压力时&…

解决- SecureCRT上运行 linux vim 命令中文出现乱码

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 乱码如图&#xff1a; 这个问题是CRT的编码设置造成的&#xff0c;改一下设置就可以了&#xff1a; 1. 在当前连接上右键选择最后一个 2…

linux中操作数据库的使用命令记录

1&#xff0c;mysql 查看数据库表编码格式&#xff1a; show create table widget; 修改数据库表编码格式&#xff1a; alter table widget default character set utf8; 修改数据库表中某字段的编码格式&#xff1a; alter table widget change widget_name widget_name varc…

ICC Scenario Definition

现代先进工艺下的后端设计都是在 MCMM 情况下设计的&#xff0c;所谓 MCMM 就是 muti-corner muti-mode&#xff0c;用于芯片的不同工作模式和工作条件。 后端设计过程中&#xff0c;需要保证芯片在所有工作模式和工作条件下都能正常工作&#xff0c;工作模式一般只有几种&…

持续集成与持续部署宝典Part 2:创建持续集成流水线

2019独角兽企业重金招聘Python工程师标准>>> 在本系列文章中&#xff0c;我们将探讨在容器时代如何在基于Docker的环境中创建连贯的工作流程和流水线来简化大规模项目的部署。另外&#xff0c;我们还将详细介绍如何利用Docker和Rancher自动化处理这些工作流。 在上文…

64 装饰器函数: 母版 csrf防御机制 cookie

主要内容: 1: 装饰器函数 a: 原理: 在不改变原函数的代码和调用方式的情况下, 给函数动态的添加功能 b: 实例: 装饰器的原理: def yue(tools):print(使用%s约一约 % tools) def wrapper(fn):def inner(*args, **kwargs):print(先准备好钱)fn(*args, **kwargs)return inner yue …

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 方案一&#xff1a;用Eclipse自带的Export功能 步骤1&#xff1a;准备主清单文件 “MANIFEST.MF”&#xff0c; 由于是打包引用了第三…

一个判断session是否过期的小技巧

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Session一直是我们做web项目经常使用的&#xff0c;以前没太注意&#xff0c;这次又细致的看了下&#xff01; 1.session其实就是一个Ma…

jQuery基础-事件

只能添加一个处理函数&#xff0c;后面的会覆盖前面 会有兼容性差异 冒泡 会依次检查父元素 截获冒泡 或者 最大的缺陷 并且在IE和NetSpace里面分别为冒泡和捕获两种 多个处理函数 依次执行 捕获--->自己--->冒泡 true 只捕获&#xff0c;不冒泡 false 只冒泡 从父元素的…

别的AI还在打游戏,这个AI已经当上“超级马里奥”游戏策划了|GECCO最佳论文

AI打游戏已经不是什么新鲜事了&#xff0c;“沉迷”Dota 2、星际争霸、LOL的AI一个接一个的出现。 但是你也许不知道&#xff0c;相比这些“游戏玩家”AI&#xff0c;还有一位优秀的AI&#xff0c;直接当起了“游戏策划”&#xff0c;做的还是脍炙人口的“超级马里奥”。 &…