CDN的作用與基本過程

来源:https://www.cnblogs.com/tovictory/archive/2018/03/25/8647507.html
-Advertisement-
Play Games

簡介 CDN,Content Distribute Network,可以直譯成內容分髮網絡,CDN解決的是如何將數據快速可靠從源站傳遞到用戶的問題。用戶獲取數據時,不需要直接從源站獲取,通過CDN對於數據的分發,用戶可以從一個較優的伺服器獲取數據,從而達到快速訪問,並減少源站負載壓力的目的。 動機 ...


簡介

CDN,Content Distribute Network,可以直譯成內容分髮網絡,CDN解決的是如何將數據快速可靠從源站傳遞到用戶的問題。用戶獲取數據時,不需要直接從源站獲取,通過CDN對於數據的分發,用戶可以從一個較優的伺服器獲取數據,從而達到快速訪問,並減少源站負載壓力的目的。

動機

為什麼不進行數據的直接交付,即讓用戶直接從源站獲取數據呢? 
我們常說的互聯網實際上由兩層組成,一層是以TCP/IP為核心的網路層即Internet(網際網路),另一層則是以萬維網WWW為代表的應用層。數據從伺服器端交付到用戶端,至少有4個地方可能會造成網路擁堵。 
1. “第一公裡”,這是指萬維網流量向用戶傳送的第一個出口,是網站伺服器接入互聯網的鏈路。這個出口帶寬決定了一個網站能為用戶提供的訪問速度和併發訪問量。當用戶請求量超出網站的出口帶寬,就會在出口處造成擁塞。 
2. “最後一公裡”,萬維網流量向用戶傳送的最後一段鏈路,即用戶接入互聯網的鏈路。用戶接入的帶寬影響用戶接收流量的能力。隨著電信運營商的大力發展,用戶的接入帶寬得到了很大改善,“最後一公裡”問題基本得到解決。 
3. ISP互聯,即網際網路服務提供商之間的互聯,比如中國電信和中國聯通兩個網路運營商之間的互聯互通。當某個網站伺服器部署在運營商A的機房,運營商B的用戶要訪問該網站,那就必須經過A、B之間的互聯互通點進行跨網訪問。從互聯網的架構來看,不同運營商之間的互聯互通帶寬,對任何一個運營商網路流量來說,占比都非常小。因此,這裡也通常是網路傳輸的擁堵點。 
4. 長途骨幹傳輸。首先是長距離傳輸時延問題,其次是骨幹網路的擁塞問題,這些問題都會造成萬維網流量傳輸的擁堵。 
從以上對於網路擁堵的情況分析,如果網路上的數據都使用從源站直接交付到用戶的方法,那麼將極有可能會出現訪問擁塞的情況。 
如果能有一種技術方案,將數據緩存在離用戶最近的地方,使用戶以最快的速度獲取,那這對於減少網站的出口帶寬壓力,減少網路傳輸的擁堵情況,將起到很大的作用。CDN正是這樣一種技術方案。

基本過程

用戶通過瀏覽器訪問傳統的(沒有使用CDN)網站的過程如下。 
沒有使用CDN的網站訪問過程 
1. 用戶在瀏覽器中輸入要訪問的功能變數名稱。 
2. 瀏覽器向DNS伺服器請求對該功能變數名稱的解析。 
3. DNS伺服器返回該功能變數名稱的IP地址給瀏覽器。 
4. 瀏覽器使用該IP地址向伺服器請求內容。 
5. 伺服器將用戶請求的內容返回給瀏覽器。

如果使用了CDN,則其過程會變成以下這樣。 
使用了CDN的網站訪問過程 
1. 用戶在瀏覽器中輸入要訪問的功能變數名稱。 
2. 瀏覽器向DNS伺服器請求對功能變數名稱進行解析。由於CDN對功能變數名稱解析進行了調整,DNS伺服器會最終將功能變數名稱的解析權交給CNAME指向的CDN專用DNS伺服器。 
3. CDN的DNS伺服器將CDN的負載均衡設備IP地址返回給用戶。 
4. 用戶向CDN的負載均衡設備發起內容URL訪問請求。 
5. CDN負載均衡設備會為用戶選擇一臺合適的緩存伺服器提供服務。 
選擇的依據包括:根據用戶IP地址,判斷哪一臺伺服器距離用戶最近;根據用戶所請求的URL中攜帶的內容名稱,判斷哪一臺伺服器上有用戶所需內容;查詢各個伺服器的負載情況,判斷哪一臺伺服器的負載較小。 
基於以上這些依據的綜合分析之後,負載均衡設置會把緩存伺服器的IP地址返回給用戶。 
6. 用戶向緩存伺服器發出請求。 
7. 緩存伺服器響應用戶請求,將用戶所需內容傳送到用戶。 
如果這台緩存伺服器上並沒有用戶想要的內容,而負載均衡設備依然將它分配給了用戶,那麼這台伺服器就要向它的上一級緩存伺服器請求內容,直至追溯到網站的源伺服器將內容拉取到本地。

總結

在網站和用戶之間引入CDN之後,用戶不會有任何與原來不同的感覺。 
使用CDN服務的網站,只需將其功能變數名稱的解析權交給CDN的負載均衡設備,CDN負載均衡設備將為用戶選擇一臺合適的緩存伺服器,用戶通過訪問這台緩存伺服器來獲取自己所需的數據。 
由於緩存伺服器部署在網路運營商的機房,而這些運營商又是用戶的網路服務提供商,因此用戶可以以最短的路徑,最快的速度對網站進行訪問。因此,CDN可以加速用戶訪問速度,減少源站中心負載壓力。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 關於cas-server的安裝、部署網上教程很多。但是使用Cas,只通過部署時修改配置是無法滿足產品需求的,因此需要我們改造Cas。本文講解如何使用maven的overlay無侵入的改造Cas。 什麼是maven的overlay? overlay可以把多個項目war合併成為一個項目,並且如果項目存在 ...
  • 微服務/SpringCloud/SpringMVC/Spring Boot/SpringCloud微服務基礎 ...
  • WebMagic的結構分為Downloader、PageProcessor、Scheduler、Pipeline四大組件,並由Spider將它們彼此組織起來。這四大組件對應爬蟲生命周期中的下載、處理、管理和持久化等功能 PageProcessor 需要自己寫 Scheduler 除非項目有一些特殊的 ...
  • 電腦網路中比較中要的無非就是 TCP/IP 協議棧,以及應用層的 HTTP 和 HTTPS 。 前幾天一直炒的的比較火的就是 HTTP/2.0 了,但是其實 HTTP/2.0 早在2015年的時候就已經出來了,並且這個版本是基於 Google 公司的 SPDY 協議發佈的,其實說白了就是用的 SP ...
  • 我們知道哈希表是一種非常高效的數據結構,設計優良的哈希函數可以使其上的增刪改查操作達到O(1)級別。Java為我們提供了一個現成的哈希結構,那就是HashMap類,在前面的文章中我曾經介紹過HashMap類,知道它的所有方法都未進行同步,因此在多線程環境中是不安全的。為此,Java為我們提供了另外一 ...
  • 有一句段子流傳很久。 我精通各種語言的hello world !。 因為比如python3、c語言和javascript與學習網路安全關係非常大,所以說,對這幾門語言的關註比較多。 但是,在kali上學習的時候有一些東西非常值得註意,否則非常的耽誤時間,因為在這上面白白浪費了幾個小時的代價,所以說, ...
  • 在上章17.C++-string字元串類(詳解)學習了string類,發現可以通過[ ]重載操作符來訪問每個字元。 比如: 接下來,我們來自己寫個[ ]重載操作符,來模擬string類 運行列印: 函數對象 函數對象是指該對象具備函數的行為 函數對象,是通過()調用操作符聲明得到的,然後便能通過函數 ...
  • 學著寫了一下,終於搞定了,順便分享一下!taglib是tp框架自定義標簽功能,如果你用過cms,肯定見過類似: 或者: 這樣的操作,這對於開發工作是挺方便的,所以覺得有必要看下tp的taglib,教程如下:1 、在common(我是在common,你自己看,反正是用命名空間載入)里新建目錄tagli ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...