史上最全的CDN內容分發網絡實戰技巧

https://wenku.baidu.com/view/9766de3f52d380eb62946d3c.html?from=searchhtml

https://wenku.baidu.com/view/122c193230b765ce0508763231126edb6f1a76d9.html前端

https://wenku.baidu.com/view/98978ded0975f46527d3e101.html?from=search算法

1.雲服務的便利
    硬件 服務器 
    軟件 文件服務 轉碼服務 直播服務等
2.自建CDN服務
    成本
    個性化需求瀏覽器

什麼是CDN?
CDN (Content Delivery Network)內容分發網絡。
    CDN是構建在網絡之上的內容分發網絡,依靠部署在各地的邊緣服務器,經過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取所需內容,下降網絡擁塞,提升用戶訪問響應速度和命中率。
    CDN的基本原理是普遍採用各類緩存服務器,將這些緩存服務器分佈到用戶訪問相對集中的地區或網絡中,在用戶訪問網站時,利用全局負載技術將用戶的訪問指向距離最近的工做正常的緩存服務器上,由緩存服務器直接響應用戶請求。緩存


    當咱們進行一個長鏈路訪問時,這個鏈路上的傳輸速率,包括它的連通性極可能都會得不到保證,而CDN正是利用其核心原理——將內容下沉到離用戶最近的一個節點,讓用戶能夠經過一些短鏈路去訪問,從而得到較好的分發效果。安全

使用CDN的好處?
    解決網站高流量,大併發問題    數據在離用戶最近的地方命中並返回
    提升網站可用性    壓力分擔了
    跨網訪問            解決不一樣運營商網絡訪問問題
        複雜的網絡條件:世界上最遙遠的距離不是生與死,而是你在電信,我在聯通,雖然有點誇張、調侃的成分,但仍是很生動的描述了國內複雜的網絡條件。
    訪問加速
        Varnish 一款高性能的開源HTTP加速器,將對象緩存再內存,達到訪問加速的目的--CDN加速
    下降整體運營成本        不一樣機房不一樣城市帶寬成本不一樣
    安全性,防攻擊
        1.野蠻攻擊:CDN作到了保護源站IP的做用,攻擊域名實際攻擊的是CDN,很難把CDN打到(CDN規模夠大),
            由於CDN是自然的分佈式部署,節點分佈普遍,很難在同一時刻將全部節點都打倒。
        2.技巧性攻擊:能夠在CDN層作安全防禦,第一時間過濾掉可疑的請求。服務器

正常訪問過程:
    用戶給瀏覽器訪問域名,請求訪問
    瀏覽器調用域名解析函數庫對域名進行解析,獲得目標IP
    瀏覽器使用IP地址訪問數據
    瀏覽器顯示網頁內容網絡


加CDN的訪問過程:
    用戶向瀏覽器提供要訪問的域名
    瀏覽器調用域名解析函數庫對域名進行解析(local DNS),因爲CDN對域名解析過程進行了調整,因此解析函數庫通常獲得的是該域名對應的CNAME記錄,
        爲了獲得實際IP地址,瀏覽器須要再次對CNAME域名進行解析以獲得實際的IP地址;在此過程當中,使用了全局負載均衡DNS解析,
        如:根據地理位置信息解析對應的IP地址,返回用戶最近的Cache服務器組IP。
    瀏覽器根據IP地址訪問數據(此處的IP是Cache服務器IP)
    Cache服務器查看本地是否有相應的數據,若是沒有根據瀏覽器提供的要訪問的域名,經過Cache內部自建DNS解析獲得此域名實際IP地址,
        再由Cahce服務器向實際IP地址提交請求,緩衝能夠多層
    Cache服務器從實際IP地址獲得內容後,緩存在本地,以備後面使用,同時返回給客戶端完成數據服務過程。
    瀏覽器顯示網頁內容
CDN網絡是在用戶和服務器之間增長Cache層,經過接管DNS實現將用戶的域名請求引導到Cahce上得到源服務器數據的。數據結構


CDN組成部分?    
    源站,負責生成服務器信息內容;
    緩存服務器:負責存儲源站的部分或所有信息內容;
        節點分層:核心節點,邊緣節點。
        同層節點又有相鄰節點相互協做。(不跨網和物理區域)
        最長調用鏈:用戶訪問邊緣節點A,A沒有資源,A向同層的A‘詢問,也沒有,
                A向核心節點B請求,依然沒有,B向同層B’請求,也沒有,
                B向源站請求,緩存數據,並返給A,A緩存數據並返給用戶。先給用戶,後緩存。
                樹狀存儲,實現流量的收斂
        用空間換時間的這種高效的數據結構和算法,多級緩存以熱度來區分,前端是SSD後面是機械硬盤等等        
        存儲的硬盤空間滿了,會經過一系列置換方法,把最老的數據、最冷的數據替換出去。架構

    內容交換分發服務器:完成各緩存服務器之間的負載均衡功能;
        第一個請求回源
        熱點內容推送,預熱

    內容管理服務器:負責整個網絡各緩存服務器中存儲的內容的管理,爲各緩存服務器制定相應的緩存策略,以提升緩存服務器的服務質量。
        ①分段分發技術
            流媒體對邊緣內容的完整性沒有要求,節點只需存儲少許的節目或節目片斷便可實時推送內容,爲用戶提供完整的服務。當用戶點播的內容只有部分片斷或沒有時,系統將採用分發技術進行內容的快速分發。
        ②部分分發技術
            部分分發技術可提高邊緣系統的命中率,若是對10%的內容採用全複製,20%的內容採用50%複製,50%的內容採用10%複製,那麼,系統能夠實現95%以上的命中率,大大下降骨幹網的負荷,具備優越的分發性能。

    請求調度系統(全智能DNS):向用戶提供最近的服務器IP地址,減輕骨幹網的壓力;
        全網調度
        HA高可用
        IP庫
        P2P?
        如何調度?
            Local DNS :用戶訪問域名去這裏拿ip,它經過本地緩存或者遞歸向上層COM獲取,最終給用戶一個CNAME/IP,若是用戶跟訪問的Local DNS不在一個區域(認爲配置或部分小ISP的Local DNS只有緩存能力,沒有遞歸獲取能力,若是cache裏沒有他會把請求轉給別的有能力的NDS服務器處理,
            但轉發的DNS服務器可能跟用戶不在一個區域,所以DNS給的IP將是這個地區的CDN ip而不是用戶真正區域的CDN ip),
            獲取的IP不是最近的CDN節點。 能夠經過HTTP server的302調度,返回給用戶一個離他最近的CDN節點。
            HTTP server能夠拿到用戶的真實ip,經過DNS方式不能拿到用戶ip。
            缺點是多一次TCP三次握手的過程。通常狀況下都是經過DNS來進行第一次調度,而後用http來進行第二次糾偏。輕任務不合適,重任務合適。

            除了DNS調度和http的302調度之外,其實還有一種調度方式,叫http DNS調度

    監控系統,報警
        TCP鏈接數,CPU負載,帶寬,流量,探活

    流量與切峯系統
        切峯算法?

    數據統計

優化:
    就近分佈/節點選址、策略性的緩存、傳輸的優化、鏈路層的優化、內容的預取、合併回源, 而後持久鏈接池、主動壓縮
    路徑的優化:
        實際上,咱們能夠把它抽象成是一個求最短路徑最優解的思路去解決真實的問題。
        當你從a點到b點須要傳輸數據的時,每每會通過一個c點,比直接從a到b更快。在互聯網裏有個三角原理,和地理位置的原理有必定區別的。
        雖然說有必定的相關性,但仍是有區別的,有可能從a通過c到b會比a直接到b更快。
        韓國,臺灣,日本,大陸
    自動路由規劃
        在瞭解經典架構以後,咱們在這個架構上作了一些優化。首先就是自動路由規劃,在系統構建初期,咱們全部節點上層從屬關係徹底是由人工按經驗設定的,但隨着節點規模的擴大,依靠人去編這張網就變成了一個很繁重且容易出錯的工做,所以咱們開發了一套自動根據評分選取上行節點的機制,首先它會基於質量數據,好比基礎網絡監控,像丟包、延遲,以及業務上報的數據,像首屏統計、卡頓統計,基於這些數據再綜合考慮成本和容量最終爲每一個節點選取一個比較合適的上級回源地址池。


CNAME, CDN,DNS 關係,ICP
如何避免分發調度系統瓶頸,內部DNS系統,

系統擴容

http header etag 等


視頻:
上傳服務,轉碼服務,視頻一致性MD5
視頻轉碼技術及轉碼實現詳解
    https://wenku.baidu.com/view/32702108844769eae009eda2.html


直播
直播CDN它自己有怎樣的特色?
    首先它一樣是作內容下沉,但不一樣於傳統CDN,直播CDN分發的是實時流,而傳統CDN分發主要是一些靜態文件,好比頁面、圖片或者點播視頻文件,這些靜態資源一旦預先分發一次以後,就能夠服務不少次的訪問,而在直播CDN中用戶看到的每一幀都是在很短的時間內產生,實時傳輸到每一個用戶的,所以直播CDN的核心任務就變成了保證主播和觀衆之間每一條鏈路都有穩定的傳輸速率,但穩定在咱們目前所處的複雜網絡環境中是特別難作的,舉個例子,假如個人網絡帶寬很好,正常狀況下有一百兆,那麼我在看點播的時候一下就緩衝完了,即便中間出現一些波動也不要緊,由於有很大的Buffer能夠扛;但對於直播來講,只有很短期的Buffer,一旦出現抖動就沒法正常觀看,這也是咱們在直播CDN領域遇到的挑戰。
直播特色:
    飯能夠亂吃,話不能亂說,。。。


HLS 實際上是一個 「文本協議」
RTMP、FLV流媒體協議
    流(stream): 數據在網絡上按時間前後次序傳輸和播放的連續音/視頻數據流。之因此能夠按照順序傳輸和播放連續是由於在相似 RTMP、FLV 協議中,每個音視頻數據都被封裝成了包含時間戳信息頭的數據包。而當播放器拿到這些數據包解包的時候可以根據時間戳信息把這些音視頻數據和以前到達的音視頻數據連續起來播放。MP四、MKV 等等相似這種封裝,必須拿到完整的音視頻文件才能播放,由於裏面的單個音視頻數據塊不帶有時間戳信息,播放器不能將這些沒有時間戳信息數據塊連續起來,因此就不能實時的解碼播放。

FLV 理論上(除去網絡延遲外),能夠作到僅僅一個音視頻 tag 的延遲。
相比 RTMP 的優勢:
    能夠在必定程度上避免防火牆的干擾(如:有的機房只容許80端口經過)
    能夠很好的兼容HTTP 302跳轉,作到靈活調度
    可使用HTTPS作加密通道
    很好的支持移動端(Android,IOS)


秒開:
直播協議 http-flv 
視頻關鍵幀
    每一秒視頻至少須要使用 1 個關鍵幀
    https://blog.csdn.net/cds9527/article/details/53302683
轉碼時控制GOP(關鍵幀的週期)
    https://blog.csdn.net/chenyefei/article/details/53975952

非VIP試看三分鐘
server->hash(uid, start, vip?-1:end), cdn check hash

拖拽: start=, 206

瓶頸:
磁盤IO,網絡帶寬,成本

https://wenku.baidu.com/view/0185fca8d1f34693daef3e68.html


https://wenku.baidu.com/view/d6c7f732b90d6c85ec3ac6df.html?from=search
https://wenku.baidu.com/view/a7a26031a6c30c2259019ef5.html?from=search


 

 

上  https://mp.weixin.qq.com/s/AwBwFMWVPtRQBgTTxvlsqw

下  https://mp.weixin.qq.com/s/a9rxbe8Zj8TZGhTVQPBzyQ

 

直播篇

https://mp.weixin.qq.com/s?__biz=MzU1NTEzOTM5Mw==&mid=2247484970&idx=1&sn=8fda2c89885f41ca996d8ff8c09ed4cc&source=41#wechat_redirect

相關文章
相關標籤/搜索