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