摘要:在一個節點中,設備和本地負載均衡設備的連接方式有兩種一種是旁路方式,一種是穿越方式。
什么是CDN文章同步于Github Pines-Cheng/blog
CDN(內容分發網絡)全稱是 Content Delivery Network,建立并覆蓋在承載網之上、由分布在不同區域的邊緣節點服務器群組成的分布式網絡,替代傳統以 WEB Server 為中心的數據傳輸模式。
作用是將源內容發布到邊緣節點,配合精準的調度系統;將用戶的請求分配至最適合他的節點,使用戶可以以最快的速度取得他所需的內容,有效解決Internet網絡擁塞狀況,提高用戶訪問的響應速度。
CDN的基本工作過程用戶通過瀏覽器等方式訪問網站的過程如圖所示:
用戶在自己的瀏覽器中輸入要訪問的網站域名。
瀏覽器向 本地DNS服務器 請求對該域名的解析。
本地DNS服務器中如果緩存有這個域名的解析結果,則直接響應用戶的解析請求。
本地DNS服務器中如果沒有關于這個域名的解析結果的緩存,則以遞歸方式向整個DNS系統請求解析,獲得應答后將結果反饋給瀏覽器。
瀏覽器得到域名解析結果,就是該域名相應的服務設備的 IP地址 。
瀏覽器向服務器請求內容。
服務器將用戶請求內容傳送給瀏覽器。
在網站和用戶之間加入 CDN 以后,用戶不會有任何與原來不同的感覺。最簡單的 CDN 網絡有一個 DNS 服務器和幾臺緩存服務器就可以運行了。一個典型的 CDN 用戶訪問調度流程如圖所示:
當用戶點擊網站頁面上的內容URL,經過本地DNS系統解析,DNS 系統會最終將域名的解析權交給 CNAME 指向的 CDN 專用 DNS 服務器。
CDN 的 DNS 服務器將 CDN 的全局負載均衡設備 IP 地址返回用戶。
用戶向 CDN 的全局負載均衡設備發起內容 URL 訪問請求。
CDN 全局負載均衡設備根據用戶 IP 地址,以及用戶請求的內容URL,選擇一臺用戶所屬區域的區域負載均衡設備,告訴用戶向這臺設備發起請求。
基于以下這些條件的綜合分析之后,區域負載均衡設備會向全局負載均衡設備返回一臺緩存服務器的IP地址:
根據用戶 IP 地址,判斷哪一臺服務器距用戶最近;
根據用戶所請求的 URL 中攜帶的內容名稱,判斷哪一臺服務器上有用戶所需內容;
查詢各個服務器當前的負載情況,判斷哪一臺服務器尚有服務能力。
全局負載均衡設備把服務器的 IP 地址返回給用戶。
用戶向緩存服務器發起請求,緩存服務器響應用戶請求,將用戶所需內容傳送到用戶終端。如果這臺緩存服務器上并沒有用戶想要的內容,而區域均衡設備依然將它分配給了用戶,那么這臺服務器就要向它的上一級緩存服務器請求內容,直至追溯到網站的源服務器將內容拉到本地。
DNS 服務器根據用戶 IP 地址,將域名解析成相應節點的緩存服務器IP地址,實現用戶就近訪問。使用 CDN 服務的網站,只需將其域名解析權交給 CDN 的全局負載均衡(GSLB)設備,將需要分發的內容注入 CDN,就可以實現內容加速了。
使用CDN后的http請求處理流程如下圖,其中左邊為DNS解析過程,右邊為內容訪問過程:
CDN的功能架構CDN基于這樣的原理:
挑選最優設備為用戶提供服務;
如果某個內容被很多用戶所需要,它就被緩存到距離用戶最近的節點中。
CDN 公司在整個互聯網上部署數以百計的CDN服務器(Cache),這些服務器通常在運營商的 IDC (互聯網數據中心Internet Data Center)中,盡量靠近接入網絡和用戶。CDN在Cache中復制內容,當內容的提供者更新內容時,CDN 向Cache重新分發這些被刷新的內容。CDN提供一種機制,當用戶請求內容時,該內容能夠由以最快速度交付的Cache 來向用戶提供,這個挑選"最優"的過程就叫做負載均衡。被選中的最優 Cache 可能最靠近用戶,或者有一條與用戶之間條件最好的路徑。
從功能上劃分,典型的 CDN 系統架構由分發服務系統、負載均衡系統和運營管理系統三大部分組成,如圖所示:
該系統的主要作用是實現將內容從內容源中心向邊緣的推送和存儲,承擔實際的內容數據流的全網分發工作和面向最終用戶的數據請求服務。分發服務系統最基本的工作單元就是許許多多的 Cache設備(緩存服務器),Cache 負責直接響應最終用戶的訪問請求,把緩存在本地的內容快速地提供給用戶。同時 Cache 還負責與源站點進行內容同步,把更新的內容以及本地沒有的內容從源站點獲取并保存在本地。
一般來說,根據承載內容類型和服務種類的不同,分發服務系統會分為多個子服務系統,如網頁加速子系統、流媒體加速子系統、應用加速子系統等。每個子服務系統都是一個分布式服務集群,由一群功能近似的、在地理位置上分布部署的 Cache 或 Cache 集群組成,彼此間相互獨立。每個子服務系統設備集群的數量根據業務發展和市場需要的不同,少則幾十臺,多則可達上萬臺,對外形成一個整體,共同承擔分發服務工作。Cache 設備的數量、規模、總服務能力是衡量一個 CDN 系統服務能力的最基本的指標。
分發服務系統在承擔內容的更新、同步和響應用戶需求的同時,還需要向上層的調度控制系統提供每個Cache設備的健康狀況信息、響應情況,有時還需要提供內容分布信息,以便調度控制系統根據設定的策略決定由哪個Cache(組)來響應用戶的請求最優。
負載均衡系統是一個 CDN 系統的神經中樞,主要功能是負責對所有發起服務請求的用戶進行訪問調度,確定提供給用戶的最終實際訪問地址。大多數 CDN 系統的負載均衡系統是分級實現的,這里以最基本的兩級調度體系進行簡要說明。一般而言,兩級調度體系分為全局負載均衡(GSLB)和本地負載均衡(SLB)。
其中,全局負載均衡(GSLB)主要根據 用戶就近性原則,通過對每個服務節點進行"最優"判斷,確定向用戶提供服務的 Cache 的物理位置。最通用的 GSLB 實現方法是基于DNS解析的方式實現,也有一些系統采用了應用層重定向等方式來解決。本地負載均衡(SLB)主要負責節點內部的設備負載均衡,當用戶請求從 GSLB 調度到 SLB 時,SLB 會根據節點內各 Cache 設備的實際能力或內容分布等因素對用戶進行重定向,常用的本地負載均衡方法有基于4層調度、基于7層調度、鏈路負載調度等。
CDN的運營管理系統與一般的電信運營管理系統類似,分為運營管理和網絡管理兩個子系統。
運營管理子系統是CDN系統的業務管理功能實體,負責處理業務層面的與外界系統交互所必需的一些收集、整理、交付工作,包含客戶管理、產品管理、計費管理、統計分析等功能。
網絡管理子系統實現對CDN系統的網絡設備管理、拓撲管理、鏈路監控和故障管理,為管理員提供對全網資源進行集中化管理操作的界面,通常是基于Web方式實現的。
CDN的部署架構CDN 系統設計的首要目標是盡量減少用戶的訪問響應時間,為達到這一目標,CDN 系統應該盡量將用戶所需要的內容存放在距離用戶最近的位置。也就是說,負責為用戶提供內容服務的 Cache 設備應部署在物理上的網絡邊緣位置,我們稱這一層為CDN邊緣層。CDN 系統中負責全局性管理和控制的設備組成 中心層,中心層同時保存著最多的內容副本,當邊緣層設備未命中時,會向中心層請求,如果在中心層仍未命中,則需要中心層向源站回源。
不同CDN系統設計之間存在差異,中心層可能具備用戶服務能力,也可能不直接提供服務,只向下級節點提供內容。如果CDN網絡規模較大,邊緣層設備直接向中心層請求內容或服務會造成中心層設備壓力過大,就要考慮在邊緣層和中心層之間部署一個區域層,負責一個區域的管理和控制,也保存部分內容副本供邊緣層訪問。
如圖是一個典型的CDN系統三級部署示意圖:
節點是 CDN 系統中最基本的部署單元,一個CDN系統由大量的、地理位置上分散的 POP(point-of-presence)節點組成,為用戶提供就近的內容訪問服務。
CDN 節點網絡主要包含 CDN 骨干點和 POP 點。CDN 骨干點和 CDN POP 點在功能上不同。
中心和區域節點一般稱為骨干點,主要作為內容分發和邊緣未命中時的服務點;
邊緣節點又被稱為POP(point-of-presence)節點,CDN POP點主要作為直接向用戶提供服務的節點。
但是,從節點構成上來說,無論是CDN骨干點還是CDN POP點,都由Cache設備和本地負載均衡設備構成。
在一個節點中,Cache設備和本地負載均衡設備的連接方式有兩種:一種是旁路方式,一種是穿越方式。
如圖所示:
在穿越方式下,SLB(Server Load Balancer,負載均衡 一般由 L4-7 交換機實現,SLB 向外提供可訪問的 公網IP地址(VIP,每臺Cache僅分配私網IP地址,該臺SLB下掛的所有Cache構成一個服務組。所有用戶請求和媒體流都經過該SLB設備,再由SLB設備進行向上向下轉發。SLB實際上承擔了 NAT(Network Address Translation,網絡地址轉換)功能,向用戶屏蔽了Cache設備的IP地址。這種方式是CDN系統中應用較多的方式,優點是具有較高的安全性和可靠性,缺點是L4-7交換機通常較為昂貴。另外,當節點容量大時,L4-7交換機容易形成性能瓶頸。不過近年來,隨著 LVS (Linux Virtual Server,即Linux虛擬服務器) 等技術的興起,SLB設備價格有了大幅下降。
在旁路方式下,有兩種 SLB 實現方式:
在早期,這種 SLB 一般由軟件實現。SLB 和 Cache 設備都具有公共的IP地址,SLB 和 Cache 構成并聯關系。用戶需要先訪問 SLB 設備,然后再以重定向的方式訪問特定的 Cache。這種實現方式簡單靈活,擴展性好,缺點是安全性較差,而且需要依賴于應用層重定向。
隨著技術的發展,L4-7 交換機也可采用旁路部署(負載均衡硬件設備的部署)方式,旁掛在路由交換設備上,數據流量通過三角傳輸方式進行。
在CDN系統中,不僅分發服務系統和調度控制系統是分布式部署的,運營管理系統也是分級分布式部署的,每個節點都是運營管理數據的生成點和采集點,通過日志和網管代理等方式上報數據。可以說,CDN本身就是一個大型的具有中央控制能力的分布式服務系統。
為什么需要CDN當下的互聯網應用都包含大量的靜態內容,但靜態內容以及一些準動態內容又是最耗費帶寬的,特別是針對全國甚至全世界的大型網站,如果這些請求都指向主站的服務器的話,不僅是主站服務器受不了,單端口500M左右的帶寬也扛不住,所以大多數網站都需要CDN服務。
根本上的原因是,訪問速度對互聯網應用的用戶體驗、口碑、甚至說直接的營收都有巨大的影響,任何的企業都渴望自己站點有更快的訪問速度。而HTTP傳輸時延對web的訪問速度的影響很大,在絕大多數情況下是起決定性作用的,這是由TCP/IP協議的一些特點決定的。物理層上的原因是光速有限、信道有限,協議上的原因有丟包、慢啟動、擁塞控制等。
這就是你使用CDN的第一個也是最重要的原因:為了加速網站的訪問。
除了加速網站的訪問之外,CDN還有一些作用:
為了實現跨運營商、跨地域的全網覆蓋
互聯不互通、區域ISP地域局限、出口帶寬受限制等種種因素都造成了網站的區域性無法訪問。CDN加速可以覆蓋全球的線路,通過和運營商合作,部署IDC資源,在全國骨干節點商,合理部署CDN邊緣分發存儲節點,充分利用帶寬資源,平衡源站流量。阿里云在國內有500+節點,海外300+節點,覆蓋主流國家和地區不是問題,可以確保CDN服務的穩定和快速。
為了保障你的網站安全
CDN的負載均衡和分布式存儲技術,可以加強網站的可靠性,相當無無形中給你的網站添加了一把保護傘,應對絕大部分的互聯網攻擊事件。防攻擊系統也能避免網站遭到惡意攻擊。
為了異地備援
當某個服務器發生意外故障時,系統將會調用其他臨近的健康服務器節點進行服務,進而提供接近100%的可靠性,這就讓你的網站可以做到永不宕機。
為了節約成本
投入使用CDN加速可以實現網站的全國鋪設,你根據不用考慮購買服務器與后續的托管運維,服務器之間鏡像同步,也不用為了管理維護技術人員而煩惱,節省了人力、精力和財力。
為了讓你更專注業務本身
CDN加速廠商一般都會提供一站式服務,業務不僅限于CDN,還有配套的云存儲、大數據服務、視頻云服務等,而且一般會提供7x24運維監控支持,保證網絡隨時暢通,你可以放心使用。并且將更多的精力投入到發展自身的核心業務之上。
適用場景 網站站點/應用加速站點或者應用中大量靜態資源的加速分發,建議將站點內容進行動靜分離,動態文件可以結合云服務器ECS,靜態資源如各類型圖片、html、css、js文件等,建議結合 對象存儲OSS 存儲海量靜態資源,可以有效加速內容加載速度,輕松搞定網站圖片、短視頻等內容分發。
視音頻點播/大文件下載分發加速支持各類文件的下載、分發,支持在線點播加速業務,如mp4、flv視頻文件或者平均單個文件大小在20M以上,主要的業務場景是視音頻點播、大文件下載(如安裝包下載)等,建議搭配對象存儲OSS使用,可提升回源速度,節約近2/3回源帶寬成本。
視頻直播加速視頻流媒體直播服務,支持媒資存儲、切片轉碼、訪問鑒權、內容分發加速一體化解決方案。結合彈性伸縮服務,及時調整服務器帶寬,應對突發訪問流量;結合媒體轉碼服務,享受高速穩定的并行轉碼,且任務規模無縫擴展。
移動應用加速移動APP更新文件(apk文件)分發,移動APP內圖片、頁面、短視頻、UGC等內容的優化加速分發。提供httpDNS服務,避免DNS劫持并獲得實時精確的DNS解析結果,有效縮短用戶訪問時間,提升用戶體驗。
其他 流量劫持其實,CDN本身就是一種DNS劫持,只不過是良性的。 不同于黑客強制DNS把域名解析到自己的釣魚IP上,CDN則是讓DNS主動配合,把域名解析到臨近的服務器上。
劫持通常分為兩類:
域名劫持,又稱DNS劫持,通常是指域名指向到非正常IP(惡意IP),該惡意IP通過反向代理的方式,在能返回網頁正常內容的情況,可能插入惡意代碼、監聽網民訪問、劫持敏感信息等操作。通常驗證一個域名是否被劫持的方法是PING一個域名,如果發現PING出來的IP不是您的服務器真實IP,則可以確定被劫持了(當然如果使用了知道創宇云安全等安全加速平臺,得到的IP為平臺IP,并非劫持)
數據劫持,通常由電信運營商中某些員工等勾結犯罪分子,在公網中進行數據支持,插入,此類情況極隱蔽,不會改變用戶域名解析IP,而是直接數據流經運營商寬帶時在網頁中挺入內容,此類情況,建議網頁啟用HTTPS加密,可以解決這一問題(通信是加密的,運營商無法插入惡意內容)
某運營商對新浪首頁的廣告強制插入:
如果使用CDN服務時,當源站向CDN返回被劫持的內容時,此時CDN將獲取到的并不是正確的網頁內容(而是經運營商篡改強制植入廣告的頁面),此時可能導致該內容在CDN中長時間緩存,發現這種問題,可以清理CDN緩存后,一般即可恢復正常。
遇到劫持現象,可以向工信部投訴:http://www.chinatcc.gov.cn:80...
可參考:
互聯網黑勢力之流量劫持
流量劫持是如何產生的?
CDN緩存CDN邊緣節點緩存策略因服務商不同而不同,但一般都會遵循http標準協議,通過http響應頭中的 Cache-control: max-age的字段來設置CDN邊緣節點數據緩存時間。
當客戶端向CDN節點請求數據時,CDN節點會判斷緩存數據是否過期,若緩存數據并沒有過期,則直接將緩存數據返回給客戶端;否則,CDN節點就會向源站發出回源請求(back to the source request),從源站拉取最新數據,更新本地緩存,并將最新數據返回給客戶端。
CDN服務商一般會提供基于文件后綴、目錄多個維度來指定CDN緩存時間,為用戶提供更精細化的緩存管理。
CDN緩存時間會對回源率產生直接的影響。若CDN緩存時間較短,CDN邊緣節點上的數據會經常失效,導致頻繁回源,增加了源站的負載,同時也增大的訪問延時;若CDN緩存時間太長,會帶來數據更新時間慢的問題。開發者需要增對特定的業務,來做特定的數據緩存時間管理。
CDN邊緣節點對開發者是透明的,相比于瀏覽器 Ctrl+F5 的強制刷新來使瀏覽器本地緩存失效,開發者可以通過CDN服務商提供的“刷新緩存”接口來達到清理CDN邊緣節點緩存的目的。這樣開發者在更新數據后,可以使用 刷新緩存 功能來強制CDN節點上的數據緩存過期,保證客戶端在訪問時,拉取到最新的數據。
可參考:
清除靜態cdn緩存的研究
深入研究阿里基于Nginx開發的高性能HTTP服務器,已經開源,詳細請了解 The Tengine Web Server
參考CDN技術詳解
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/10962.html
摘要:系統架構原理挑選最優的設備為用戶提供服務即通過負載均衡,挑選離用戶最近或者和用戶之間的路徑最好。緩存被眾多用戶需要的資源到離用戶最近的節點系統的架構架構在年就已經穩定,其架構按照功能可以劃分為分發服務系統,負載均衡系統運營管理系統。 1 CDN 系統架構 CDN 原理: 挑選最優的設備為用戶提供服務 即通過負載均衡,挑選離用戶最近或者和用戶之間的路徑最好。 緩存被眾多用戶需要的資源到...
閱讀 2160·2021-09-04 16:40
閱讀 1451·2021-08-13 15:07
閱讀 3604·2019-08-30 15:53
閱讀 3193·2019-08-30 13:11
閱讀 1068·2019-08-29 17:22
閱讀 1810·2019-08-29 12:47
閱讀 1469·2019-08-29 11:27
閱讀 2221·2019-08-26 18:42