CDN能夠使用戶可就近取得所需內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問(wèn)網(wǎng)站的響應(yīng)速度
CDN通過(guò)將網(wǎng)絡(luò)內(nèi)容發(fā)布到靠近用戶的邊緣節(jié)點(diǎn),使不同地域的用戶在訪問(wèn)相同網(wǎng)頁(yè)時(shí)可以就近獲取。這樣既可以減輕源服務(wù)器的負(fù)擔(dān),也可以減少整個(gè)網(wǎng)絡(luò)中的流量分布不均的情況,進(jìn)而改善整個(gè)網(wǎng)絡(luò)性能。所謂的邊緣節(jié)點(diǎn)是CDN服務(wù)提供商經(jīng)過(guò)精心挑選的距離用戶非常近的服務(wù)器節(jié)點(diǎn),僅“一跳”(Single Hop)之遙。用戶在訪問(wèn)時(shí)就無(wú)需再經(jīng)過(guò)多個(gè)路由器,大大減少訪問(wèn)時(shí)間。
從圖4-9可以看出,DNS在對(duì)域名解析時(shí)不再向用戶返回源服務(wù)器的IP,而是返回了由智能CDN負(fù)載均衡系統(tǒng)選定的某個(gè)邊緣節(jié)點(diǎn)的IP。用戶利用這個(gè)IP訪問(wèn)邊緣節(jié)點(diǎn),然后該節(jié)點(diǎn)通過(guò)其內(nèi)部DNS解析得到源服務(wù)器IP并發(fā)出請(qǐng)求來(lái)獲取用戶所需的頁(yè)面,如果請(qǐng)求成功,邊緣節(jié)點(diǎn)會(huì)將頁(yè)面緩存下來(lái),下次用戶訪問(wèn)時(shí)可以直接讀取,而不需要每次都訪問(wèn)源服務(wù)器。
CDN架構(gòu)
淘寶CDN系統(tǒng)用于支持用戶購(gòu)物,尤其是“雙11”光棍節(jié)時(shí)的海量圖片請(qǐng)求。如圖4-10所示,圖片存儲(chǔ)在后臺(tái)的TFS集群中,CDN系統(tǒng)將這些圖片緩存到離用戶最近的邊緣節(jié)點(diǎn)。CDN采用兩級(jí)Cache:L1-Cache以及L2-Cache。用戶訪問(wèn)淘寶網(wǎng)的圖片時(shí),通過(guò)全局調(diào)度系統(tǒng)(Global Load Balancing)調(diào)度到某個(gè)L1-Cache節(jié)點(diǎn)。如果L1-Cache命中,那么直接將圖片數(shù)據(jù)返回用戶;否則,請(qǐng)求L2-Cache節(jié)點(diǎn),并將返回的圖片數(shù)據(jù)緩存到L1-Cache節(jié)點(diǎn)。
如果L2-Cache命中,直接將圖片數(shù)據(jù)返回給L1-Cache節(jié)點(diǎn);否則,請(qǐng)求源服務(wù)器的圖片服務(wù)器集群。每臺(tái)圖片服務(wù)器是一個(gè)運(yùn)行著Nginx的Web服務(wù)器,它還會(huì)在本地緩存圖片,只有當(dāng)本地緩存也不命中時(shí)才會(huì)請(qǐng)求后端的TFS集群,圖片服務(wù)器集群和TFS集群部署在同一個(gè)數(shù)據(jù)中心內(nèi)。
對(duì)于每個(gè)CDN節(jié)點(diǎn),其架構(gòu)如圖4-11所示。從圖中可以看出,每個(gè)CDN節(jié)點(diǎn)內(nèi)部通過(guò)LVS+Haproxy的方式進(jìn)行負(fù)載均衡。其中,LVS是四層負(fù)載均衡軟件,性能好;Haproxy是七層負(fù)載均衡軟件,能夠支持更加靈活的負(fù)載均衡策略。通過(guò)有機(jī)結(jié)合兩者,可以將不同的圖片請(qǐng)求調(diào)度到不同的Squid服務(wù)器。
Squid服務(wù)器用來(lái)緩存Blob圖片數(shù)據(jù)。用戶的請(qǐng)求按照一定的策略發(fā)送給某臺(tái)Squid服務(wù)器,如果緩存命中則直接返回;否則,Squid服務(wù)器首先會(huì)請(qǐng)求源服務(wù)器獲取圖片緩存到本地,接著再將圖片數(shù)據(jù)返回給用戶。數(shù)據(jù)通過(guò)一致性哈希的方式分布到不同的Squid服務(wù)器,使得增加/刪除服務(wù)器只需要移動(dòng)1/n(n為Squid服務(wù)器總數(shù))的對(duì)象。
相比分布式存儲(chǔ)系統(tǒng),分布式緩存系統(tǒng)的實(shí)現(xiàn)要容易很多。這是因?yàn)榫彺嫦到y(tǒng)不需要考慮數(shù)據(jù)持久化,如果緩存服務(wù)器出現(xiàn)故障,只需要簡(jiǎn)單地將它從集群中剔除即可。
1.分級(jí)存儲(chǔ)
分級(jí)存儲(chǔ)是淘寶CDN架構(gòu)的一個(gè)很大創(chuàng)新。由于緩存數(shù)據(jù)有較高的局部性,在Squid服務(wù)器上使用SSD+SAS+SATA混合存儲(chǔ),圖片隨著熱點(diǎn)變化而遷移,最熱門的存儲(chǔ)到SSD,中等熱度的存儲(chǔ)到SAS,輕熱度的存儲(chǔ)到SATA。通過(guò)這樣的方式,能夠很好地結(jié)合SSD的性能和SAS、SATA磁盤的成本優(yōu)勢(shì)。
2.低功耗服務(wù)器定制
淘寶CDN架構(gòu)的另外一個(gè)亮點(diǎn)是低功耗服務(wù)器定制。CDN緩存服務(wù)是IO密集型而不是CPU密集型的服務(wù),因此,選用Intel Atom CPU定制低功耗服務(wù)器,在保證服務(wù)性能的前提下大大降低了整體功耗。
如果您要保證網(wǎng)站訪問(wèn)體驗(yàn)最優(yōu)化,網(wǎng)站訪問(wèn)很熱的靜態(tài)內(nèi)容是非常適合使用CDN的。
-
提升訪問(wèn)速度
使用CDN后全國(guó)的訪問(wèn)速度-平均傳輸速度5.76MB/s
使用CDN前全國(guó)訪問(wèn)速度-平均下載速度590KB/s
- 降低帶寬成本
前面提到,在保證訪問(wèn)效果最優(yōu)的情況下,使用CDN降最大程度的降低帶寬成本和人力維護(hù)成本。 - 減輕源站壓力
使用CDN以后,一個(gè)帶寬峰值100Gbps左右的大型站點(diǎn)基本只需要維護(hù)帶寬峰值在1~2Gbps左右的源站即可。 - 隱藏源站,增強(qiáng)源站抗攻擊能力
由于CDN隱藏了源站的真實(shí)IP以及CDN天然的抗攻擊能力,使用CDN后,源站的安全性會(huì)大幅提升。
文/凝析微雨(簡(jiǎn)書作者)原文鏈接:http://www.lxweimin.com/p/2c6520bd8383著作權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書作者”。