cdn訪問流程
『壹』 什麼是CDN和CDN的工作原理
CDN的全稱是Content Delivery Network,即內容分發網路。其目的是通過在現有的Internet中增加一層新的網路架構,將網站的內容發布到最接近用戶的網路"邊緣",使用戶可以就近取得所需的內容,解決Internet網路擁擠的狀況,提高用戶訪問網站的響應速度。從技術上全面解決由於網路帶寬小、用戶訪問量大、網點分布不均等原因所造成的用戶訪問網站響應速度慢的問題。 內容分發網路採用智能路由和流量管理技術,及時發現能夠給訪問者提供最快響應的加速節點,並將訪問者的請求轉發到該加速節點,由該加速節點提供內容服務。利用內容分發與復制機制,CDN客戶不需要改動原來的網站結構,只需修改少量的DNS配置,就可以加速網路的響應速度。 當用戶訪問了使用CDN服務的網站時,域名解析請求最終由重定向DNS負責處理。它通過一組預先定義好的策略(如內容類型、地理區域、網路負載狀況等),將當時能夠最快響應用戶的節點地址提供給用戶,使用戶可以得到快速的服務。同時,它還與分布在不同地點的所有CDN節點保持通信,搜集各節點的健康狀態,確保不將用戶的請求分配到任何一個已經不可用的節點上。而網宿CDN還具有在網路擁塞和失效情況下,能擁有自適應調整路由的能力。 使用了CDN服務後,用戶的訪問流程如下圖所示: 圖CDN用戶訪問流程圖 ☆用戶向瀏覽器提供要訪問網站的域名,域名解析的請求被發往網站的DNS伺服器; ☆由於網站的DNS伺服器對此域名的解析設置了CNAME,請求被指向CDN網路中的路由系統; ☆CDN對域名進行智能解析,將響應速度最快的節點IP返回給用戶; ☆瀏覽器在得到實際的IP地址以後,向CDN節點發出訪問請求; ☆由於是第一次訪問,CDN節點將回到源站取用戶請求的數據並發給用戶; ☆當有其他用戶再次訪問同樣內容時,CDN將直接將數據返回給客戶,完成請求/服務過程。 用戶向瀏覽器提供要訪問網站的域名,域名解析的請求被發往網站的DNS伺服器; 由於網站的DNS伺服器對此域名的解析設置了CNAME,請求被指向CDN網路中的路由系統; CDN對域名進行智能解析,將響應速度最快的節點IP返回給用戶; 瀏覽器在得到實際的IP地址以後,向CDN節點發出訪問請求; 由於是第一次訪問,CDN節點將回到源站取用戶請求的數據並發給用戶; 當有其他用戶再次訪問同樣內容時,CDN將直接將數據返回給客戶,完成請求/服務過程。 通過以上的分析我們可以看出,CDN服務對網站訪問提供加速的同時,可以實現對普通訪問用戶透明,即加入緩存以後用戶客戶端無需進行任何設置,直接輸入被加速網站原有的域名即可訪問。
『貳』 CDN實現原理簡析
由於用戶訪問源站業務有性能瓶頸,通過cdn技術把源站的內容緩存到多個節點。用戶向源站域名發起請求時,請求會被調度至最接近用戶的服務節點,直接由服務節點直接快速響應,有效降低用戶訪問延遲,提升可用性。
了解cdn需要先了解一下知識點:
說再多也不如實際應用,讓我們從例子中了解dns解析流程
nslookup 是dns解析的命令,server 10.0.0.1是公司內部的dns伺服器的ip. 139.196.3.197是請求域名的ip。
詳細的流程使用dig命令查看
讓我們來一步步分析解析流程:
CNAME 即:別名記錄。這種記錄允許您將多個名字映射到另外一個域名。通常用於同時提供WWW和MAIL服務的計算機。例如,有一台計算機名為「 host.mydomain.com 」(A記錄)。它同時提供WWW和MAIL服務,為了便於用戶訪問服務。可以為該計算機設置兩個別名(CNAME):WWW和MAIL。這兩個別名的全稱就 http://www.mydomain.com/ 和「 mail.mydomain.com 」。實際上他們都指向「 host.mydomain.com 」。
在cdn中實現原理是:給源站域名添加CNMAE,別名為加速節點的域名。當用戶向源站發起請求時,dns伺服器解析源站域名時會發現有CNMAE記錄,這時dns伺服器會向CNAME域名發起請求,請求會被調度至加速節點的域名。
假設您的業務源站域名為 www.test.com ,當域名接入 CDN 開始使用加速服務後,您的用戶發起 HTTP 請求,實際的處理流程如圖所示:
鏈接: https://www.jianshu.com/p/14dede92b02f
『叄』 網站加速之CDN與回源
在常見的請求場景中,往往十之八九都是來自於資源的訪問,那麼如何將伺服器里的資源js.,css,jpg等靜態資源完美的平滑遷移到cdn上,讓cdn應對資源的訪問,從而減輕對伺服器的壓力呢?
CDN+OSS+回源伺服器
1.申請域名
2.獲得一個SSL證書
3.申請一個OSS
第一步:
我們在七牛申請一個OSS對象存儲的空間:
第二步:
將其綁定一個域名:
第三步:
1.等待txt驗證
第四步:
1.等cdn域名驗證通過,將cdn回源到我們開始創建的im-oss空間
至此就完成了cdn與oss的配置,具體流程是 用cdn域名訪問靜態資源後,如cdn伺服器上沒有該資源將立即回源到oss,請求oss對象存儲里的資源,如果oss也沒有該資源,oss將立即回源訪問我們的原始伺服器抓取文件並存儲到oss,並緩存到cdn伺服器
『肆』 CDN實現原理
CDN實現原理
像這個問題,我的理解是這樣的:
(一)
1.用戶是通過域名來訪問網站的,然後各地用戶的請求會被調配到當地的CDN節點。
2.CDN節點會從真實的源網站拿到內容,再吐給用戶。如果該內容可以緩存,則會根據協議存在CDN一段時間。如果下次有其他用戶再來訪問CDN,就有可能拿到緩存的內容,就直接返回了。
3 如果你有一個小站,經過細心經營,流量慢慢變大,或者你想搞個活動,請求量會比平時多很多。網路可能會被打爆,導致整個網站打開變慢。想擴大帶寬卻發現獨享帶寬很貴,這個時候你可以使用CDN。
4 如果你有一個店鋪,業務慢慢做大,客戶遍布全國甚至全球,你時常收到客戶的抱怨,你的網站在某個地區打開很慢。那麼你可以使用CDN,可在阿里雲平台了解辦理。
(二)
1、解決Internet網路擁擠的狀況以及被同行DDOS攻擊的困擾。
2、提高用戶訪問網站的響應速度。
3、從技術上全面解決由於網路帶寬小、用戶訪問量大、節點分流不均等原因所造成的用戶訪問網站響應速度慢的問題。
網路流量分流(CDN)是一種新型的網路構建方式,它是為能在傳統的IP網發布寬頻豐富媒體而特別優化的網路覆蓋層;而從廣義的角度,CDN代表了一種基於質量與秩序的網路服務模式。
簡單地說,網路流量分流(CDN)是一個經策略性部署的整體系統,包括分布式存儲、負載均衡、網路請求的重定向和內容管理4個要件,而內容管理和全局的網路流量管理是CDN的核心整體。
『伍』 CDN的工作原理和過程
CDN一種比較重要的優化手段就是和DNS結合,讓用戶訪問延遲最小的節點。
一種比較簡單的方法是基於地理位置的routing,即,對於DNS請求總是返回距離請求者最近的節點。實現方法很多,不過最終都依賴於一個CIDER到地理位置的表。
這里的地理位置,可以是經緯度,也可以是就近城市的代號。
DNS伺服器,接收到請求之後,會根據用戶IP找到最匹配的一項,並且計算距離這個用戶最近的Edge伺服器,將這個最優點的IP返回給用戶。
這種方法並不是最優的。因為地理位置上最近的兩個點,延遲可能反而很高。比如歐洲某些國家到美國東海岸的延時可能相當小。
或者某個網路服務提供商內部延遲比較小,北美自己的教育網內部延遲比較小,等等。
還有就是根據用戶AS號碼和AS之間的樣本延遲來估計延遲的。這種做法比較復雜:比如,我有很多分布在世界各地的主機,這些主機之間可以周期性的計算延遲,這樣就能動態的獲得AS-AS之間的延遲。由於網路的特殊性質,這種方法比起前一種要准確得多。
DNS是用戶請求的第一步,所以針對DNS查詢結果的優化是一個很重要的課題。
DNS對於CDN還有其他功用,比如負載均衡(load balancing)(使用RR或者WRR)和DNS failover。我不是很熟悉,就不多說了。
CDN是一種重要的優化方法,它與DNS相結合,使用戶能夠以最小的延遲訪問節點。
一個更簡單的方法是基於地理路由,也就是說,對於DNS請求,總是返回到請求者最近的節點。實現方法有很多,不過最終都依賴於一個CIDER到地理位置的表。
這里的地理位置可以是緯度和經度,也可以是附近城市的代號。
DNS伺服器在收到請求後,根據用戶的IP找到最匹配的項目,並計算出離用戶最近的邊緣伺服器,並將最佳IP返回給用戶。
這種方法不是最佳的。由於地理位置上的兩個最近點,延遲可能非常大。例如,從一些歐洲國家到美國東海岸的延誤可能很小。
或者網路服務提供商的內部延遲相對較小,北美自身教育網路的內部延遲相對較小,等等。
另一種方法是根據用戶as number和as之間的樣本延遲來估計延遲。這種方法更復雜:例如,我在世界各地分布了許多主機,它們可以定期計算這些主機之間的延遲,以便動態地獲得as-as之間的延遲。由於網路的特殊性,該方法比以前的方法更准確。
DNS是用戶請求的第一步,因此DNS查詢結果的優化是一個非常重要的課題。
DNS還具有用於CDN的其他功能,例如負載平衡(使用rr或wrr)和DNS故障轉移。我不太熟悉,我們不要說太多。
CDN使用了DNS的CNAME、edns-client-subnet和負載均衡等技術。
1.CNAME
在用戶訪問某網頁、視頻等資源時,會將域名指向另一個CDN中定義的域名,再解析成另一個IP地址來供客戶端進行訪問,使客戶端訪問時進行加速。
2.edns-client-subnet
智能DNS解析是CDN重要的組成部分,是根據請求用戶對同一域名作出相應不同的解析,因此CDN的調度准確性是依靠DNS智能解析的。
『陸』 什麼是CDNCDN和DNS有哪些關系和區別
一、什麼是CDN?
CDN的全稱是Content Delivery Network,翻譯成中文就是內容分發網路。CDN依靠部署在各地的邊緣伺服器,通過中心平台的負載均衡、內容分發、調度等功能模塊,使用戶就近獲取內容,降低網路延遲,提高訪問速度。簡單來講,CDN是用來進行加速的,它可以讓用戶更快獲得所需的數據。
舉個例子,某個網站的伺服器在北京,如果深圳的用戶想要獲取伺服器上的數據,就需要跨越很遠的距離,由於傳輸速度和路由轉發等因素,就會導致訪問速度非常緩慢。但如果我們在深圳建立一個CDN伺服器,上面緩存了一些伺服器數據,那麼深圳用戶只需要訪問這個CND的伺服器就能獲取相關的內容,這樣速度就提升了很多。
二、什麼是DNS?
要了解cdn就先要了解一下dns。當我們在瀏覽器中輸入一個域名時,就能訪問對應的站點。但實際的情況遠比我們看到的復雜,因為計算機不能直接識別域名,所以必須依靠某種環節將域名翻譯成IP地址才能,這個環節就是DNS。
當我們向DNS伺服器發起解析域名的請求時,DNS伺服器首先會查詢自己的緩存中有沒有該域名,如果緩存中存在該域名,則可以直接返回IP地址。如果緩存中沒有,伺服器則會以遞歸的方式層層訪問。
例如,我們要訪問www..com,首先我們會先向全球13個根伺服器發起請求,詢問com域名的地址,然後再向負責com域名的名稱伺服器發送請求,找到.com,這樣層層遞歸,最終找到我們需要的IP地址。
三、CDN和DNS的區別
上面我們提到CDN實際上提供就是一個就近訪問的功能,但現在有一個問題是,我們如何直到用戶所在的位置並為其分配最佳的CDN節點呢。這就需要用DNS服務進行定位了。
當我們使用DNS服務時,可以根據用戶使用的遞歸伺服器進行定位。但你給我們看到用戶使用的是深圳的遞歸伺服器,那麼就認為該用戶來自深圳,然後調度伺服器就讓該客戶去訪問深圳的CDN伺服器。
但這種調度方式可能存在一個問題,就是用戶的實際IP與遞歸伺服器並不一致。比如我是北京聯通的用戶卻使用了深圳電信的遞歸伺服器,那麼調度伺服器為我分配深圳電信的CDN伺服器,就會產生錯誤的調度。
四、HTTP調度
針對上面的問題,我們還有另一種調度方式——http調度。
當用戶訪問伺服器時,先分析用戶的IP地址,然後伺服器給用戶返回一個302重定向,將離用戶最近的伺服器存在緩存中,用戶再去請求時就能得到最佳的CDN節點。
這種方式定位更加准確,但缺點是需要增加一次額外的HTTP訪問,這樣導致首次訪問的延時比較高。
所以在實際情況中,我們可以將兩種方式結合起來,先通過dns的方式來定位,然後通過http的方式來糾正偏差。
五、緩存的兩種方式
CDN節點中緩存了伺服器上的部分資源。那麼伺服器怎麼去更新CDN節點的緩存呢?
一種方式,是伺服器主動進行緩存的更新,CDN節點被動接受。另一種方式是用戶請求的資源不存在時,CDN節點主動放棄請求,更新緩存,然後將數據返給用戶。
顯然第一種方式存在很多問題,例如很容易產生404等,所以一般採用第二種緩存方式。
六、CDN工作流程
當用戶請求一個文件時,CDN的工作過程如下:
1.DNS請求當地local DNS
2.當地local DNS遞歸地查詢伺服器的gslb
3.伺服器根據local DNS 分配最佳節點,返回IP
4.用戶獲得最佳接入IP,訪問最佳節點。
5.如果該節點沒有用戶想要獲取的內容,則通過內部路由訪問上一節點,直到找到文件或到達源站為止。
6.CDN節點緩存該數據,下次請求該文件時可以直接返回。