摘要: 為了提高代理系統(tǒng)的整體性能,基于內(nèi)部網(wǎng)絡(luò)用戶訪問時(shí)間的局部性和相似性,并結(jié)合現(xiàn)有的分布式緩存系統(tǒng),本文提出了一種新型的分布式代理緩存系統(tǒng)——雙層緩存集群。雙層緩存集群系統(tǒng)分為網(wǎng)內(nèi)集群緩存層和代理集群緩存層,采用雙層代理緩存結(jié)構(gòu),充分利用現(xiàn)有內(nèi)部網(wǎng)絡(luò)資源,分散了代理的負(fù)擔(dān),降低了代理之間的通信開銷,還增強(qiáng)了緩存資源的利用率,提高了用戶請求命中率,降低了代理系統(tǒng)的整體資源消耗。
關(guān)鍵詞:
中圖分類號: TP391.4 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-2163(2011)01-0039-05
0引言
隨著社會經(jīng)濟(jì)的發(fā)展,使用Internet用戶的迅速增多,WWW服務(wù)即World Wide Web的流行,使得網(wǎng)絡(luò)負(fù)載不斷加重。同時(shí),用戶對網(wǎng)絡(luò)的速度和效果愈加重視,對網(wǎng)絡(luò)的訪問質(zhì)量提出了更多的要求,這對互聯(lián)網(wǎng)服務(wù)提供商ISP(Internet Service Provider)提出了更高挑戰(zhàn)。根據(jù)Internet上的統(tǒng)計(jì)資料表明,超過80%的客戶經(jīng)常訪問20%的熱門內(nèi)容,因此構(gòu)建代理、使用緩存是一個(gè)很好的解決思路[1]。
一般的局域網(wǎng)代理比較簡單,在局域網(wǎng)內(nèi)搭建一臺代理服務(wù)器,當(dāng)內(nèi)網(wǎng)的某個(gè)客戶請求某一個(gè)WEB服務(wù)時(shí),首先向代理服務(wù)器發(fā)出請求,如果代理服務(wù)器存在相應(yīng)的緩存副本,就會直接返回給客戶端;否則,則向相應(yīng)的WEB服務(wù)器請求。
構(gòu)建代理可以大大提高請求WEB服務(wù)的效率,如果在局域網(wǎng)構(gòu)建相應(yīng)的代理服務(wù)器,可以有效地節(jié)省IP,保護(hù)局域網(wǎng)的內(nèi)部網(wǎng)絡(luò)安全,容易構(gòu)建全面的審計(jì)功能。但是,隨著網(wǎng)絡(luò)的不斷發(fā)展,眾多的內(nèi)部網(wǎng)絡(luò)例如大學(xué),大公司的局域網(wǎng)等不斷擴(kuò)大,構(gòu)建單一的出口代理,會出現(xiàn)負(fù)載過重、單機(jī)故障等眾多問題。因此,分布式代理緩存的提出無疑有效緩解了這個(gè)問題[2]。
本文主要分析了現(xiàn)有的兩種分布式代理緩存架構(gòu),結(jié)合兩種架構(gòu)的優(yōu)缺點(diǎn),提出了一種新的分布式代理緩存架構(gòu)—雙層緩存集群。該架構(gòu)可以有效地解決現(xiàn)存兩種架構(gòu)的缺陷,并能結(jié)合當(dāng)前內(nèi)網(wǎng)的用戶行為和系統(tǒng)資源做出有效的預(yù)測、分析、協(xié)調(diào)和自適應(yīng),達(dá)到系統(tǒng)資源與用戶請求總體的最優(yōu)。
1兩種分布式緩存模型
1.1ICP(Internet Cache Protocol)緩存模型[3]
對于這個(gè)模型,在整個(gè)緩存系統(tǒng)內(nèi)部,采用ICP協(xié)議來進(jìn)行詢問通信,并處理請求響應(yīng)信息。該協(xié)議廣泛應(yīng)用于Net Cache和Squid等多個(gè)代理軟件中。對于該系統(tǒng)架構(gòu),提取一種典型情況如圖1所示。
從圖1可以看出,整個(gè)緩存系統(tǒng)架構(gòu)的分布層次關(guān)系是樹狀的,Proxy0是根節(jié)點(diǎn),Proxy1到Proxy5是子節(jié)點(diǎn)。相應(yīng)的客戶端向整個(gè)代理系統(tǒng)請求緩存數(shù)據(jù)的時(shí)候,是從最底層的子節(jié)點(diǎn)向上請求,如果該子節(jié)點(diǎn)存在相應(yīng)的數(shù)據(jù),直接返回;否則會向兄弟節(jié)點(diǎn)發(fā)送詢問消息。如果所有的兄弟節(jié)點(diǎn)都沒有,再依次向父節(jié)點(diǎn)請求;若仍沒有,父節(jié)點(diǎn)再向其兄弟節(jié)點(diǎn)請求。依次向上進(jìn)行,最后,若都沒有,再向相應(yīng)的Web服務(wù)器請求數(shù)據(jù)。
這種ICP緩存模型的特點(diǎn)就是通過發(fā)送大量的詢問消息,期待獲取緩存的存儲信息,以及時(shí)向客戶端反饋。
考慮到查詢信息的規(guī)模性,因此,在大規(guī)模內(nèi)部網(wǎng)絡(luò)與大量請求的情況下,對帶寬的消耗是十分嚴(yán)重的,同時(shí)查詢的時(shí)延會增加。極端情況下,假設(shè)客戶端請求的數(shù)據(jù)在整個(gè)分布式緩存系統(tǒng)中不存在,也仍然要發(fā)送大規(guī)模的查詢信息,遍歷所有的節(jié)點(diǎn),顯然效率較低。
1.2緩沖陣列緩存模型[4]
對于此種模型,比較有代表性的就是緩沖陣列協(xié)議模型CARP(Common Access Redundancy Protocol)。針對ISP的詢問式架構(gòu)產(chǎn)生的難以定位緩存位置的問題,緩沖陣列協(xié)議提出建立整體映射路由的方式來準(zhǔn)確定位緩存存放位置。映射路由的建立是通過建立緩存索引與代理節(jié)點(diǎn)信息融合的方式來實(shí)現(xiàn)的,對于任意緩存,根據(jù)其索引值直接定位到某一特定存儲節(jié)點(diǎn)。當(dāng)下一次,即再次查詢的時(shí)候,通過緩存的索引值,能夠通過索引映射表準(zhǔn)確定位到存儲節(jié)點(diǎn)的信息,從而不必發(fā)送大量信息進(jìn)行查詢來定位。其整體的架構(gòu)如圖2所示。
當(dāng)客戶端向緩沖陣列緩存系統(tǒng)請求數(shù)據(jù)的時(shí)候,客戶端首先向CM(總體控制器)發(fā)出請求,CM根據(jù)用戶請求緩存數(shù)據(jù)的索引值,查詢相應(yīng)的索引映射表,直接定位到對應(yīng)的代理服務(wù)器,從而返回客戶數(shù)據(jù)。該系統(tǒng)維護(hù)一個(gè)特定代理成員的列表,該列表監(jiān)視著對所有陣列節(jié)點(diǎn)發(fā)出的緩存數(shù)據(jù)請求,以便確定成員的狀態(tài),如果請求不成功,則本地代理節(jié)點(diǎn)會將該代理節(jié)點(diǎn)標(biāo)記為壽命期內(nèi)不可用,即請求不會再轉(zhuǎn)發(fā)給該節(jié)點(diǎn),直到下一次的查詢到來為止。
該模型通過索引映射表的建立能夠精確定位到節(jié)點(diǎn)的緩存存儲信息,從而迅速找到目標(biāo)緩存,不必發(fā)送大量的查詢信息。但從另一方面來講,因?yàn)椋茫涂刂乒?jié)點(diǎn)的存在,導(dǎo)致所有客戶請求首先向CM節(jié)點(diǎn)發(fā)送,這樣CM節(jié)點(diǎn)的負(fù)載過高,容易出現(xiàn)單點(diǎn)故障。
2新的分布式緩存模型
針對ICP緩存模型和緩沖陣列緩存模型的優(yōu)缺點(diǎn),本文提出了一種基于全資源的集群緩存系統(tǒng)。該緩存系統(tǒng)整體上分為兩層,分別是網(wǎng)內(nèi)集群緩存層和代理集群緩存層。客戶請求緩存數(shù)據(jù),首先向網(wǎng)內(nèi)集群緩存層進(jìn)行請求,如果存在對應(yīng)的數(shù)據(jù),則返回給客戶端;否則再向代理集群緩存層請求數(shù)據(jù),如果代理集群緩存層沒有數(shù)據(jù)的話,則再向外部服務(wù)器請求。雙層集群緩存系統(tǒng)的系統(tǒng)架構(gòu)如圖3所示。
2.1網(wǎng)內(nèi)集群緩存層
考慮對內(nèi)部客戶網(wǎng)絡(luò)資源的充分利用,客戶向外請求數(shù)據(jù)時(shí)候,首先針對內(nèi)部網(wǎng)絡(luò)發(fā)出請求,查看是否存在緩存數(shù)據(jù)的內(nèi)部主機(jī)。如果存在的話,就不用再向外請求數(shù)據(jù),這種情況對于特定時(shí)間段、特定人群的效率是非常高的。在大多數(shù)情況下,同一個(gè)內(nèi)部網(wǎng)絡(luò)的用戶在職業(yè)狀況、興趣取向、請求的時(shí)間和周期方面存在一定的相似度[5-6],這樣就為設(shè)計(jì)網(wǎng)內(nèi)集群緩存層提供了一定的理論和經(jīng)驗(yàn)支持。
2.1.1總體設(shè)計(jì)
首先對所有的請求URL進(jìn)行哈希,假設(shè)總共的URL數(shù)目是m,對所有的URL進(jìn)行分散結(jié)構(gòu)化,將其分成n組,同時(shí)對局域網(wǎng)內(nèi)所有的主機(jī)分成n組,如圖4所示,則第i組分散索引值的范圍為[?骔m/n」?觹i,?骔m/n」?觹(i+1)-1]。然后用戶可根據(jù)URL的哈希值向CM進(jìn)行請求,CM會根據(jù)網(wǎng)內(nèi)集群緩存層索引表定位該URL的子組位置,從而提供給用戶信息,用戶再向相應(yīng)的子組進(jìn)行請求。網(wǎng)內(nèi)集群緩存層索引表如表1所示。在系統(tǒng)初始化的時(shí)候,每個(gè)子組的主機(jī)數(shù)目相同,負(fù)責(zé)的URL索引值的范圍也是一樣的,這樣就保證了每一個(gè)子組負(fù)責(zé)的緩存存儲能力是一樣的。但是,考慮到URL的訪問頻率的不同,相應(yīng)的每個(gè)子組負(fù)責(zé)的訪問負(fù)載和通信負(fù)載會有較大的不同,因此需要對整個(gè)緩存存儲的拓?fù)浣Y(jié)構(gòu)進(jìn)行動態(tài)調(diào)整。
2.1.2系統(tǒng)拓?fù)浜途彺娴母?/p>
在系統(tǒng)初始化中,將子組主機(jī)數(shù)目和其負(fù)責(zé)的URL哈希索引值都設(shè)為相同,考慮到每一個(gè)URL的訪問頻率的不同,所以子組的訪問負(fù)載和通信負(fù)載是動態(tài)變化的。針對這一點(diǎn),需要對系統(tǒng)的拓?fù)浣Y(jié)構(gòu)進(jìn)行動態(tài)的調(diào)整。
(1)依據(jù)頁面訪問頻率進(jìn)行均衡調(diào)整
(2)依據(jù)本組負(fù)載限值進(jìn)行調(diào)整
針對組內(nèi)訪問頻率的動態(tài)變化,考慮每一個(gè)組在某一時(shí)間段內(nèi)對訪問次數(shù)的負(fù)載是一定的,假設(shè)超過了這個(gè)限值,則要進(jìn)行調(diào)整。策略主要有以下三種:
① 因?yàn)檎麄€(gè)局域網(wǎng)存在著不同數(shù)目的候選主機(jī),如果候選主機(jī)數(shù)目不為零,可以選入主機(jī)到該子組中;
② 根據(jù)LRU(最近最少使用)算法淘汰掉相應(yīng)的緩存;
③ 根據(jù)頻率的排序,移除頻率較高的緩存,單獨(dú)進(jìn)行組網(wǎng)。
對于緩存的更新,采用設(shè)定TTL值的方法,超過TTL值的話就會對緩存進(jìn)行更新。同時(shí)采用LRU算法淘汰掉訪問頻率較低的緩存,從而省出存儲空間。
2.1.3客戶請求處理過程
(1)系統(tǒng)初始化時(shí),對URL建立了分散架構(gòu)化模型,假設(shè)整體的索引值上限為m,將內(nèi)部網(wǎng)絡(luò)分為n個(gè)Group,則第i個(gè)Group分散索引值的范圍為[?骔m/n」?觹i,?骔m/n」?觹(i+1)-1]。
(2)某個(gè)客戶端請求某一個(gè)緩存數(shù)據(jù)D,首先查看本機(jī)緩存,如果沒有相應(yīng)的數(shù)據(jù)或者數(shù)據(jù)的TTL到期,則首先對D的URL進(jìn)行hash,再向CM機(jī)進(jìn)行請求,CM機(jī)查看網(wǎng)內(nèi)集群緩存索引表;如果索引表中存在對應(yīng)的表項(xiàng),則取出相應(yīng)的GROUP_ID和SPE_ID,根據(jù)這兩個(gè)值定位到存儲D的主機(jī)的物理位置。
(3)客戶端請求相應(yīng)的組ID,考慮到某些緩存請求數(shù)目非常大,特定i組的所有主機(jī)一般對分散索引值[?骔m/n」?觹i,?骔m/n」?觹(i+1)-1]范圍內(nèi)的緩存數(shù)據(jù)全部緩存。特殊情況下,特定緩存存儲在特定的主機(jī)上,此時(shí)SPE_ID就存儲該主機(jī)的物理信息。相反,如果沒有,就將SPE_ID設(shè)為NULL。這樣做有利于負(fù)載均衡。對于客戶端請求D時(shí),如果SPE_ID為NULL,則隨機(jī)請求該組內(nèi)的任意一臺主機(jī),此時(shí)某臺主機(jī)命中的概率為1(?骔m/n」?觹i)。如果該主機(jī)命中,則返回給請求的客戶端,否則再向代理集群緩存層請求數(shù)據(jù)。
2.1.4CM機(jī)工作機(jī)理
一方面,CM機(jī)接收客戶請求,根據(jù)用戶請求URL的哈希值和存儲的索引表反饋用戶存儲節(jié)點(diǎn)的物理位置;另一方面,CM機(jī)要根據(jù)當(dāng)前系統(tǒng)總體的訪問請求情況,監(jiān)視著所有客戶機(jī)的運(yùn)行狀況,對整個(gè)系統(tǒng)的拓?fù)浣Y(jié)構(gòu)進(jìn)行及時(shí)地更新。
2.2代理集群緩存層
如果用戶在網(wǎng)內(nèi)集群緩存層獲取不到數(shù)據(jù)的話,就會向代理集群緩存層進(jìn)行請求。和網(wǎng)內(nèi)集群緩存層類似,代理集群緩存層采用分散式路由方式索引數(shù)據(jù)。這一點(diǎn)與緩沖陣列緩存模型也很類似。只不過緩沖陣列緩存模型存在總體控制器,通過總體控制器來協(xié)調(diào)索引數(shù)據(jù)。對于代理集群緩存層來講,去除了這一控制器,由其中一臺代理機(jī)來負(fù)責(zé),這個(gè)代理機(jī)具有特定標(biāo)識,例如IP值最小。如果這臺代理機(jī)失效的話,馬上調(diào)整為下一個(gè)具有標(biāo)識的機(jī)器。
當(dāng)用戶向代理集群緩存層請求數(shù)據(jù)的時(shí)候,首先會向標(biāo)識機(jī)進(jìn)行請求,標(biāo)識機(jī)根據(jù)用戶請求緩存數(shù)據(jù)的索引值,查詢相應(yīng)的索引映射表,直接定位到對應(yīng)的代理服務(wù)器,從而返回客戶數(shù)據(jù)。該系統(tǒng)維護(hù)一個(gè)特定代理成員的列表,該列表監(jiān)視著對所有陣列節(jié)點(diǎn)發(fā)出的緩存數(shù)據(jù)請求,以便確定成員的狀態(tài),如果請求不成功,則本地代理節(jié)點(diǎn)會將該代理節(jié)點(diǎn)標(biāo)記為壽命期內(nèi)不可用。以后請求不會轉(zhuǎn)發(fā)給該節(jié)點(diǎn),直到下一次的查詢到來為止。
代理集群緩存層通過自動調(diào)整控制機(jī),通過控制機(jī)的自動遷移,有效地預(yù)防了單點(diǎn)故障,增強(qiáng)系統(tǒng)的健壯性。
3幾種分布式緩存模型的對比
本節(jié)將在用戶請求的平均響應(yīng)時(shí)間、緩存命中率以及系統(tǒng)整體性能方面對ICP緩存模型、緩沖陣列緩存模型和雙層集群緩存模型進(jìn)行對比和分析。這三個(gè)系統(tǒng)的內(nèi)部主機(jī)系統(tǒng)的數(shù)量都設(shè)為m,代理主機(jī)的數(shù)目為n。
3.1用戶請求的平均響應(yīng)時(shí)間
用戶請求的平均響應(yīng)時(shí)間主要從以下這個(gè)公式來考慮:
Tm=Ti+ψTd+(1-ψ)(Tb+Ts)+Tt (1)
在式(1)中,Ti為查詢一個(gè)緩存信息所需的平均時(shí)間, Td為本機(jī)獲取一個(gè)緩存所需要的平均時(shí)間,Tb為到上級緩存乃至原始服務(wù)器獲取請求的響應(yīng)所需的平均時(shí)間,Ts為在緩存中保存一個(gè)響應(yīng)信息所需的平均時(shí)間,Tt為發(fā)送響應(yīng)所需要的平均時(shí)間。
在這三種模型中,假設(shè)Td、Tt、Ts這三個(gè)變量相同,由于查詢一個(gè)緩存信息所需要的平均時(shí)間主要是考慮本機(jī)里緩存的平均時(shí)間,且主要與本機(jī)緩存的存儲查詢算法有關(guān),因此只考慮Tb即可。設(shè)Tclp為雙層集群緩存模型用戶請求的平均響應(yīng)時(shí)間,Tarr?yàn)榫彌_陣列緩存模型用戶請求的平均響應(yīng)時(shí)間, Ticp為ICP緩存模型用戶請求的平均響應(yīng)時(shí)間。
3.1.1ICP緩存模型
對于ICP緩存模型,總體的代理主機(jī)數(shù)目為n,假設(shè)建立了k層查詢,如圖1所示,考慮緩存存儲的極端最差情況,緩存存儲在第一層的主主機(jī)上,則需要遍歷所有的代理主機(jī),設(shè)一臺代理主機(jī)查詢的時(shí)間是Te,則:
Tb=nTe(2)
取平均情況:
對于緩沖陣列緩存模型,由于總體控制器通過散列路由能夠直接定位到緩存的信息,所以查詢的時(shí)間為:
Tarrb=Te(4)
3.1.3雙層集群緩存模型
考慮雙層集群緩存模型,首先查詢網(wǎng)內(nèi)集群緩存層,如果沒有命中的話,再次查詢代理集群緩存層,設(shè)網(wǎng)內(nèi)集群命中概率為λ,則求得:
Tbclp=λTl+(1-λ)Te(5)
很明顯,網(wǎng)內(nèi)集群緩存層的單位查詢時(shí)間Tl<Te,推得:
Tbclp<Tbarr<Tbicp (6)
由總體的相應(yīng)時(shí)間T=C+Tb,C是一個(gè)常數(shù),由式(6)推得:
Tclp<Tarr<Ticp (7)
所以對比ICP緩存模型和緩沖陣列緩存模型,雙層集群代理緩存模型的用戶請求的平均響應(yīng)時(shí)間最短。
3.2系統(tǒng)的整體處理開銷
3.2.1緩沖陣列緩存模型
考慮緩沖陣列緩存模型的系統(tǒng)開銷,首先查詢CM機(jī),這時(shí)的開銷由于請求轉(zhuǎn)發(fā)的消息少,可以忽略。考慮CM機(jī)的查詢結(jié)果定位到緩存陣列中的其中一臺機(jī)器M中,設(shè)s為一臺代理機(jī)響應(yīng)一個(gè)請求或應(yīng)答一個(gè)請求的平均開銷。分析兩種情況:
(1)緩存存在M中, 則開銷為2s;
(2)緩存不在M中,則需要向原始的服務(wù)器請求,并響應(yīng),因此總的開銷為4s。
設(shè)Sarr?yàn)榫彌_陣列緩存模型系統(tǒng)的系統(tǒng)開銷,綜上兩種情況,則:
3.2.2雙層集群緩存模型
考慮雙層集群緩存系統(tǒng)模型的開銷,類似緩沖陣列緩存模型,則推出網(wǎng)內(nèi)集群緩存層的系統(tǒng)開銷為
Stc=2slcplc(9)
“代理集群”緩存層的系統(tǒng)開銷為:
由式(15), (16)推出
Sclp<Sarr<Sicp(17)
所以,對比ICP緩存模型和緩沖陣列緩存模型,雙層集群代理緩存模型的整體處理開銷最小。
4實(shí)驗(yàn)
為了測試系統(tǒng)的性能,本文采用最新的Wisconsin Proxy Benchmark2.0 平臺進(jìn)行模擬測試。測試結(jié)果如圖5所示。
經(jīng)過模擬實(shí)驗(yàn)可以看出,雙層集群代理緩存模型比其余的兩個(gè)系統(tǒng)整體的命中率提高4~7個(gè)百分點(diǎn)左右。
5結(jié)束語
分析了現(xiàn)有的兩種典型的分布式代理緩存架構(gòu),提出了一種新的雙層集群緩存代理架構(gòu)。該系統(tǒng)充分利用內(nèi)部用戶訪問資源的相似性和局部性,通過網(wǎng)內(nèi)集群緩存和代理集群緩存的雙層架構(gòu),加強(qiáng)雙層集群的協(xié)調(diào)合作,增強(qiáng)了系統(tǒng)的穩(wěn)定性和擴(kuò)展性,充分利用了相鄰節(jié)點(diǎn)現(xiàn)有資源,優(yōu)化了緩存索引思路,在一定程度上提高了緩存命中率,降低了整體的系統(tǒng)開銷。
參考文獻(xiàn):
[1] 姜彩萍,李子木,楊鳳杰. 集中管理式Web緩存系統(tǒng)及性能分析. 微型計(jì)算機(jī)系統(tǒng),2004,8(25):1-2.
[2] 賀琛,陳肇雄,黃河燕. Web緩存技術(shù)綜述. 微型計(jì)算機(jī)系統(tǒng), 2004,5(25):3-7.
[3] 林永旺,張大江,劉波. 一個(gè)基于集中管理的協(xié)作式Web 緩存 系統(tǒng). 計(jì)算機(jī)研究與發(fā)展,2001,18(1):1-5,12.
[4] MESSAOUD S,YOUSSEF H. An analytical model for the per- formance evaluation of stack-based Web cache replacement al- gorithms[J]. International Journal of Communication Systems,20- 10,1(23):10-18.
[5] 趙銀春,付關(guān)友,朱征宇. 基于Web瀏覽內(nèi)容和行為相結(jié)合的用 戶興趣挖掘. 計(jì)算機(jī)工程,2005,31(13):1-2.
[6] 蔣在帆,王斌. 基于用戶行為分析的個(gè)人信息檢索研究. 中文信 息學(xué)報(bào),2011,25(5):3-5,12.
[7] TANG Ke,MEI Yi,YAO Xin. Memetic algorithm with extendedneIghborhood search for capacitated arc routing problems[J]. IE- EE Transactions on Evolutionary computation,2009,9(13):2-7.
[8] CHANG Chengyue,CHEN Ming-syan. Web cache replacement by integrating caching and prefetching[C]// Proceedings of the El- eventh International Conference on Information and KnowledgeManagement. 2002,9.
[9] BENEVENUTO,Fabrício,DUARTE,et al. Web cache replaceme- nt policies: Properties, limitations and implications [C]//. Procee- dings Third Latin American Web Congress. 2005:197-201.
[10] NEGM K A,AL-ALY M. Design of a remote controlled cach-ing proxy system : architecture, algorithm and implementation[C]// World Scientific and Engineering Academy and Society. Stevens Point Wisconsin,USA: 2005:3-6.
[11] KHALED,ANEGM E. Distributed Proxy Cache Cluster Optim-ization Simulation System. WSEAS Transactions on Computers.2004,3: 1161-1166.