肖蓉 中興通訊股份有限公司
人們通過網(wǎng)絡(luò)就可以快速地訪問各類資源,但用戶便捷訪問的背后確是內(nèi)容供應(yīng)商的技術(shù)挑戰(zhàn)在傳統(tǒng)的模式中,供應(yīng)商一般通過簡單增加服務(wù)器數(shù)量來提高并發(fā)量問題,但在當(dāng)前的互聯(lián)網(wǎng)發(fā)展形勢下,這種簡單的處理方式顯然會帶來巨額的成本,并且直接導(dǎo)致系統(tǒng)的不可維護(hù)性。為了解決該問題,內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Distribution Network, CDN)技術(shù)應(yīng)運(yùn)而生。
CDN 是一種分布式服務(wù)器網(wǎng)絡(luò)系統(tǒng),即組成該系統(tǒng)的硬件服務(wù)器可以位于全球的和個(gè)角落,只要通過網(wǎng)絡(luò)實(shí)現(xiàn)互連,就可以實(shí)現(xiàn)將源服務(wù)器的資源按照一定的規(guī)則有選擇性地復(fù)制到其它邊緣服務(wù)器上,邊緣服務(wù)器的選擇主要依賴于先進(jìn)的負(fù)載均衡技術(shù)。用戶在訪問網(wǎng)絡(luò)資源時(shí),系統(tǒng)會自動為用戶定向到網(wǎng)絡(luò)延遲最小的服務(wù)器上,使用戶可以在最短的時(shí)間內(nèi)取得所需要的資源。CDN 技術(shù)在原理上較簡單,然而要實(shí)現(xiàn)高性能訪問仍有很大難度,它涉及到負(fù)載均衡、內(nèi)容分發(fā)、存儲管理等許多技術(shù)難點(diǎn)。CDN一般按照三級架構(gòu)進(jìn)行部署,分別是中心層、區(qū)域?qū)雍瓦吘墝?,其中中心層和區(qū)域?qū)佑址Q為骨干節(jié)點(diǎn),邊緣層又稱為邊緣節(jié)點(diǎn)。節(jié)點(diǎn)是CDN 的基本單元,由緩存設(shè)備和本地主機(jī)構(gòu)成。
在互聯(lián)網(wǎng)發(fā)展的初期階段,由于網(wǎng)絡(luò)資源不多,用戶也較少,通常只需一臺或若干臺服務(wù)器都可以滿足訪問需求。隨著網(wǎng)絡(luò)的發(fā)展,內(nèi)容和用戶量都在邊翻增長,人們不得不提高服務(wù)器配置并增加服務(wù)器數(shù)量來應(yīng)對海量的訪問請求,但這又帶來了網(wǎng)絡(luò)堵塞的問題。后來提出了邊緣緩存技術(shù),將一些頻繁訪問的資源存儲到邊緣服務(wù)器上并放置到緩存空間中,可以大大提高系統(tǒng)的性能。
內(nèi)容分發(fā)可以通過對網(wǎng)絡(luò)內(nèi)容傳輸?shù)膭討B(tài)重構(gòu)來平衡分發(fā)網(wǎng)絡(luò)的壓力,從其功能布局的角度上看,CDN 中包括初始服務(wù)器、緩存服務(wù)器、重定向服務(wù)器、內(nèi)容管理服務(wù)器和內(nèi)容交換服務(wù)器等,其中初始服務(wù)器是內(nèi)容的初始來源,緩存服務(wù)器可以將部分內(nèi)容緩起來,重定向服務(wù)器將用戶的訪問指向最近的服務(wù)器,內(nèi)容交換服務(wù)器本身不提供任何內(nèi)容,它的主要功能是控制緩存服務(wù)器之間的負(fù)載均衡。顯然,在CDN 網(wǎng)絡(luò)中,除了要對用戶請求進(jìn)行重定向之外,還需要在內(nèi)容分發(fā)過程中進(jìn)行負(fù)載均衡的控制,這是內(nèi)容分發(fā)網(wǎng)絡(luò)的重要優(yōu)點(diǎn),也是內(nèi)容分發(fā)技術(shù)的應(yīng)有之義。
靜態(tài)負(fù)載均衡是指不主動通過程序?qū)φ埱筮M(jìn)行分發(fā)控制,而是將請求按照順序依次分發(fā)到每一臺服務(wù)器上,不斷循環(huán),使每臺服務(wù)器都有相同的機(jī)會受到訪問,從而將流量分?jǐn)偟矫颗_服務(wù)器上,實(shí)現(xiàn)負(fù)載的均衡。顯然,這種方法做了一個(gè)假設(shè),即每臺服務(wù)器的性能都是完全一致的。靜態(tài)負(fù)載均衡算法雖然原理簡單,實(shí)現(xiàn)方便,但由于每臺服務(wù)器的性能不可能真的完全一致,甚至是由大量不同型號的服務(wù)器組成,請求過程中消耗的資源也是很難準(zhǔn)確估計(jì)的,很難真正維持各服務(wù)器之間的負(fù)載平衡。為了提高這種簡單的靜態(tài)負(fù)載均衡的適應(yīng)范圍,本文提出了一種改進(jìn)型的加權(quán)輪詢算法。
所謂加權(quán)輪詢,是指在輪詢的過程中,并不按照順序依次給每臺服務(wù)器發(fā)送請求,而是根據(jù)每臺服務(wù)器的性能,為其指定一個(gè)權(quán)值,服務(wù)器綜合性能越好,權(quán)值就越高。在有訪問請求進(jìn)入時(shí),通過查詢當(dāng)前空閑的服務(wù)器中權(quán)值最大的服務(wù)器,將請求轉(zhuǎn)發(fā)到該服務(wù)器上。
顯然,通過權(quán)值的引入,靜態(tài)負(fù)載均衡算法的性能得到了明顯的改善,各臺服務(wù)器不再無差別地承擔(dān)訪問請求,而是“能者多勞”,最大程度地發(fā)揮了集群的綜合性能。然而,這種算法仍然屬于靜態(tài)算法,每臺服務(wù)器的權(quán)值是保持不變的。實(shí)際上,計(jì)算機(jī)的性能會隨著使用時(shí)間的延長而下降,并且某些計(jì)算機(jī)在處理其它任務(wù)時(shí),其執(zhí)行請求的能力也會相應(yīng)下降。因此,本文又繼續(xù)對這種算法進(jìn)行了優(yōu)化,采用了一種動態(tài)負(fù)載均衡算法。
在動態(tài)負(fù)載均衡算法中,首先仍然假設(shè)每臺服務(wù)器的性能都是一樣的,但是將其當(dāng)前活動的連接數(shù)記錄下來,當(dāng)有新的請求進(jìn)入時(shí),優(yōu)先將該請求轉(zhuǎn)發(fā)給連接數(shù)最少的服務(wù)器,同時(shí)該服務(wù)器連接數(shù)加1,以表征其負(fù)載變化水平。顯然,只通過服務(wù)器的活躍連接數(shù)來選擇服務(wù)器也是有缺陷的,因?yàn)闆]有考慮到每臺服務(wù)器的性能區(qū)別。實(shí)際上,有些計(jì)算機(jī)雖然連接數(shù)不多,但由于其自身的性能比較差,因此實(shí)際上不適宜繼續(xù)接受新的請求。而有些計(jì)算機(jī)雖然連接數(shù)比較大,但由于其性能較好,因此還可以繼續(xù)接受更多的請求。為此,本文對該算法進(jìn)行了改進(jìn),提出了一種加權(quán)動態(tài)負(fù)載均衡算法。
所謂動態(tài)負(fù)載均衡,是指在內(nèi)容分發(fā)的過程中,并不僅僅按照最小連接數(shù)給每臺服務(wù)器發(fā)送請求,而是綜合考慮每臺服務(wù)器的性能,為其指定一個(gè)權(quán)值,服務(wù)器綜合性能越好,權(quán)值就越高。在有訪問請求進(jìn)入時(shí),通過查詢每臺服務(wù)器中的權(quán)值,并與最小連接數(shù)相乘,所得的積最小者,將成為執(zhí)行此次請求的服務(wù)器。
顯然,通過權(quán)值的引入,動態(tài)負(fù)載均衡算法的性能得到了明顯的改善,各臺服務(wù)器不再只依據(jù)最小連接數(shù)來承擔(dān)訪問請求,而同樣是“能者多勞”,最大程度地發(fā)揮了集群的綜合性能。實(shí)際上,計(jì)算機(jī)的性能會隨著使用時(shí)間的延長而下降,并且某些計(jì)算機(jī)在處理其它任務(wù)時(shí),其執(zhí)行請求的能力也會相應(yīng)下降。因此,這種加權(quán)動態(tài)負(fù)載均衡算法仍然有很大的改進(jìn)空間,本文限于篇幅不再深入探討。
為了驗(yàn)證本文提出的加權(quán)動態(tài)負(fù)載均衡算法的性能,本文將該算法應(yīng)用于某機(jī)房的CDN 應(yīng)用系統(tǒng)中進(jìn)行測試。該CDN 系統(tǒng)共有1 臺負(fù)載調(diào)度服務(wù)器和3 臺內(nèi)容服務(wù)器,通過一臺普通PC 機(jī)作為客戶端進(jìn)行測試。其中調(diào)度服務(wù)器內(nèi)運(yùn)行了負(fù)載指標(biāo)統(tǒng)計(jì)和負(fù)載調(diào)度兩個(gè)子系統(tǒng),實(shí)現(xiàn)對3 臺內(nèi)容服務(wù)器的高效調(diào)度。測試客戶端用于模擬不同的訪問壓力,從而觀察加權(quán)動態(tài)負(fù)載均衡算法的響應(yīng)效率。
所有服務(wù)器均安裝了Linux SUSE12 操作系統(tǒng),具有IP 虛擬(IP Virtual Server,IPVS)服務(wù)器功能,采用直接路由模式,然后添加一個(gè)節(jié)點(diǎn)對其它節(jié)點(diǎn)進(jìn)行管理。測試方案如下:首先將加權(quán)動態(tài)負(fù)載均衡算法部署到負(fù)載調(diào)度服務(wù)器上,其后在客戶機(jī)上的負(fù)載均衡工具查看并記錄測試數(shù)據(jù),最后依次進(jìn)行10 組測試實(shí)驗(yàn),第一組的并發(fā)量為100,依次遞增至1000。
實(shí)測結(jié)果表明,當(dāng)并發(fā)量小于300 時(shí),加權(quán)動態(tài)負(fù)載均衡算法的性能優(yōu)勢并不明顯,但當(dāng)并發(fā)量增加到500 以上時(shí),該算法的優(yōu)勢開始顯現(xiàn),在1000 并發(fā)量的條件下,算法平均響應(yīng)時(shí)間提高了30%。同時(shí),該算法的平均吞吐量也明顯高于靜態(tài)負(fù)載均衡算法和非加權(quán)動態(tài)負(fù)載均衡算法。因此,在條件相同的情況下,并發(fā)量越高,本文提出的加權(quán)動態(tài)負(fù)載均衡算法性能優(yōu)勢越突出。
隨著互聯(lián)網(wǎng)技術(shù)的繼續(xù)發(fā)展,人類進(jìn)入了更高程度的信息化社會,各種大型網(wǎng)絡(luò)紛紛出現(xiàn),這為CDN 技術(shù)的發(fā)展提供了良好的條件。據(jù)統(tǒng)計(jì),在當(dāng)今社會,全球性的大型網(wǎng)絡(luò)系統(tǒng)在高峰訪問期間可達(dá)億級并發(fā)量,如果訪問速度多延遲一秒,用戶就會損失7%左右,這促使各大網(wǎng)絡(luò)平臺紛紛引進(jìn)先進(jìn)的CDN 技術(shù),并通過負(fù)載均衡設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)性能的最優(yōu)化。采用CDN 技術(shù)可以實(shí)現(xiàn)數(shù)據(jù)的分布式存儲、獲得更小的負(fù)載、更高的可用性、更好的安全性、顯著提高訪問速度,已成為當(dāng)前許多網(wǎng)站系統(tǒng)運(yùn)營商的必然選擇。