避免流量高峰期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.pswp.cn/news/451116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451116.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android應用進入爆發期 手機游戲仍是市場重心

近日,91無線發布了《91無線移動應用發展趨勢報告(Android版)》。報告顯示,2012年,無論Android移動應用用戶下載還是開發者研發均呈爆發態勢,手機游戲仍是市場重心所在。同時,Android移動應用下載…

MQTT Client軟件-MQTTBox

最近發現了一個連接mqtt broker的軟件:MQTTBox。GitHub地址:https://github.com/workswithweb/MQTTBox 官網網站的介紹為:使用MQTTBox增強你的物聯網流程 MQTT客戶端特性 支持TCP、TLS、Web Sockets和安全的Web Sockets連接MQTT服務器支持各種…

fastJson toJSONString注意點

fastJosn是阿里爸爸推出一款高性能序列化工具,號稱最快的json序列化工具。不過好像也就那樣,在量比較大的時候優勢才會明顯。單次序列化時間還是會達到幾十毫秒的級別。 Fastjson is a Java library that can be used to convert Java Objects into the…

WebService中文件傳輸

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 WebService處理傳遞普通的信息,還可以傳輸文件,下面介紹WebService是怎么完成文件傳輸的。 1、 首先編寫服務器端…

Django框架-Form組件

一、DjangoForm組件介紹 我們之前在html頁面中利用form表單向后端提交數據時,都會寫一些獲取用戶輸入的標簽并且用form標簽把它們包起來。 與此同時我們在好多場景下都需要對用戶的輸入做校驗,比如驗證用戶是否輸入,輸入的長度和格式等是否正…

中國經濟轉型知易行難

摘要:一個亞洲國家正在崛起,出口機器勢不可擋,財富快速增長,覺得美國已是過去,自己的時代已經到來。這是2012年的中國?沒錯———但也是上世紀80年代的日本。 美國《芝加哥論壇報》網站5月20日文章&#xf…

進程和線程的剖析

進程和線程的區別?什么時候用進程?什么時候用線程? 答:首先得知道什么是進程什么是線程? 我的理解是進程是指在系統中正在運行的一個應用程序;程序一旦運行就是進程,或者更專業化來說&#xff1…

解決 java.net.ConnectException: Connection refused: connect 異常

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一、 我的情況很簡單: 只是因為我調用服務端接口方法包名沒有寫對,應該如下面代碼中這樣寫: call.…

主席樹的各類模板(區間第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大&…

java類內部的變量

類內部的變量分為兩部分: 一.類的成員變量 在類內部,變量定義部分,定義的變量。 二.局部變量 在類內方法體中定義的變量和方法中涉及的變量。 成員變量和局部變量的區別: (1)成員變量在整個類中都有效…

騰訊搜搜退出PC搜索領域:百度搜狗迎來雙龍競爭

摘要:據北京商報報道,上周末,騰訊對公司組織架構進行了大規模調整。業內普遍認為,搜搜并入騰訊無線后,這個獨立搜索平臺將被合并,失去獨立性,也將令搜搜官網域名soso.com走向“沒落”。據北京商…

facade-pattern外觀模式

外觀模式: 外觀模式是面向對象編程中的重要設計模式。外觀類用來掩蓋復雜的內部邏輯,為用戶提供簡潔統一的服務接口。外觀類的主要功能如下: 1.通過提供簡明的對外API接口,來提高程序的可閱讀性和間接性。 2.提供通用的特定功能…

Web Service 客戶端,調用服務方法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 只是最簡單的調用web service 服務,至于要傳什么參數全看到業務了。 以下是最簡單的調用方式 : package hdmp…

分享Spring Cloud分布式微服務架構圖

分布式、微服務、云架構JAVA語言開發、跨平臺、高性能、高可用、安全、服務化、模塊化、組件化、驅動式開發模式 從現在開始,我這邊會將近期研發的springcloud微服務云架構的搭建過程和精髓記錄下來,幫助更多有興趣研發spring cloud框架的朋友&#xff0…

返回一個list的全部 倒敘排列的方法

#反向迭代一個listlist[2,4,6,4,3,7,5,45,23,6,5,32,6,52,324,23,65,76,3,234,6,3,4,356,7,74,234,35,7,86]def funrev(list): list1[] for i in range(len(list)): list1.append(list[-i-1]) print(list1) return list1print(************************)lis…

互聯網手機潮進入PK時代:周鴻祎激戰小米雷軍

摘要:事實上,周鴻祎本人也多次強調,對于對手他一向實事求是,“對小米手機這種模式持肯定態度,它是第一個做互聯網手機的”。花費精力做出漂亮的銷售業績,這是互聯網手機最關鍵命題,配置戰、價格…

很多人問為什么使用聯合索引,為什么不建兩個單獨的索引呢?

So why not just create two indexes, one on last_name and one on first_name? You could do that, but MySQL won’t use them both at the same time. In fact, MySQL will only ever use one index per table per query—except for UNIONs.[3] This fact is important e…

oracle表被鎖了怎么處理

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 首先你要知道表鎖住了是不是正常鎖?因為任何DML語句都會對表加鎖。你要先查一下是那個會話那個sql鎖住了表,有可…

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 …