霍建同,肖利民,霍志勝,徐耀文
1. 軟件開發(fā)環(huán)境國家重點實驗室,北京 100191;2. 北京航空航天大學(xué)計算機學(xué)院,北京 100191
當(dāng)前中國國家高性能計算環(huán)境中總計算能力突破200 PFlops,總存儲容量超過160 PB,擁有2個南北主節(jié)點、6個國家級節(jié)點、11個普通節(jié)點。但各個節(jié)點廣域分散,計算與存儲資源難以統(tǒng)籌使用。當(dāng)前計算資源已經(jīng)基本做到全局調(diào)度,但存儲資源仍處于廣域分散、隔離自治的狀態(tài),未能實現(xiàn)統(tǒng)一管理和共享訪問。隨著計算規(guī)模和數(shù)據(jù)量的快速增長,為了滿足大型高性能計算應(yīng)用跨域統(tǒng)一訪問、廣域數(shù)據(jù)共享、存儲與計算協(xié)同的需求,基于國家重點研發(fā)計劃“高性能計算虛擬數(shù)據(jù)空間”項目,筆者設(shè)計并實現(xiàn)了廣域虛擬數(shù)據(jù)空間系統(tǒng)(global virtual data system,GVDS)[1],并在5個國家超級計算(以下簡稱超算)中心進行了部署和驗證,圖1為GVDS的部署情況。
圖1 GVDS的部署情況
如圖1所示,虛擬數(shù)據(jù)空間客戶端位于網(wǎng)絡(luò)邊緣,可稱其為邊緣客戶端。邊緣客戶端一般部署于PC上,是用戶訪問廣域虛擬數(shù)據(jù)空間系統(tǒng)的入口;伴隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,其還可部署在邊緣側(cè)的計算節(jié)點、數(shù)據(jù)采集節(jié)點和移動設(shè)備上。用戶可通過客戶端直接訪問廣域虛擬數(shù)據(jù)空間系統(tǒng),進行跨超算中心的數(shù)據(jù)管理、共享和訪問。然而,同一研究機構(gòu)內(nèi)的用戶在一段時間內(nèi)對相關(guān)的數(shù)據(jù)進行共享和訪問時,廣域網(wǎng)環(huán)境中會多次傳輸冗余數(shù)據(jù),當(dāng)數(shù)據(jù)量較大且訪問量過多時,會造成網(wǎng)絡(luò)帶寬資源的浪費。另外,隨著萬物互聯(lián)時代[2]的到來,邊緣計算[3]迅速發(fā)展,其將計算作業(yè)駐留在靠近數(shù)據(jù)源、靠近用戶的計算設(shè)備上運行,可減少數(shù)據(jù)傳輸量,從而縮短數(shù)據(jù)傳輸時延,最終提高云計算中心的可用性和處理作業(yè)的能力。
接下來,通過一個實例闡述當(dāng)前廣域虛擬數(shù)據(jù)空間系統(tǒng)在廣域環(huán)境中的冗余數(shù)據(jù)傳輸問題。在氣象預(yù)測場景中,氣象數(shù)據(jù)大多來自網(wǎng)絡(luò)邊緣的采集設(shè)備,經(jīng)過多種處理工序,最終上傳到超算中心進行分析,整個過程中會將產(chǎn)生的數(shù)據(jù)進行多次共享和復(fù)制。盡管廣域虛擬數(shù)據(jù)空間系統(tǒng)可形成統(tǒng)一的存儲視圖,方便了數(shù)據(jù)管理和數(shù)據(jù)訪問,但當(dāng)同一區(qū)域的多個邊緣客戶端共享和訪問數(shù)據(jù)時,廣域網(wǎng)下仍存在大量的冗余數(shù)據(jù)復(fù)制。以圖2所示的天氣預(yù)測過程為例,氣象數(shù)據(jù)來源于全國各地的氣象監(jiān)測點,數(shù)據(jù)主要包括氣溫、氣壓、降水、風(fēng)向、風(fēng)速、濕度和輻射等,數(shù)據(jù)通過氣象監(jiān)測站點的邊緣設(shè)備進行同化處理后,匯總至省市級氣象站,之后進一步匯總至區(qū)域級和國家級氣象信息中心進行氣象預(yù)測;各級氣象預(yù)測單位之間通過國家氣象計算網(wǎng)格[4-5]和中國國家網(wǎng)格的網(wǎng)絡(luò)進行數(shù)據(jù)傳輸。廣域虛擬數(shù)據(jù)空間系統(tǒng)對全局氣象數(shù)據(jù)實現(xiàn)了廣域網(wǎng)環(huán)境的統(tǒng)一管理和調(diào)度,然而,在廣州氣象局和福建氣象局同時需要山東氣象局的數(shù)據(jù)時,兩者會同時從廣域網(wǎng)環(huán)境中訪問并獲取數(shù)據(jù),從而造成冗余數(shù)據(jù)傳輸。假設(shè)在廣東氣象局設(shè)置邊緣存儲或者邊緣緩存,將氣象數(shù)據(jù)進行緩存,廣州氣象局和福建氣象局從廣東氣象局獲取數(shù)據(jù)將極大地減少冗余數(shù)據(jù)傳輸。另一種情況,當(dāng)青島氣象局需要濟南氣象局的數(shù)據(jù)時,如果在山東氣象局設(shè)置邊緣緩存,濟南的氣象數(shù)據(jù)不用到達虛擬數(shù)據(jù)空間核心空間,即可通過邊緣緩存將數(shù)據(jù)傳遞給青島氣象局,從而提高廣域虛擬數(shù)據(jù)空間系統(tǒng)的數(shù)據(jù)共享效率。
圖2 氣象數(shù)據(jù)處理流程
通過上述示例可知,盡管國內(nèi)外僅有的幾個跨廣域網(wǎng)環(huán)境的存儲系統(tǒng)已經(jīng)實現(xiàn)了跨廣域環(huán)境的存儲資源的統(tǒng)一管理,如GVDS、歐洲網(wǎng)格基礎(chǔ)設(shè)施(EGI)[6],但仍面臨如下數(shù)據(jù)共享性能的新挑戰(zhàn):缺乏邊緣緩存系統(tǒng),導(dǎo)致數(shù)據(jù)在廣域網(wǎng)環(huán)境中進行冗余傳輸,廣域環(huán)境存在很高的傳輸時延,無法充分發(fā)揮廣域虛擬數(shù)據(jù)空間系統(tǒng)的存儲資源聚合效應(yīng)的優(yōu)勢,最終會降低高性能計算應(yīng)用的性能。
因此,靠近客戶端的邊緣緩存研究是跨廣域存儲系統(tǒng)研究領(lǐng)域的熱點之一,也是亟須解決的問題之一?;贕VDS現(xiàn)有架構(gòu)構(gòu)建邊緣緩存系統(tǒng)具有十分重要的意義,可提高廣域虛擬數(shù)據(jù)空間數(shù)據(jù)訪問和數(shù)據(jù)共享的效率,對于促進高性能計算有重要的推動作用。為了解決上述示例中邊緣客戶端在訪問與共享數(shù)據(jù)時存在的問題,本文在GVDS中設(shè)計并實現(xiàn)了云邊協(xié)同的邊緣緩存系統(tǒng),通過提升共享數(shù)據(jù)效率來提高邊緣用戶的整體數(shù)據(jù)訪問性能,具體如下。
(1)設(shè)計并實現(xiàn)了邊緣緩存架構(gòu)及其關(guān)鍵技術(shù)
本文設(shè)計并實現(xiàn)了邊緣緩存系統(tǒng)的架構(gòu),并將其作為廣域虛擬數(shù)據(jù)空間系統(tǒng)的補充。該架構(gòu)最大限度地利用了跨域虛擬數(shù)據(jù)空間中現(xiàn)有的數(shù)據(jù)訪問機制,盡可能地減少了對廣域虛擬數(shù)據(jù)空間基礎(chǔ)軟件系統(tǒng)的修改;另外,本文提出并實現(xiàn)了一系列邊緣緩存的關(guān)鍵技術(shù),具體包括緩存索引機制、緩存替換策略、邊緣緩存集群方案設(shè)計、緩存數(shù)據(jù)一致性策略。
(2)在廣域虛擬數(shù)據(jù)空間系統(tǒng)中實現(xiàn)了邊緣緩存系統(tǒng)
基于上述邊緣緩存的架構(gòu)和關(guān)鍵技術(shù),在廣域虛擬數(shù)據(jù)空間系統(tǒng)中實現(xiàn)了邊緣緩存系統(tǒng)。邊緣緩存系統(tǒng)由邊緣客戶端模塊和邊緣緩存服務(wù)節(jié)點組成,其中邊緣緩存服務(wù)節(jié)點包括緩存接口層、緩存組織層和數(shù)據(jù)服務(wù)層。
邊緣緩存的起源可以追溯到20世紀(jì)90年代,Akamai公司提出了內(nèi)容分發(fā)網(wǎng)絡(luò)(content delivery network)[7]的概念。內(nèi)容分發(fā)網(wǎng)絡(luò)是一種基于Internet的緩存網(wǎng)絡(luò),其依靠地域分散的內(nèi)容緩存服務(wù)器,將需要分發(fā)的文件在廣域網(wǎng)上放置多個副本,并通過中心平臺的調(diào)度和負(fù)載均衡策略,將用戶的訪問發(fā)送到距離較近的內(nèi)容服務(wù)器上,從而緩解網(wǎng)絡(luò)擁塞,提高廣域網(wǎng)數(shù)據(jù)訪問的速度。
2006年亞馬遜提出了彈性計算云(elastic compute cloud)的概念,在計算、存儲和可視化等方面開啟了許多新的機遇。Ramaswamy L等人[8]提出了合作式邊緣緩存網(wǎng)格,該網(wǎng)格由多個分布式的邊緣緩存云組成,如果緩存未命中,邊緣緩存節(jié)點能夠從臨近的邊緣緩存云中獲取文件數(shù)據(jù),以縮短用戶等待時間。2009年,卡內(nèi)基梅隆大學(xué)的Satyanarayanan M等人[9]引入了微云(Cloudlet)作為邊緣計算的形式,Cloudlet部署在網(wǎng)絡(luò)邊緣,并與互聯(lián)網(wǎng)連接,是一個可信且資源豐富的主機,可以被移動設(shè)備訪問及為其提供服務(wù)。
2014年,Storj Labs提出了一種去中心化的云存儲平臺STORJ[10],該平臺使用P2P網(wǎng)絡(luò)連接存儲設(shè)備,并借助以太坊區(qū)塊鏈技術(shù)激勵用戶將閑置的存儲資源充分利用起來,從而以非常低廉的維護和管理成本為邊緣端提供存儲服務(wù)。2017年,Chen B Q等人[11]提出了一種基于D2D(device to device)網(wǎng)絡(luò)的邊緣緩存模型,其按照集群的方式劃分邊緣用戶,將熱文件緩存在各個集群中,從而可將D2D緩存網(wǎng)絡(luò)的吞吐量提高4倍。2019年,Tan H S等人[12]研究了多個邊緣服務(wù)器的在線協(xié)作緩存機制,當(dāng)本地邊緣服務(wù)器沒有所需數(shù)據(jù)/服務(wù)時,可以選擇與周邊的邊緣服務(wù)器關(guān)聯(lián)合作(代價?。蛘邔⒎?wù)請求直接發(fā)送到云端數(shù)據(jù)中心(代價大),或者下載云端數(shù)據(jù)/服務(wù)安裝到本地,并在必要時替換本地已有內(nèi)容(代價大),其分別設(shè)計了具有確定性和隨機性的在線協(xié)作機制,優(yōu)化了服務(wù)所需代價,給出了性能的理論保證(具有漸進最優(yōu)的競爭比),通過真實/基準(zhǔn)數(shù)據(jù)集模擬,驗證了該機制的有效性。
綜上所述,現(xiàn)有邊緣緩存面臨如下問題。
● 現(xiàn)有邊緣緩存研究都是針對互聯(lián)網(wǎng)環(huán)境中的數(shù)據(jù)共享應(yīng)用的,沒有考慮國家網(wǎng)格中高性能計算應(yīng)用負(fù)載的需求,如跨多個超算中心的存算協(xié)同等要求,從而無法滿足國家各超算中心跨廣域的數(shù)據(jù)共享需求。因此,不能有效地滿足廣域虛擬數(shù)據(jù)空間系統(tǒng)的性能需求。
● 現(xiàn)在國內(nèi)外沒有開源的邊緣緩存系統(tǒng),現(xiàn)有的系統(tǒng)多為商業(yè)系統(tǒng)且閉源。通過研究自主可控的邊緣緩存系統(tǒng)并將其開源,將彌補國家網(wǎng)格中高性能計算環(huán)境的空白,并進一步提升廣域虛擬數(shù)據(jù)空間系統(tǒng)的性能,有效地提高大型高性能計算應(yīng)用的性能。
作為廣域虛擬數(shù)據(jù)空間系統(tǒng)的補充,邊緣緩存系統(tǒng)主要包括邊緣客戶端和邊緣緩存服務(wù)節(jié)點,具體架構(gòu)如圖3所示。邊緣客戶端處于網(wǎng)絡(luò)邊緣,可感知邊緣緩存系統(tǒng)的存在;邊緣緩存服務(wù)節(jié)點是邊緣緩存的主要組成部分,多個服務(wù)節(jié)點可以組成邊緣緩存集群,并為邊緣客戶端提供服務(wù)。邊緣緩存服務(wù)節(jié)點提供邊緣緩存系統(tǒng)的核心功能,包括緩存管理、緩存服務(wù)和緩存集群維護等。邊緣緩存系統(tǒng)被設(shè)計為同構(gòu)集群。
圖3 邊緣緩存系統(tǒng)的架構(gòu)
邊緣緩存系統(tǒng)將廣域虛擬數(shù)據(jù)空間系統(tǒng)中的數(shù)據(jù)以文件粒度進行緩存,整個邊緣緩存系統(tǒng)以鍵值形式的扁平化數(shù)據(jù)結(jié)構(gòu)進行索引。邊緣緩存系統(tǒng)的工作流程如圖4所示。
圖4 邊緣緩存工作流程
邊緣客戶端請求文件時,首先判斷邊緣緩存服務(wù)節(jié)點中是否完整地緩存了該文件及文件是否有效,如果有效,則響應(yīng)邊緣客戶端的文件請求,并更新對應(yīng)緩存文件的請求次數(shù)、最后請求時間等相關(guān)信息;如果邊緣緩存服務(wù)節(jié)點未緩存該文件,邊緣客戶端主動向廣域虛擬數(shù)據(jù)空間系統(tǒng)的核心空間請求獲取數(shù)據(jù),廣域虛擬數(shù)據(jù)空間系統(tǒng)響應(yīng)邊緣客戶端的請求,完成整個數(shù)據(jù)請求流程;邊緣客戶端向邊緣緩存服務(wù)節(jié)點請求文件,當(dāng)邊緣緩存服務(wù)節(jié)點未緩存該文件且該文件達到緩存條件時,邊緣緩存系統(tǒng)將主動向廣域虛擬數(shù)據(jù)空間系統(tǒng)發(fā)送文件請求進行預(yù)緩存,邊緣緩存服務(wù)節(jié)點首先判斷是否有能力存儲該文件,如果無足夠空間,則根據(jù)緩存替換策略,替換出緩存中價值量最小的文件,直到該文件能夠被緩存。為了防止遠(yuǎn)程文件過大的現(xiàn)象出現(xiàn),邊緣緩存對文件大小設(shè)置閾值K(如1 GB),當(dāng)預(yù)緩存文件小于文件閾值時,邊緣緩存系統(tǒng)緩存整個文件,否則邊緣緩存將緩存文件大小為K的前面部分內(nèi)容,并計算緩存價值量。
3.2.1 邊緣緩存索引機制的設(shè)計
邊緣緩存系統(tǒng)采用兩層索引機制進行緩存文件的查找。整個邊緣緩存系統(tǒng)的元數(shù)據(jù)持久化存儲在分布式KV數(shù)據(jù)庫系統(tǒng)中,索引機制具體細(xì)節(jié)如下。
圖5所示為邊緣緩存系統(tǒng)的第一層映射機制:文件全局路徑到緩存文件元數(shù)據(jù)的映射。緩存文件元數(shù)據(jù)除了包含緩存文件的生存時間值(time to live,TTL)、訪問頻度、文件大小等,還包含文件指紋和文件UUID(universally unique identifier)信息。其中文件指紋和UUID可由算法生成,用于唯一表示數(shù)據(jù)。文件指紋主要用來向廣域虛擬數(shù)據(jù)空間文件系統(tǒng)發(fā)送申請,以校驗文件是否過期,文件UUID表示文件在分布式文件系統(tǒng)中的存儲路徑。
圖5 第一層映射:文件全局路徑到緩存文件元數(shù)據(jù)的映射
圖6所示為邊緣緩存中的第二層映射,該映射表示文件指紋到文件UUID的映射。UUID可以被看作磁盤上的一個文件。第二層映射主要用于數(shù)據(jù)去重,邊緣緩存系統(tǒng)中的文件都是通過廣域網(wǎng)從虛擬數(shù)據(jù)空間系統(tǒng)中獲取的,當(dāng)需要獲取遠(yuǎn)程文件時,如果文件指紋與已經(jīng)緩存的文件匹配,則在底層文件系統(tǒng)中創(chuàng)建軟鏈接即可。
圖6 第二層映射:文件指紋到文件UUID的映射
3.2.2 邊緣緩存替換策略
緩存替換策略是提高緩存性能的關(guān)鍵技術(shù)之一,基于成本/價值模型的替換策略綜合考慮了替換對象的大小、訪問頻率、訪問時間、訪問時間間隔和獲取代價等因素。本文提出了一種基于貪婪對偶大小次數(shù)(greedydual size frequency,GDSF)優(yōu)化策略的替換方法,并將其作為邊緣緩存系統(tǒng)的替換策略,具體如下。
(1)初始化文件的價值參數(shù)L=0,邊緣緩存空間的總大小為Total,已經(jīng)使用的存儲空間大小為Used,初始Used=0。
(2)如果請求的文件i在緩存中已經(jīng)有副本,則Used值不變,文件訪問頻率Fr(i)加1,如式(1)所示:
同時根據(jù)目標(biāo)函數(shù),重新計算文件i的價值H(i)。
(3)如果請求的文件i在緩存中不存在副本,那么邊緣客戶端將向廣域虛擬數(shù)據(jù)空間系統(tǒng)獲取文件數(shù)據(jù)。當(dāng)文件請求表中對應(yīng)的文件超過閾值時,邊緣緩存系統(tǒng)獲取文件的前K個部分(Size(i)),并進行緩存。文件訪問次數(shù)Fr(i)=1,計算對象的價值,并將文件保存到緩存中,Used值會發(fā)生變換,如式(2)所示:
這時,根據(jù)邊緣緩存系統(tǒng)的剩余空間是否足夠,分為兩種情況:
① 剩余空間足夠,即Used≤Total,此時不需要進行緩存替換,把新文件i存放在邊緣緩存中;
② 緩存空間不足,即Used>Total,此時必須進行對象替換,在緩存中選擇k個具有非零最小代價H(i)的文件組i1,i2,…,ik,滿足如式(3)、式(4)所示的2個條件:
然后根據(jù)請求的文件i是否在替換文件中分成如下兩種情況:
● 如果請求的對象i不在這k個文件i1, i2,…,ik中,那么L的值就是這k個文件中價值H最大的那個值,然后按照式(5)、式(6)計算得到L和Used的值;
● 如果請求的文件i在這k個文件中,表明新文件i的價值不足以被緩存,因此不需要替換任何對象,只要把Used值恢復(fù)到原來的大小即可,Used=Used-Size(i)。
(4)在清除文件時,要考慮其是否被其他軟鏈接索引,再進行實際刪除。
整個邊緣緩存替換流程如圖7所示。
圖7 邊緣緩存文件對象替換策略流程
隨著單一科研機構(gòu)中客戶端數(shù)量的增多,單個邊緣緩存服務(wù)節(jié)點將成為邊緣緩存系統(tǒng)的瓶頸。本文采用集群的方式來提高邊緣緩存系統(tǒng)的服務(wù)能力。本文提出的邊緣緩存系統(tǒng)的集群方案設(shè)計主要包括同構(gòu)集群結(jié)構(gòu)設(shè)計[13]、基于一致性哈希算法的請求路由方法[14]、基于可伸縮可傳導(dǎo)的弱一致性進程組成員資格(SWIM)協(xié)議[15]的集群成員維護方法。
3.3.1 同構(gòu)集群結(jié)構(gòu)設(shè)計
邊緣緩存系統(tǒng)是廣域虛擬數(shù)據(jù)空間系統(tǒng)的補充軟件,為了降低系統(tǒng)的復(fù)雜性,本文將邊緣緩存系統(tǒng)設(shè)計為同構(gòu)集群,圖8所示為邊緣緩存系統(tǒng)的集群架構(gòu)。如圖8所示,邊緣緩存系統(tǒng)由同構(gòu)的邊緣緩存服務(wù)節(jié)點構(gòu)成,每個邊緣緩存服務(wù)節(jié)點都具有緩存數(shù)據(jù)服務(wù)、緩存數(shù)據(jù)管理和集群狀態(tài)維護等功能,最上層為部署在研究所內(nèi)各類終端上的虛擬數(shù)據(jù)空間客戶端,這些客戶端在啟動時可以選擇是否使用邊緣緩存系統(tǒng)。當(dāng)不使用邊緣緩存系統(tǒng)時,客戶端可直接從廣域虛擬數(shù)據(jù)空間系統(tǒng)進行數(shù)據(jù)訪問,客戶端后續(xù)不能感知到邊緣緩存系統(tǒng)的存在;當(dāng)選擇使用邊緣緩存系統(tǒng)時,客戶端在訪問文件時,首先查詢想訪問的文件是否在邊緣緩存系統(tǒng)中,如果已緩存,則通過Proxy方式直接從邊緣緩存系統(tǒng)獲取文件;如果文件未在邊緣緩存系統(tǒng)中緩存,則通過Bypass方式直接從廣域虛擬數(shù)據(jù)空間系統(tǒng)訪問數(shù)據(jù)。
圖8 邊緣緩存系統(tǒng)的集群架構(gòu)
3.3.2 基于一致性哈希算法的請求路由方法
當(dāng)集群中存在多個同構(gòu)的邊緣緩存服務(wù)節(jié)點時,邊緣客戶端訪問任意一個節(jié)點即可獲取邊緣緩存服務(wù)。盡管各個邊緣緩存服務(wù)節(jié)點提供的功能相同,但由于節(jié)點間性能不同,向外提供的服務(wù)能力也不同。因此,需要研究相關(guān)負(fù)載均衡(loadbalancing)方法把請求路由到合適的邊緣緩存服務(wù)節(jié)點上。盡管一致性哈希算法可將邊緣緩存服務(wù)節(jié)點加入和退出的影響降到最低,但在服務(wù)器數(shù)量較少時會導(dǎo)致映射不均勻,因此,本文提出了基于虛擬節(jié)點機制的一致性哈希策略的請求路由算法。
具體地,引入虛擬節(jié)點的機制,即根據(jù)每個邊緣緩存服務(wù)節(jié)點自身的性能進行多次哈希計算,再映射到圓環(huán)上。如圖9所示,以1個邊緣緩存服務(wù)節(jié)點(圖9中簡稱為緩存服務(wù)節(jié)點2)為例,分別增加1A、1B、1C、2B和2C虛擬節(jié)點,并將這些虛擬節(jié)點映射到哈希環(huán)上。通過這種方式,節(jié)點的分布更加均勻,文件訪問仍然根據(jù)先前的方法進行路由,并增加虛擬節(jié)點到物理節(jié)點的映射,文件訪問請求被路由到相應(yīng)的邊緣緩存服務(wù)節(jié)點中,可解決請求路由在邊緣緩存服務(wù)節(jié)點中分布不均勻的問題。
圖9 一致性哈希的虛擬節(jié)點
3.3.3 基于SWIM協(xié)議的集群成員維護方法
邊緣緩存系統(tǒng)采用SWIM協(xié)議維護邊緣緩存服務(wù)節(jié)點的狀態(tài)信息。每個邊緣緩存服務(wù)節(jié)點在內(nèi)存中都維護一個狀態(tài)表,該表記錄了當(dāng)前集群中活躍節(jié)點的狀態(tài)信息,狀態(tài)信息包括當(dāng)前活躍節(jié)點的IP地址、開放的服務(wù)端口和節(jié)點的負(fù)載信息等。各節(jié)點周期性地從狀態(tài)表中選擇節(jié)點進行網(wǎng)絡(luò)探包確認(rèn)(ping-ack)操作。當(dāng)有節(jié)點加入、離開或檢測到節(jié)點失效時,通過Gossip協(xié)議[16]以點對點的方式向集群中其他節(jié)點通知狀態(tài)的變動。SWIM協(xié)議滿足最終一致性,一定周期后集群狀態(tài)將達到一致。
邊緣緩存系統(tǒng)一致性主要包括邊緣緩存系統(tǒng)內(nèi)、邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)間兩個層次的數(shù)據(jù)一致性。
3.4.1 邊緣緩存系統(tǒng)內(nèi)的數(shù)據(jù)一致性機制
邊緣緩存系統(tǒng)內(nèi)的數(shù)據(jù)一致性由鎖機制來保證。鎖模型中包含3種鎖:共享鎖(S,shared)、排他鎖(X,excluded)和共享排他鎖(SX,shared excluded)。S和X模式是經(jīng)典的兩種讀寫鎖模式,SX模式是對X模式的優(yōu)化,它與S模式是兼容的。表1描述了3種鎖的兼容性關(guān)系。
表1 鎖兼容關(guān)系表
圖10所示為在分布式鎖和文件鎖加入后邊緣客戶端EA訪問緩存文件的過程。EA在訪問邊緣緩存文件F1時,首先訪問邊緣緩存服務(wù)節(jié)點(在圖10~圖14中簡稱為緩存服務(wù)節(jié)點)ES1,ES1獲取F1的緩存元數(shù)據(jù)的共享排他鎖,EA先通過ES1獲取F1的文件共享排他鎖,之后才能獲取F1文件數(shù)據(jù)。
圖10 在一致性機制下EA訪問邊緣緩存文件的過程
如圖11所示,邊緣客戶端EA首先通過邊緣緩存服務(wù)節(jié)點ES1獲取F1元數(shù)據(jù)的共享排他鎖,并繼續(xù)后續(xù)訪問。此時邊緣客戶端EB也通過邊緣緩存服務(wù)節(jié)點ES2獲取F1元數(shù)據(jù)的共享排他鎖,因為鎖的兼容性,此時只能獲得共享鎖。在ES1對F1元數(shù)據(jù)進行維護時,ES2只能對元數(shù)據(jù)進行查詢操作。
圖11 元數(shù)據(jù)加鎖過程
圖12所示為文件加鎖過程,邊緣客戶端EA訪問緩存數(shù)據(jù)F1,首先通過邊緣緩存服務(wù)節(jié)點ES1獲取F1元數(shù)據(jù)的共享排他鎖,需要獲取文件的共享排他鎖才可修改F1。邊緣客戶端EB也訪問F1時,只能獲取F1的共享鎖,并進行只讀操作。
圖12 文件鎖沖突過程
圖13所示為緩存維護文件數(shù)據(jù)時的加鎖過程,邊緣緩存服務(wù)節(jié)點ES1在獲取F1的元數(shù)據(jù)排他鎖和F1的文件排他鎖后進行緩存數(shù)據(jù)的維護。此時,邊緣緩存系統(tǒng)正在維護F1數(shù)據(jù),其他邊緣緩存服務(wù)節(jié)點訪問F1的元數(shù)據(jù)時加鎖都不能成功。
圖13 緩存服務(wù)節(jié)點維護文件數(shù)據(jù)時的加鎖過程
3.4.2 邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)之間的一致性機制
邊緣緩存系統(tǒng)采用類網(wǎng)絡(luò)文件系統(tǒng)(network file system,NFS)的語義模型進行一致性控制,實現(xiàn)“打開-關(guān)閉”的一致性,并定期回寫數(shù)據(jù),以達到邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)的最終一致性;同時,邊緣緩存系統(tǒng)會設(shè)置緩存文件的TTL和文件指紋。當(dāng)文件被邊緣客戶端再次訪問時,首先會檢查文件指紋是否匹配,如果匹配,則通過邊緣緩存系統(tǒng)訪問文件數(shù)據(jù),否則繞過邊緣緩存系統(tǒng)直接訪問廣域虛擬數(shù)據(jù)空間系統(tǒng)。邊緣緩存系統(tǒng)周期性地通過文件的TTL檢查文件是否與廣域虛擬數(shù)據(jù)空間系統(tǒng)一致,如果文件過期,則通過比較文件指紋來決定是否重新同步文件,并更新TTL。
邊緣緩存系統(tǒng)會檢查文件是否過期,如果未過期,則認(rèn)為緩存文件可用;如果文件過期且文件指紋與遠(yuǎn)程文件指紋不同,則重新同步文件。
圖14所示為同步過程,邊緣緩存服務(wù)節(jié)點ES1首先獲取F1的元數(shù)據(jù)排他鎖,檢查緩存的文件和F1文件指紋是否相同或檢查數(shù)據(jù)是否達到同步周期。如果達到同步周期,ES1獲取F1的文件排他鎖進行數(shù)據(jù)同步;同時,當(dāng)邊緣客戶端完成對緩存文件數(shù)據(jù)的讀寫時,將緩存的文件同步到廣域虛擬數(shù)據(jù)空間系統(tǒng)中,并可設(shè)置寫回間隔,以滿足類NFS語義。
圖14 邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)的同步過程
為了實現(xiàn)邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)之間的交互,需要設(shè)計合理的交互接口。本節(jié)將介紹邊緣緩存系統(tǒng)中的緩存管理接口和數(shù)據(jù)訪問接口,從而實現(xiàn)邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)的對接。表2和表3描述了緩存管理RESTful接口和數(shù)據(jù)訪問接口。
表2 緩 存管理RESTful接口
表3 緩存管理數(shù)據(jù)訪問接口
圖15所示為邊緣緩存系統(tǒng)在廣域虛擬數(shù)據(jù)空間系統(tǒng)中的具體實現(xiàn)。邊緣客戶端和邊緣緩存服務(wù)節(jié)點共同組成了邊緣緩存系統(tǒng)。邊緣緩存服務(wù)節(jié)點提供邊緣緩存系統(tǒng)的核心功能,包括緩存管理、緩存服務(wù)和緩存集群維護等功能。邊緣客戶端包括虛擬數(shù)據(jù)空間客戶端模塊,使得虛擬數(shù)據(jù)空間客戶端能夠感知邊緣緩存系統(tǒng)的存在。
圖15 邊緣緩存系統(tǒng)在廣域虛擬數(shù)據(jù)空間中的實現(xiàn)
圖16所示為邊緣緩存系統(tǒng)的組成。邊緣緩存系統(tǒng)包含5層,其中,最上層為客戶端層,客戶端層主要包括緩存管理命令行工具、虛擬數(shù)據(jù)空間邊緣客戶端;中間3層組成了邊緣緩存服務(wù)節(jié)點,其包含緩存接口層、緩存組織層和數(shù)據(jù)服務(wù)層,緩存接口層包括緩存管理接口模塊、緩存數(shù)據(jù)訪問接口模塊,緩存組織層包含集群維護模塊、緩存管理模塊、緩存服務(wù)模塊,數(shù)據(jù)服務(wù)層包含KV數(shù)據(jù)庫模塊、本地I/O模塊及遠(yuǎn)程I/O模塊;最下面一層為資源層,包含分布式KV數(shù)據(jù)庫、網(wǎng)絡(luò)文件系統(tǒng)和虛擬數(shù)據(jù)空間核心空間,邊緣客戶端可以繞過中間3層,直接與處于資源層的廣域虛擬數(shù)據(jù)空間系統(tǒng)進行通信,并獲取數(shù)據(jù)。圖17所示為邊緣緩存系統(tǒng)中各模塊間的具體交互。
圖16 邊緣緩存系統(tǒng)的模塊組成
圖17 邊緣緩存系統(tǒng)模塊交互
測試主要包括功能測試和性能測試。功能測試包括對邊緣客戶端和邊緣緩存服務(wù)節(jié)點功能的測試。在緩存服務(wù)節(jié)點側(cè),包括對緩存服務(wù)節(jié)點的集群功能和邊緣緩存管理功能的測試。在邊緣客戶端側(cè),包括邊緣客戶端POSIX接口兼容和請求路由方法測試等,其中POSIX接口兼容測試主要包含文件元數(shù)據(jù)查詢、修改,文件創(chuàng)建、寫、讀、復(fù)制及截斷等,目錄創(chuàng)建、查詢、刪除等,以及第三方應(yīng)用運行的測試。關(guān)于性能測試,在廣域網(wǎng)真實環(huán)境中,在有無邊緣緩存的情況下,分別對邊緣客戶端的元數(shù)據(jù)與數(shù)據(jù)讀寫等操作的性能進行對比測試。
在整個測試過程中,在PC上通過虛擬機對邊緣緩存系統(tǒng)的功能進行測試。筆者在真實廣域網(wǎng)環(huán)境中對邊緣緩存系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)訪問的性能進行測試。功能測試的PC配置為1顆i7 9700 CPU,32 GB DDR4 3 200 MHz內(nèi)存,Windows 10 Professional 10.0.19041 x86_64操作系統(tǒng);局域網(wǎng)內(nèi)邊緣客戶端配置為1顆i7 9700 CPU,32 GB DDR4 3 200 MHz內(nèi)存,Ubuntu 18.04.3操作系統(tǒng);局域網(wǎng)內(nèi)服務(wù)器配置為2顆Intel至強金牌5118 CPU,128 GB內(nèi)存,Ubuntu 18.04.5操作系統(tǒng);國家超算濟南中心測試環(huán)境服務(wù)器配置為2顆Intel至強金牌51167 CPU,64 GB內(nèi)存,Ubuntu 18.04.5操作系統(tǒng)。
為了保持軟件環(huán)境一致,測試使用的主要軟件、工具及其對應(yīng)版本為:GCC 7.5.0、libfuse 3.8.0、Python 3.6.9、C++ 11、gRPC 1.27.2、Protobuf 3.1.3.0、Go 1.14.7、VirtualBox 6.1.16、WANem 3.0 Beta、fio 3.1和iperf 3.1.2。
中科院網(wǎng)絡(luò)信息中心、國家超算濟南中心、國家超算長沙中心、上海超算中心和國家超算廣州中心5個節(jié)點上部署了廣域虛擬數(shù)據(jù)空間系統(tǒng)。
如圖18所示,為了利用虛擬機對邊緣緩存系統(tǒng)的功能進行測試,實驗配置了虛擬機拓?fù)浣Y(jié)構(gòu),所有虛擬機通過VirtualBox運行在PC上。邊緣客戶端由兩臺虛擬機模擬,邊緣緩存服務(wù)節(jié)點由3臺虛擬機模擬,邊緣緩存服務(wù)節(jié)點還共同連接同一個分布式KV數(shù)據(jù)庫和Lustre文件系統(tǒng),Lustre文件系統(tǒng)也部署在獨立的虛擬機上。虛擬數(shù)據(jù)空間系統(tǒng)由一臺性能較高的虛擬機模擬,該虛擬機運行虛擬數(shù)據(jù)空間中的所有服務(wù),功能測試對虛擬數(shù)據(jù)空間系統(tǒng)規(guī)模沒有要求。在邊緣緩存服務(wù)節(jié)點與虛擬數(shù)據(jù)空間之間設(shè)置廣域網(wǎng)模擬器,邊緣緩存服務(wù)節(jié)點所有請求要通過廣域網(wǎng)模擬器才能到達虛擬數(shù)據(jù)空間。圖18中的交換機由VirtualBox的Host-Only網(wǎng)絡(luò)模擬,所有虛擬機配備由虛擬機模擬的千兆網(wǎng)卡,提供局域網(wǎng)千兆帶寬的物理鏈路。
圖18 功能測試虛擬機拓?fù)?/p>
邊緣客戶端和邊緣緩存服務(wù)節(jié)點處于同一網(wǎng)段中,虛擬數(shù)據(jù)空間系統(tǒng)在另一網(wǎng)段中;廣域網(wǎng)模擬器配置兩個網(wǎng)卡,分別處于兩個網(wǎng)段中,并且通過命令“echo “1” > /proc/sys/net/ipv4/ip_forward”開啟內(nèi)核對IP數(shù)據(jù)包轉(zhuǎn)發(fā)的功能,使得一個網(wǎng)卡接收的數(shù)據(jù)包可轉(zhuǎn)發(fā)到另外一個網(wǎng)卡上;虛擬數(shù)據(jù)空間所在的虛擬機和邊緣緩存系統(tǒng)所在的虛擬機都配置上通往對方網(wǎng)絡(luò)的靜態(tài)路由,網(wǎng)關(guān)為對應(yīng)廣域網(wǎng)模擬器的網(wǎng)卡IP地址,使得網(wǎng)絡(luò)互聯(lián)互通;在廣域網(wǎng)模擬器上設(shè)置網(wǎng)絡(luò)帶寬和時延參數(shù),完成實驗環(huán)境的配置。
(1)邊緣緩存服務(wù)節(jié)點功能測試
在IP地址為10.1.3.106的節(jié)點上部署并啟動了虛擬數(shù)據(jù)空間系統(tǒng)。該部分主要進行邊緣緩存文件管理接口功能測試。邊緣緩存系統(tǒng)提供POST/cache類型的REST管理接口,包括文件查詢接口、文件添加接口、文件同步接口和文件刪除接口;同時,在邊緣客戶端實現(xiàn)了對應(yīng)的管理命令行管理工具。邊緣緩存系統(tǒng)命令行工具與ge-cluster命令一樣,都要先將請求發(fā)送給邊緣客戶端,然后利用邊緣客戶端的全局信息將請求轉(zhuǎn)發(fā)給邊緣緩存服務(wù)節(jié)點,并由邊緣緩存服務(wù)節(jié)點處理請求。
① 邊緣緩存文件查詢
邊緣緩存文件查詢由ge-stat命令實現(xiàn)。為了測試的順利進行,提前在虛擬數(shù)據(jù)空間中存儲了多種類型的數(shù)據(jù),包括目錄、文本數(shù)據(jù)、圖片數(shù)據(jù)、音頻數(shù)據(jù)、視頻數(shù)據(jù)和二進制應(yīng)用等。最初所有這些數(shù)據(jù)都存儲在虛擬數(shù)據(jù)空間,在此條件下進行邊緣緩存文件查詢命令的測試。實驗結(jié)果顯示,邊緣緩存系統(tǒng)的查詢功能正常。
② 邊緣緩存文件添加
邊緣緩存文件添加由ge-add命令實現(xiàn)。ge-add通過邊緣客戶端將請求轉(zhuǎn)發(fā)到邊緣緩存服務(wù)節(jié)點,邊緣服務(wù)器節(jié)點將文件同步到本地,初始化邊緣緩存元數(shù)據(jù)信息,返回文件添加成功并提示用戶。重新使用ge-stat命令查詢該文件,返回結(jié)果顯示該文件已被邊緣緩存系統(tǒng)緩存。
③ 邊緣緩存文件同步
邊緣緩存文件同步由ge-sync命令實現(xiàn),當(dāng)虛擬數(shù)據(jù)空間中的文件被添加到邊緣緩存系統(tǒng)時,邊緣緩存系統(tǒng)將維護邊緣緩存本地文件和遠(yuǎn)程文件的一致性。gesync命令使用戶可以主動同步邊緣緩存系統(tǒng)中存儲的文件,這種操作有利于那些對文件時效性要求高的用戶。測試證明,邊緣緩存文件同步功能運行正常。
④ 邊緣緩存文件刪除
邊緣緩存文件刪除由ge-del命令實現(xiàn)。邊緣客戶端將ge-del請求轉(zhuǎn)發(fā)到邊緣緩存服務(wù)節(jié)點,邊緣緩存服務(wù)節(jié)點再異步刪除文件。邊緣緩存文件的刪除是指將邊緣緩存系統(tǒng)中的文件刪除。測試證明,邊緣緩存文件刪除功能運行正常。
(2)邊緣緩存客戶端功能測試
邊緣客戶 端功能測試包括邊緣客戶端掛載、基于一致性哈希算法的請求路由方法、邊緣客戶端POSIX接口兼容和第三方應(yīng)用運行。其中POSIX接口測試主要包含文件元數(shù)據(jù)查詢、修改,文件創(chuàng)建、寫、讀、復(fù)制、截斷、刪除,目錄創(chuàng)建、目錄查詢、目錄刪除等功能測試。
① 邊緣客戶端掛載測試
邊緣客戶端掛載測試主要用于展示邊緣客戶端是否能夠真實掛載和成功運行。邊緣客戶端是基于用戶空間文件系統(tǒng)(filesystem in userspace,F(xiàn)USE)實現(xiàn)的,且為用戶態(tài)文件系統(tǒng)。
通過mount命令輸出的信息可觀察到,client程序被掛載到/mnt/gvds節(jié)點上。因此,邊緣客戶端掛載功能運行正常。
② 請求路由方法測試
為了測試請求路由方法的可用性,啟動邊緣緩存服務(wù)節(jié)點1(IP地址為10.0.2.103)和邊緣緩存服務(wù)節(jié)點3(IP地址為10.0.2.105),通過ge-cluster命令獲取當(dāng)前的集群狀態(tài)。使用邊緣緩存文件查詢命令(ge-stat)測試路由機制的可用性。為了方便查看實驗結(jié)果,邊緣緩存服務(wù)節(jié)點每次接收到查詢請求時都會輸出客戶端查詢?nèi)罩?,通過ge-stat命令行依次統(tǒng)計虛擬數(shù)據(jù)空間中的文件是否在邊緣緩存中進行緩存。測試證明,文件請求路由方法功能運行正常。
③ 邊緣客戶端POSIX接口兼容測試
POSIX接口兼容測試主要包含:元數(shù)據(jù)查詢、修改;目錄創(chuàng)建、查詢、刪除;文件創(chuàng)建、寫、讀、復(fù)制、截斷、刪除。
通過ls命令查詢文件的元數(shù)據(jù)信息,證明了文件元數(shù)據(jù)查詢和修改功能可用;通過mkdir命令創(chuàng)建文件夾,查詢其元數(shù)據(jù)信息,并刪除目錄,證明了邊緣客戶端目錄創(chuàng)建、目錄查詢和目錄刪除功能可用。
文件操作驗證實驗證明,邊緣客戶端文件操作功能運行正常。
在真實的廣域網(wǎng)環(huán)境中,在有無邊緣緩存的情況下,對邊緣客戶端的讀寫數(shù)據(jù)與元數(shù)據(jù)的訪問等方面進行性能對比測試。在中科院網(wǎng)絡(luò)信息中心、國家超算濟南中心、國家超算長沙中心、上海超算中心和國家超算廣州中心5個節(jié)點上部署了測試環(huán)境。
筆者進行了3個性能對比實驗:
● 虛擬數(shù)據(jù)空間系統(tǒng)在有無邊緣緩存系統(tǒng)情況下的性能對比試驗,對比實驗從元數(shù)據(jù)訪問性能、文件訪問性能、文件并發(fā)訪問性能等方面進行;
● 在局域網(wǎng)內(nèi)搭建NFS,在相同局域網(wǎng)環(huán)境中,分析通過邊緣緩存系統(tǒng)訪問底層文件與通過NFS訪問底層文件系統(tǒng)的性能差異;
● 為了測試邊緣緩存系統(tǒng)本身帶來的性能損失,將邊緣客戶端與邊緣緩存服務(wù)節(jié)點部署在同一節(jié)點上,相比于直接訪問底層存儲,測試通過邊緣緩存系統(tǒng)訪問底層存儲帶來的性能損失。
圖19所示為廣域網(wǎng)環(huán)境的節(jié)點拓?fù)洹_吘壙蛻舳说呐渲?、邊緣緩存服?wù)節(jié)點配置以及國家超算濟南中心的服務(wù)器配置與功能測試環(huán)境配置相同。交換機為千兆網(wǎng)交換機,可提供局域網(wǎng)千兆帶寬的物理鏈路。
圖19 廣域網(wǎng)真實環(huán)境下節(jié)點拓?fù)?/p>
在廣域網(wǎng)環(huán)境節(jié)點的網(wǎng)絡(luò)配置中,邊緣客戶端和邊緣緩存服務(wù)節(jié)點處于同一局域網(wǎng)中。表4描述了本地局域網(wǎng)與廣域網(wǎng)的基本網(wǎng)絡(luò)情況測試結(jié)果。性能測試采用了Linux命令集和fio等測試命令。
表4 本地局域網(wǎng)與廣域網(wǎng)網(wǎng)絡(luò)基本情況測試結(jié)果
(1)在有無邊緣緩存系統(tǒng)的情況下廣域虛擬數(shù)據(jù)空間系統(tǒng)的性能
在客戶端未使用邊緣緩存模塊的情況下,數(shù)據(jù)通過原始的數(shù)據(jù)通路訪問廣域虛擬數(shù)據(jù)空間系統(tǒng),是廣域虛擬數(shù)據(jù)空間原始系統(tǒng)通路,記為GVDS;在客戶端使用邊緣緩存模塊的情況下,該客戶端被稱為邊緣客戶端,數(shù)據(jù)通過邊緣緩存通路訪問廣域虛擬數(shù)據(jù)空間系統(tǒng),是邊緣緩存系統(tǒng)通路,記為GeCache。對比實驗從元數(shù)據(jù)并發(fā)訪問性能、數(shù)據(jù)訪問性能和數(shù)據(jù)并發(fā)訪問性能3個方面進行。
圖20所示為GVDS與GeCache在多進程并發(fā)情況下元數(shù)據(jù)的訪問性能結(jié)果。圖20(a)顯示了文件創(chuàng)建操作的性能對比結(jié)果,隨著并發(fā)進程數(shù)的增加(從0增加到100),GeCache的整體性能(最高為75 IOPS)高于GVDS(最高為55 IOPS)。圖20(b)顯示了文件查詢操作的性能對比結(jié)果,并發(fā)進程數(shù)超過20時GVDS(并發(fā)進程數(shù)為50時吞吐量為7 600 IOPS)高于GeCache(并發(fā)進程數(shù)為50時吞吐量為5 500 IOPS);隨著并發(fā)進程數(shù)量的增長兩者趨于相同(并發(fā)進程數(shù)為100時,GVDS吞吐量為7 800 IOPS,GeCache吞吐量為7 600 IOPS)。圖20(c)顯示了文件刪除操作的性能測試結(jié)果,隨著并發(fā)進程數(shù)量的增長(從0增加到100),GeCache的性能(最高吞吐量為250 IOPS)一直高于GVDS(最高吞吐量為200 IOPS)。原因是在邊緣緩存存在的情況下,文件是直接在邊緣緩存中創(chuàng)建的,并異步在廣域虛擬數(shù)據(jù)空間系統(tǒng)中同步;文件刪除時,如果文件在邊緣緩存中,則先從邊緣緩存中刪除,再異步從廣域虛擬數(shù)據(jù)空間系統(tǒng)中刪除,因此文件創(chuàng)建和刪除時GeCache性能高于GVDS。文件狀態(tài)查詢時,因為邊緣緩存不包含文件元數(shù)據(jù),元數(shù)據(jù)需先從GVDS中獲取,再從GeCache中獲取被緩存的文件元數(shù)據(jù),導(dǎo)致通信次數(shù)增加,所以GeCache元數(shù)據(jù)查詢性能低于GVDS系統(tǒng)。后期可以采用元數(shù)據(jù)聚合和預(yù)取手段提高GeCache元數(shù)據(jù)訪問性能。
圖20 在多進程并發(fā)情況下GVDS與GeCache的元數(shù)據(jù)訪問性能
圖21所示為GVDS與GeCache的單進程文件讀寫性能測試結(jié)果,包括順序?qū)?、順序讀、隨機寫和隨機讀4種。 如圖21所示,隨著數(shù)據(jù)塊的增大(從8 KB增加到4 096 KB),GeCache的順序讀寫和隨機讀寫的性能遠(yuǎn)高于GVDS。例如,在塊大小為4 096 KB時,GeCache的隨機寫的吞吐率為90 000 KB/s,而GVDS的隨機寫的吞吐率只有10 000 KB/s。接下來分析實驗結(jié)果的原因,用戶在邊緣緩存系統(tǒng)中讀寫文件,在帶寬較高的情況下,GeCache的性能遠(yuǎn)遠(yuǎn)高于GVDS,且隨著數(shù)據(jù)塊增大,吞吐率差異巨大,由此證明邊緣緩存系統(tǒng)的有效性。另外,如圖21所示,GVDS在塊大于256 KB后,系統(tǒng)吞吐率趨于穩(wěn)定,這是因為此時已經(jīng)達到廣域網(wǎng)帶寬,而GeCache系統(tǒng)因為局域網(wǎng)千兆網(wǎng)優(yōu)勢,吞吐率逐漸上升。
圖21 GVDS與GeCache單進程情況下文件讀寫性能
圖22所示為GVDS與GeCache在多進程并發(fā)情況下的文件讀寫性能測試結(jié)果。如圖22所示,GeCache的性能在4種情況下都遠(yuǎn)高于GVDS。例如,在多進程多文件寫場景中,隨著并發(fā)進程的數(shù)量從0增加到100,GeCache的聚合帶寬可以達到110 000 KB/s,而GVDS只有將近100 KB/s。這是因為在多進程并發(fā)訪問的情況下,GVDS和GeCache的聚合帶寬大大提升;在并發(fā)進程數(shù)超過10之后,聚合帶寬變化趨于穩(wěn)定,這是因為GeCache達到了局域網(wǎng)千兆帶寬的瓶頸,GVDS系統(tǒng)達到了廣域網(wǎng)帶寬的瓶頸。
圖22 GVDS與GeCache多進程并發(fā)情況下文件讀寫性能
(2)局域網(wǎng)環(huán)境下網(wǎng)絡(luò)文件系統(tǒng)與邊緣緩存系統(tǒng)的性能對比
本實驗是在局域網(wǎng)環(huán)境下NFS與邊緣緩存系統(tǒng)的性能對比,NFS服務(wù)器與邊緣緩存服務(wù)節(jié)點運行在相同機器上,兩者具有相同的底層文件系統(tǒng)/mnt/lustre;NFS客戶端與邊緣客戶端位于相同機器上,這樣可保證實驗在相同的軟硬件環(huán)境下進行。
圖23所示是多進程并發(fā)情況下NFS與GeCache的文件讀寫性能測試結(jié)果。如圖23所示,當(dāng)進程并發(fā)量高于10時,NFS與GeCache系統(tǒng)聚合帶寬基本相同,并接近局域網(wǎng)帶寬。實驗結(jié)果說明,GeCache不僅可以在廣域網(wǎng)環(huán)境中提高虛擬數(shù)據(jù)空間系統(tǒng)的性能,還可以在局域網(wǎng)環(huán)境中提高虛擬數(shù)據(jù)空間系統(tǒng)的性能,并且?guī)淼拈_銷可以忽略不計。
圖23 NFS與GeCache多進程并發(fā)情況下文件讀寫性能
本文針對廣域網(wǎng)環(huán)境中邊緣用戶訪問冗余數(shù)據(jù)降低應(yīng)用性能的問題,通過研究虛擬數(shù)據(jù)空間系統(tǒng)中的緩存補充技術(shù),優(yōu)化了數(shù)據(jù)訪問通路,在邊緣客戶端訪問和共享遠(yuǎn)程數(shù)據(jù)時,避免了數(shù)據(jù)冗余傳輸造成的大量的網(wǎng)絡(luò)帶寬浪費,邊緣緩存系統(tǒng)將數(shù)據(jù)以文件粒度緩存在靠近邊緣客戶端的位置,可以提升上層應(yīng)用訪問和共享數(shù)據(jù)的性能。