【轉】網路加速原理與方法:靜態CDN、動態CDN、全站加速、GAAP、AIA、CLB跨地域部署

来源:https://www.cnblogs.com/jmcui/archive/2022/11/27/16929991.html
-Advertisement-
Play Games

一、概念辨析:網路延遲與網路波動 (1) 網路延遲 網路延遲是指各式各樣的數據在網路介質中通過網路協議(如TCP/IP)進行傳輸,如果信息量過大不加以限制,超額的網路流量就會導致設備反應緩慢,造成網路延遲。受限於光速,網路延遲總是有一個下限,是無法超越物理極限的。 (2) 網路波動(丟包率) 網路波 ...


一、概念辨析:網路延遲與網路波動

(1) 網路延遲 網路延遲是指各式各樣的數據在網路介質中通過網路協議(如TCP/IP)進行傳輸,如果信息量過大不加以限制,超額的網路流量就會導致設備反應緩慢,造成網路延遲。受限於光速,網路延遲總是有一個下限,是無法超越物理極限的。

(2) 網路波動(丟包率)
網路波動,就是Flipping,一般在廣域網才會提到,是由於線路的不穩定,出現時通時斷或瞬斷的現象。Flipping是會經常出現、不可避免的,這就需要路由協議對這種現象較好地處理,網路設計和調試人員,在設計和設備配置時,也可以採用多種技術,避免這種現象出現,提高網路的容錯能力。

二、加速方案

當前網路加速實現方案和加速產品努力的方向都是:

  1. 儘可能把伺服器放在離玩家物理距離近的地方
  2. 把長距離公網傳輸改為穩定的內網傳輸

方案一:縮短玩家與伺服器間的物理距離

產品 服務商
內容分髮網絡 CDN(靜態CDN服務) 騰訊雲
海外加速 GCD(騰訊雲CDN的海外版) 騰訊雲
CDN(靜態CDN服務) 阿裡雲
CloudFront(靜態+動態內容加速) AWS

不難看出,靜態CDN服務是縮短玩家與伺服器間的物理距離的主流方案。

方案二:把長距離公網傳輸改為穩定的內網傳輸

產品 服務商
全站加速(靜態+動態內容加速) 阿裡雲
CloudFront (靜態+動態內容加速) AWS
GAAP(全球應用加速 ) 騰訊雲
IP應用加速(全球應用加速) 阿裡雲
Anycast公網加速AIA(Anycast) 騰訊雲
Global Accelerator(Anycast) AWS

相比於“縮短玩家與伺服器間的物理距離”,將長距離公網傳輸改為穩定的內網傳輸方案催生下的產品更加多樣,大致可以歸類為動態內容加速全球應用加速Anycast三種。

三、技術方案

(1) 靜態CDN服務

CDN(Content Delivery Network)內容分髮網絡,將網站內容發佈到最接近用戶的邊緣節點,使網民可就近取得所需內容,有效解決互聯網網路擁塞狀況,提高網民訪問的響應速度和成功率。靜態CDN服務以圖片、頁面、js、css、大文件安裝包等靜態文件加速為主。主要原理是通過在現有的Internet中增加一層新的網路架構,將網站的內容發佈到最接近用戶的cache伺服器內,通過DNS負載均衡的技術,判斷用戶來源就近訪問cache伺服器取得所需的內容,解決Internet網路擁塞狀況,提高用戶訪問網站的響應速度,如同提供了多個分佈在各地的加速器,以達到快速、可冗餘的為多個網站加速的目的。

1)解決由於地域、帶寬、運營商接入等問題帶來的跨網訪問問題
2)結合DNS調度系統,將用戶的請求分配至最適合他的節點,提升用戶的訪問速度
3)中心節點收斂回源,降低回源且提升命中率,減輕源站壓力
4)隱藏源站,提供大帶寬接入,降低源站被攻擊的風險
5)提供存儲方案,解決業務線文件存放問題

一般的網站如果伺服器在網通,電信用戶訪問很慢,如果伺服器在電信,網通用戶訪問又很慢,因此國內訪問量較高的網站、直播、視頻平臺,均使用CDN網路加速技術,雖然網站的訪問巨大,但無論在什麼地方訪問都會感覺速度很快。

  • CDN是只對網站的某一個具體的功能變數名稱加速。如果同一個網站有多個功能變數名稱,則訪客訪問加入CDN的功能變數名稱獲得加速效果,訪問未加入CDN的功能變數名稱,或者直接訪問IP地址,則無法獲得CDN效果。
  • CDN的實現需要依賴多種網路技術的支持,其中最主要的包括負載均衡技術、動態內容分發與複製技術、緩存技術等。
  • asp,php,jsp等動態技術做成的頁面將不被CDN緩存,因此面對即時性要求很高的網頁和圖片,可以使用動態頁面,或者採用一個網站兩個功能變數名稱,一個啟用CDN,另外一個功能變數名稱不用CDN,對即時性要求高的頁面和圖片放在不用CDN的功能變數名稱下。

(2) 動態內容加速

所謂的動態內容加速,是指用戶在請求一些動態內容時,如網站中的.asp、.jsp、.php和.cgi介面、API介面等,不直接請求源站,而是由基於地理位置的DNS調度,請求最靠近用戶的雲服務節點,再由雲服務節點通過優化過的傳輸網路(公網,但比普通BGP更優化的鏈路),轉發請求到源站,達到優化和加速的目的。當然這其中有很多其他的傳輸層面的優化,比如訪問鏈路優化、傳輸內容壓縮合併、智能選路、鏈路復用等技術。

  • 我們可以看到,靜態加速和動態加速,都依賴基於地理位置的DNS服務,這類服務,能夠根據用戶的地理位置,返回最優的接入IP,我們稱之為GeoDNS。這種服務在AWS叫Route 53,其他廠商也能提供類似服務。

(3) 全站加速【動態+靜態加速】

當前騰訊、阿裡和AWS的都支持動靜態內容混合加速,即靜態內容直接由邊緣節點(靜態CDN)返回,動態請求走內網代理轉發到源站。AWS更是把動靜態加速直接合併為一個服務Amazon CloudFront,統一計費。

CDN 全站加速和CloudFront
資源類型 僅支持靜態內容加速 支持靜態內容和動態內容同時加速
加速方式 將伺服器上的靜態內容緩存在CDN節點上供用戶就近訪問。 靜態內容使用CDN加速。動態內容通過智能路由、協議優化等動態加速技術快速訪問伺服器源站獲取。
源站適配 建議對伺服器源站的動靜態內容進行分離,靜態內容使用CDN加速,動態內容不使用CDN。 無需對伺服器源站上的資源進行改造,全站加速會智能區分動靜態內容並分別加速。

CVM(Cloud Virtual Machine 雲虛擬機)是普遍的虛擬雲伺服器統稱雲伺服器;ECS(Elastic Compute Service 彈性計算服務)是一個電腦集群多台一起虛擬一個環境,架設了一個雲系統,雲系統可以按需分配CPU記憶體硬碟等資源。VPS(Virtual Private Server 虛擬專用伺服器)是使用一臺伺服器,虛擬一個環境,並架設虛擬系統。主要區別是VPS的宿伺服器如果有硬體或者軟體故障,會導致這個宿主機內的VPS主機全部宕機。ECS不會因為單台宿主機故障導致整體或者某台雲主機宕機。這裡我們可以將ECS理解為vps或站點的伺服器。

(4)全球應用加速GAAP

GAAP的本質,是在加速區域入口和源站區域出口,各部署一套轉發集群,把長距離公網傳輸改為自建的內網傳輸,從而實現加速的效果。

阿裡雲的IP應用加速類似於騰訊雲的全球應用加速 GAAP產品,基於位置的DNS服務支持,按地區返回給用戶最近的接入IP,通過GAAP創建的內網加速傳輸通道把數據轉發到伺服器。

GAAP有一個特點,就是客戶端和服務端,都可以不是騰訊雲的機器,只需要離騰訊雲的節點足夠近即可。這種優勢,大大提升了GAAP的應用場景,當然GAAP的費用比普通的公網帶寬要貴很多,業務是否選擇使用,還需要綜合考慮成本因素。GAAP中經過的節點很多,配置較為複雜,

(5)Anycast 公網加速 AIA

`Anycast 公網加速 AIA`是使用了一個叫`Anycast`的技術。

Anycast又叫任播,是指一個發送方同最近的一組接收方之間的通信。當一個單播地址被分配到多於一個的介面上時,發到該介面的報文被網路路由到由路由協議度量的最近的目標介面上。

騰訊雲的Anycast公網加速 AIA和AWS的Global Accelerator實際上是同樣的產品。在騰訊雲上,Anycast做到的效果是,用戶的公網請求在騰訊雲就近節點進入,提高傳輸環節的質量。本質上還是基於一個公網IP,在定址環節採用任播。原理為,普通的IP是單播定址,全程走公網。如果用Anycast的話,該公網IP用任播形式定址,在騰訊雲的多個節點都發路由,這樣客戶端的包只需要走公網到達最近的騰訊雲節點即可,剩下來的路程是走更有保障的騰訊雲內網。

所以,AIA的本質,也是把長距離公網傳輸改為自建的內網傳輸,從而實現加速的效果。騰訊雲的Anycast IP,可以綁定在雲伺服器上,也可以綁定在CLB(Cloud Load Balancer 負載均衡)上,使用跟普通的公網IP相同,非常簡單。

  • 用途一:將Anycast IP綁定在CLB(負載均衡)上,提供面向玩家的接入服務
  • 用途二:將Anycast IP綁定在NAT網關,用來加速伺服器對外部介面的請求

AIA相比於GAAP,一個顯著的優勢在於部署配置簡單。全局唯一的IP,不需要依賴GeoDNS,後端唯一的服務提供集群,架構清晰,配置容易。但AIA的後端業務,只能是騰訊雲上的機器,無法接入第三方伺服器(補充一點:如果想接入第三方伺服器,可在綁anycast ip的CVM上做轉發代理,可以實現類似混合雲的加速效果)。

總的來說,GAAPAIA都能做到全球加速,但是服務的對象可以有區別,配置複雜程度不同。成本和價格不同。Anycast帶寬可以理解為高級版的BGP帶寬【BGP一般是高級線路進行中轉,而Anycast是直連並且也有加速效果】,用戶通常是本來不做加速,但是又希望帶寬質量更好的。而本來就要做加速的人,會傾向於用GAAP,因為他們希望調度要拿在手裡。

BGP是一種路由協議, Anycast是一種通信方式, AIA是騰訊的產品

(6)CLB跨地域部署

負載均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分發服務,訪問流量經由 CLB 可以自動分配到雲中的多台雲伺服器上,擴展系統的服務能力並消除單點故障。負載均衡支持億級連接和千萬級併發,可輕鬆應對大流量訪問,滿足業務需求。 支持Http,https,UDP,tcp轉發。

在不同的地域創建CLB,後端綁定在相同的雲伺服器上,來實現部分加速效果,有點類似於GAAP。配置起來比GAAP和AIA都麻煩,同樣依賴GeoDNS。

————————————————
版權聲明:本文為CSDN博主「鄧大帥」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/deng_xj/article/details/109679797


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

-Advertisement-
Play Games
更多相關文章
  • 您好,我是湘王,這是我的博客園,歡迎您來,歡迎您再來~ Spring Security使用MySQL保存cookie記錄雖然方便,但是目前更多的主流互聯網應用都是用NoSQL來保存非業務數據的,Spring Security也應該可以實現這個功能。之前Spring Security官方並不支持使用N ...
  • 1,首先創建一個普通的Java項目 2,將項目變為web項目 在項目上單機右鍵-->選擇 Add FrameWorks Support 選擇第一項 web application-->OK 此時項目已經變為web項目,已經可以添加tomcat運行,但是一般web項目都會使用maven管理,所以可以添 ...
  • 代碼1 class Base { public: Base(int data=10):ma(data){ cout<<"Base()"<<endl; } void show(){cout<<"Base Show()"<<endl;} void show(int){cout<<"Base Show(i ...
  • 7. Spring整合Drools 全套代碼及資料全部完整提供,點此處下載 7.1 Spring簡單整合Drools 在項目中使用Drools時往往會跟Spring整合來使用。具體整合步驟如下: 第一步:創建maven工程drools_spring並配置pom.xml <?xml version=" ...
  • Listener監聽器 1.Listener監聽器介紹 Listener監聽器是JavaWeb三大組件之一。JavaWeb三大組件分別是:Servlet程式,Listener監聽器,Filter過濾器。 Listener是JavaEE的規範,即介面。 監聽器的作用是,監聽某種變化(一般就是對象的創建 ...
  • 初始化 Date date = new Date(); 輸出時間字元串 System.out.println(date.toString()); 字母 描述 示例G 紀元標記 ADy 四位年份 2001M 月份 July or 07d 一個月的日期 10h A.M./P.M. (1~12)格式小時 ...
  • 如果只是想簡單地對整個程式做計算統計,通常使用UNIX下的time命令就足夠了。由於我用的是Mac系統,和Linux系統的輸出可能有不同,不過關鍵都是這三個時間:user: 運行用戶態代碼所花費的時間,也即CPU實際用於執行該進程的時間,其他進程和進程阻塞的時間不計入此數字;system: 在內核中... ...
  • 本文author:@愷龍 報錯情況 在一次使用JSP的jstl時候按照正常引入jstl和使用for each標簽出現瞭如下報錯: 分析原因 經過一番調查研究發現原因如下: JavaEE被Oracle捐獻給Apache了。目前最高版本是 JavaEE8; Apache把JavaEE換名了,以後不叫Ja ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...