霍建同,肖利民,霍志勝,徐耀文
1. 軟件開(kāi)發(fā)環(huán)境國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100191;2. 北京航空航天大學(xué)計(jì)算機(jī)學(xué)院,北京 100191
當(dāng)前中國(guó)國(guó)家高性能計(jì)算環(huán)境中總計(jì)算能力突破200 PFlops,總存儲(chǔ)容量超過(guò)160 PB,擁有2個(gè)南北主節(jié)點(diǎn)、6個(gè)國(guó)家級(jí)節(jié)點(diǎn)、11個(gè)普通節(jié)點(diǎn)。但各個(gè)節(jié)點(diǎn)廣域分散,計(jì)算與存儲(chǔ)資源難以統(tǒng)籌使用。當(dāng)前計(jì)算資源已經(jīng)基本做到全局調(diào)度,但存儲(chǔ)資源仍處于廣域分散、隔離自治的狀態(tài),未能實(shí)現(xiàn)統(tǒng)一管理和共享訪問(wèn)。隨著計(jì)算規(guī)模和數(shù)據(jù)量的快速增長(zhǎng),為了滿(mǎn)足大型高性能計(jì)算應(yīng)用跨域統(tǒng)一訪問(wèn)、廣域數(shù)據(jù)共享、存儲(chǔ)與計(jì)算協(xié)同的需求,基于國(guó)家重點(diǎn)研發(fā)計(jì)劃“高性能計(jì)算虛擬數(shù)據(jù)空間”項(xiàng)目,筆者設(shè)計(jì)并實(shí)現(xiàn)了廣域虛擬數(shù)據(jù)空間系統(tǒng)(global virtual data system,GVDS)[1],并在5個(gè)國(guó)家超級(jí)計(jì)算(以下簡(jiǎn)稱(chēng)超算)中心進(jìn)行了部署和驗(yàn)證,圖1為GVDS的部署情況。

圖1 GVDS的部署情況
如圖1所示,虛擬數(shù)據(jù)空間客戶(hù)端位于網(wǎng)絡(luò)邊緣,可稱(chēng)其為邊緣客戶(hù)端。邊緣客戶(hù)端一般部署于PC上,是用戶(hù)訪問(wèn)廣域虛擬數(shù)據(jù)空間系統(tǒng)的入口;伴隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,其還可部署在邊緣側(cè)的計(jì)算節(jié)點(diǎn)、數(shù)據(jù)采集節(jié)點(diǎn)和移動(dòng)設(shè)備上。用戶(hù)可通過(guò)客戶(hù)端直接訪問(wèn)廣域虛擬數(shù)據(jù)空間系統(tǒng),進(jìn)行跨超算中心的數(shù)據(jù)管理、共享和訪問(wèn)。然而,同一研究機(jī)構(gòu)內(nèi)的用戶(hù)在一段時(shí)間內(nèi)對(duì)相關(guān)的數(shù)據(jù)進(jìn)行共享和訪問(wèn)時(shí),廣域網(wǎng)環(huán)境中會(huì)多次傳輸冗余數(shù)據(jù),當(dāng)數(shù)據(jù)量較大且訪問(wèn)量過(guò)多時(shí),會(huì)造成網(wǎng)絡(luò)帶寬資源的浪費(fèi)。另外,隨著萬(wàn)物互聯(lián)時(shí)代[2]的到來(lái),邊緣計(jì)算[3]迅速發(fā)展,其將計(jì)算作業(yè)駐留在靠近數(shù)據(jù)源、靠近用戶(hù)的計(jì)算設(shè)備上運(yùn)行,可減少數(shù)據(jù)傳輸量,從而縮短數(shù)據(jù)傳輸時(shí)延,最終提高云計(jì)算中心的可用性和處理作業(yè)的能力。
接下來(lái),通過(guò)一個(gè)實(shí)例闡述當(dāng)前廣域虛擬數(shù)據(jù)空間系統(tǒng)在廣域環(huán)境中的冗余數(shù)據(jù)傳輸問(wèn)題。在氣象預(yù)測(cè)場(chǎng)景中,氣象數(shù)據(jù)大多來(lái)自網(wǎng)絡(luò)邊緣的采集設(shè)備,經(jīng)過(guò)多種處理工序,最終上傳到超算中心進(jìn)行分析,整個(gè)過(guò)程中會(huì)將產(chǎn)生的數(shù)據(jù)進(jìn)行多次共享和復(fù)制。盡管廣域虛擬數(shù)據(jù)空間系統(tǒng)可形成統(tǒng)一的存儲(chǔ)視圖,方便了數(shù)據(jù)管理和數(shù)據(jù)訪問(wèn),但當(dāng)同一區(qū)域的多個(gè)邊緣客戶(hù)端共享和訪問(wèn)數(shù)據(jù)時(shí),廣域網(wǎng)下仍存在大量的冗余數(shù)據(jù)復(fù)制。以圖2所示的天氣預(yù)測(cè)過(guò)程為例,氣象數(shù)據(jù)來(lái)源于全國(guó)各地的氣象監(jiān)測(cè)點(diǎn),數(shù)據(jù)主要包括氣溫、氣壓、降水、風(fēng)向、風(fēng)速、濕度和輻射等,數(shù)據(jù)通過(guò)氣象監(jiān)測(cè)站點(diǎn)的邊緣設(shè)備進(jìn)行同化處理后,匯總至省市級(jí)氣象站,之后進(jìn)一步匯總至區(qū)域級(jí)和國(guó)家級(jí)氣象信息中心進(jìn)行氣象預(yù)測(cè);各級(jí)氣象預(yù)測(cè)單位之間通過(guò)國(guó)家氣象計(jì)算網(wǎng)格[4-5]和中國(guó)國(guó)家網(wǎng)格的網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸。廣域虛擬數(shù)據(jù)空間系統(tǒng)對(duì)全局氣象數(shù)據(jù)實(shí)現(xiàn)了廣域網(wǎng)環(huán)境的統(tǒng)一管理和調(diào)度,然而,在廣州氣象局和福建氣象局同時(shí)需要山東氣象局的數(shù)據(jù)時(shí),兩者會(huì)同時(shí)從廣域網(wǎng)環(huán)境中訪問(wèn)并獲取數(shù)據(jù),從而造成冗余數(shù)據(jù)傳輸。假設(shè)在廣東氣象局設(shè)置邊緣存儲(chǔ)或者邊緣緩存,將氣象數(shù)據(jù)進(jìn)行緩存,廣州氣象局和福建氣象局從廣東氣象局獲取數(shù)據(jù)將極大地減少冗余數(shù)據(jù)傳輸。另一種情況,當(dāng)青島氣象局需要濟(jì)南氣象局的數(shù)據(jù)時(shí),如果在山東氣象局設(shè)置邊緣緩存,濟(jì)南的氣象數(shù)據(jù)不用到達(dá)虛擬數(shù)據(jù)空間核心空間,即可通過(guò)邊緣緩存將數(shù)據(jù)傳遞給青島氣象局,從而提高廣域虛擬數(shù)據(jù)空間系統(tǒng)的數(shù)據(jù)共享效率。

圖2 氣象數(shù)據(jù)處理流程
通過(guò)上述示例可知,盡管?chē)?guó)內(nèi)外僅有的幾個(gè)跨廣域網(wǎng)環(huán)境的存儲(chǔ)系統(tǒng)已經(jīng)實(shí)現(xiàn)了跨廣域環(huán)境的存儲(chǔ)資源的統(tǒng)一管理,如GVDS、歐洲網(wǎng)格基礎(chǔ)設(shè)施(EGI)[6],但仍面臨如下數(shù)據(jù)共享性能的新挑戰(zhàn):缺乏邊緣緩存系統(tǒng),導(dǎo)致數(shù)據(jù)在廣域網(wǎng)環(huán)境中進(jìn)行冗余傳輸,廣域環(huán)境存在很高的傳輸時(shí)延,無(wú)法充分發(fā)揮廣域虛擬數(shù)據(jù)空間系統(tǒng)的存儲(chǔ)資源聚合效應(yīng)的優(yōu)勢(shì),最終會(huì)降低高性能計(jì)算應(yīng)用的性能。
因此,靠近客戶(hù)端的邊緣緩存研究是跨廣域存儲(chǔ)系統(tǒng)研究領(lǐng)域的熱點(diǎn)之一,也是亟須解決的問(wèn)題之一。基于GVDS現(xiàn)有架構(gòu)構(gòu)建邊緣緩存系統(tǒng)具有十分重要的意義,可提高廣域虛擬數(shù)據(jù)空間數(shù)據(jù)訪問(wèn)和數(shù)據(jù)共享的效率,對(duì)于促進(jìn)高性能計(jì)算有重要的推動(dòng)作用。為了解決上述示例中邊緣客戶(hù)端在訪問(wèn)與共享數(shù)據(jù)時(shí)存在的問(wèn)題,本文在GVDS中設(shè)計(jì)并實(shí)現(xiàn)了云邊協(xié)同的邊緣緩存系統(tǒng),通過(guò)提升共享數(shù)據(jù)效率來(lái)提高邊緣用戶(hù)的整體數(shù)據(jù)訪問(wèn)性能,具體如下。
(1)設(shè)計(jì)并實(shí)現(xiàn)了邊緣緩存架構(gòu)及其關(guān)鍵技術(shù)
本文設(shè)計(jì)并實(shí)現(xiàn)了邊緣緩存系統(tǒng)的架構(gòu),并將其作為廣域虛擬數(shù)據(jù)空間系統(tǒng)的補(bǔ)充。該架構(gòu)最大限度地利用了跨域虛擬數(shù)據(jù)空間中現(xiàn)有的數(shù)據(jù)訪問(wèn)機(jī)制,盡可能地減少了對(duì)廣域虛擬數(shù)據(jù)空間基礎(chǔ)軟件系統(tǒng)的修改;另外,本文提出并實(shí)現(xiàn)了一系列邊緣緩存的關(guān)鍵技術(shù),具體包括緩存索引機(jī)制、緩存替換策略、邊緣緩存集群方案設(shè)計(jì)、緩存數(shù)據(jù)一致性策略。
(2)在廣域虛擬數(shù)據(jù)空間系統(tǒng)中實(shí)現(xiàn)了邊緣緩存系統(tǒng)
基于上述邊緣緩存的架構(gòu)和關(guān)鍵技術(shù),在廣域虛擬數(shù)據(jù)空間系統(tǒng)中實(shí)現(xiàn)了邊緣緩存系統(tǒng)。邊緣緩存系統(tǒng)由邊緣客戶(hù)端模塊和邊緣緩存服務(wù)節(jié)點(diǎn)組成,其中邊緣緩存服務(wù)節(jié)點(diǎn)包括緩存接口層、緩存組織層和數(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)上放置多個(gè)副本,并通過(guò)中心平臺(tái)的調(diào)度和負(fù)載均衡策略,將用戶(hù)的訪問(wèn)發(fā)送到距離較近的內(nèi)容服務(wù)器上,從而緩解網(wǎng)絡(luò)擁塞,提高廣域網(wǎng)數(shù)據(jù)訪問(wèn)的速度。
2006年亞馬遜提出了彈性計(jì)算云(elastic compute cloud)的概念,在計(jì)算、存儲(chǔ)和可視化等方面開(kāi)啟了許多新的機(jī)遇。Ramaswamy L等人[8]提出了合作式邊緣緩存網(wǎng)格,該網(wǎng)格由多個(gè)分布式的邊緣緩存云組成,如果緩存未命中,邊緣緩存節(jié)點(diǎn)能夠從臨近的邊緣緩存云中獲取文件數(shù)據(jù),以縮短用戶(hù)等待時(shí)間。2009年,卡內(nèi)基梅隆大學(xué)的Satyanarayanan M等人[9]引入了微云(Cloudlet)作為邊緣計(jì)算的形式,Cloudlet部署在網(wǎng)絡(luò)邊緣,并與互聯(lián)網(wǎng)連接,是一個(gè)可信且資源豐富的主機(jī),可以被移動(dòng)設(shè)備訪問(wèn)及為其提供服務(wù)。
2014年,Storj Labs提出了一種去中心化的云存儲(chǔ)平臺(tái)STORJ[10],該平臺(tái)使用P2P網(wǎng)絡(luò)連接存儲(chǔ)設(shè)備,并借助以太坊區(qū)塊鏈技術(shù)激勵(lì)用戶(hù)將閑置的存儲(chǔ)資源充分利用起來(lái),從而以非常低廉的維護(hù)和管理成本為邊緣端提供存儲(chǔ)服務(wù)。2017年,Chen B Q等人[11]提出了一種基于D2D(device to device)網(wǎng)絡(luò)的邊緣緩存模型,其按照集群的方式劃分邊緣用戶(hù),將熱文件緩存在各個(gè)集群中,從而可將D2D緩存網(wǎng)絡(luò)的吞吐量提高4倍。2019年,Tan H S等人[12]研究了多個(gè)邊緣服務(wù)器的在線協(xié)作緩存機(jī)制,當(dāng)本地邊緣服務(wù)器沒(méi)有所需數(shù)據(jù)/服務(wù)時(shí),可以選擇與周邊的邊緣服務(wù)器關(guān)聯(lián)合作(代價(jià)小),或者將服務(wù)請(qǐng)求直接發(fā)送到云端數(shù)據(jù)中心(代價(jià)大),或者下載云端數(shù)據(jù)/服務(wù)安裝到本地,并在必要時(shí)替換本地已有內(nèi)容(代價(jià)大),其分別設(shè)計(jì)了具有確定性和隨機(jī)性的在線協(xié)作機(jī)制,優(yōu)化了服務(wù)所需代價(jià),給出了性能的理論保證(具有漸進(jìn)最優(yōu)的競(jìng)爭(zhēng)比),通過(guò)真實(shí)/基準(zhǔn)數(shù)據(jù)集模擬,驗(yàn)證了該機(jī)制的有效性。
綜上所述,現(xiàn)有邊緣緩存面臨如下問(wèn)題。
● 現(xiàn)有邊緣緩存研究都是針對(duì)互聯(lián)網(wǎng)環(huán)境中的數(shù)據(jù)共享應(yīng)用的,沒(méi)有考慮國(guó)家網(wǎng)格中高性能計(jì)算應(yīng)用負(fù)載的需求,如跨多個(gè)超算中心的存算協(xié)同等要求,從而無(wú)法滿(mǎn)足國(guó)家各超算中心跨廣域的數(shù)據(jù)共享需求。因此,不能有效地滿(mǎn)足廣域虛擬數(shù)據(jù)空間系統(tǒng)的性能需求。
● 現(xiàn)在國(guó)內(nèi)外沒(méi)有開(kāi)源的邊緣緩存系統(tǒng),現(xiàn)有的系統(tǒng)多為商業(yè)系統(tǒng)且閉源。通過(guò)研究自主可控的邊緣緩存系統(tǒng)并將其開(kāi)源,將彌補(bǔ)國(guó)家網(wǎng)格中高性能計(jì)算環(huán)境的空白,并進(jìn)一步提升廣域虛擬數(shù)據(jù)空間系統(tǒng)的性能,有效地提高大型高性能計(jì)算應(yīng)用的性能。
作為廣域虛擬數(shù)據(jù)空間系統(tǒng)的補(bǔ)充,邊緣緩存系統(tǒng)主要包括邊緣客戶(hù)端和邊緣緩存服務(wù)節(jié)點(diǎn),具體架構(gòu)如圖3所示。邊緣客戶(hù)端處于網(wǎng)絡(luò)邊緣,可感知邊緣緩存系統(tǒng)的存在;邊緣緩存服務(wù)節(jié)點(diǎn)是邊緣緩存的主要組成部分,多個(gè)服務(wù)節(jié)點(diǎn)可以組成邊緣緩存集群,并為邊緣客戶(hù)端提供服務(wù)。邊緣緩存服務(wù)節(jié)點(diǎn)提供邊緣緩存系統(tǒng)的核心功能,包括緩存管理、緩存服務(wù)和緩存集群維護(hù)等。邊緣緩存系統(tǒng)被設(shè)計(jì)為同構(gòu)集群。

圖3 邊緣緩存系統(tǒng)的架構(gòu)
邊緣緩存系統(tǒng)將廣域虛擬數(shù)據(jù)空間系統(tǒng)中的數(shù)據(jù)以文件粒度進(jìn)行緩存,整個(gè)邊緣緩存系統(tǒng)以鍵值形式的扁平化數(shù)據(jù)結(jié)構(gòu)進(jìn)行索引。邊緣緩存系統(tǒng)的工作流程如圖4所示。

圖4 邊緣緩存工作流程
邊緣客戶(hù)端請(qǐng)求文件時(shí),首先判斷邊緣緩存服務(wù)節(jié)點(diǎn)中是否完整地緩存了該文件及文件是否有效,如果有效,則響應(yīng)邊緣客戶(hù)端的文件請(qǐng)求,并更新對(duì)應(yīng)緩存文件的請(qǐng)求次數(shù)、最后請(qǐng)求時(shí)間等相關(guān)信息;如果邊緣緩存服務(wù)節(jié)點(diǎn)未緩存該文件,邊緣客戶(hù)端主動(dòng)向廣域虛擬數(shù)據(jù)空間系統(tǒng)的核心空間請(qǐng)求獲取數(shù)據(jù),廣域虛擬數(shù)據(jù)空間系統(tǒng)響應(yīng)邊緣客戶(hù)端的請(qǐng)求,完成整個(gè)數(shù)據(jù)請(qǐng)求流程;邊緣客戶(hù)端向邊緣緩存服務(wù)節(jié)點(diǎn)請(qǐng)求文件,當(dāng)邊緣緩存服務(wù)節(jié)點(diǎn)未緩存該文件且該文件達(dá)到緩存條件時(shí),邊緣緩存系統(tǒng)將主動(dòng)向廣域虛擬數(shù)據(jù)空間系統(tǒng)發(fā)送文件請(qǐng)求進(jìn)行預(yù)緩存,邊緣緩存服務(wù)節(jié)點(diǎn)首先判斷是否有能力存儲(chǔ)該文件,如果無(wú)足夠空間,則根據(jù)緩存替換策略,替換出緩存中價(jià)值量最小的文件,直到該文件能夠被緩存。為了防止遠(yuǎn)程文件過(guò)大的現(xiàn)象出現(xiàn),邊緣緩存對(duì)文件大小設(shè)置閾值K(如1 GB),當(dāng)預(yù)緩存文件小于文件閾值時(shí),邊緣緩存系統(tǒng)緩存整個(gè)文件,否則邊緣緩存將緩存文件大小為K的前面部分內(nèi)容,并計(jì)算緩存價(jià)值量。
3.2.1 邊緣緩存索引機(jī)制的設(shè)計(jì)
邊緣緩存系統(tǒng)采用兩層索引機(jī)制進(jìn)行緩存文件的查找。整個(gè)邊緣緩存系統(tǒng)的元數(shù)據(jù)持久化存儲(chǔ)在分布式KV數(shù)據(jù)庫(kù)系統(tǒng)中,索引機(jī)制具體細(xì)節(jié)如下。
圖5所示為邊緣緩存系統(tǒng)的第一層映射機(jī)制:文件全局路徑到緩存文件元數(shù)據(jù)的映射。緩存文件元數(shù)據(jù)除了包含緩存文件的生存時(shí)間值(time to live,TTL)、訪問(wèn)頻度、文件大小等,還包含文件指紋和文件UUID(universally unique identifier)信息。其中文件指紋和UUID可由算法生成,用于唯一表示數(shù)據(jù)。文件指紋主要用來(lái)向廣域虛擬數(shù)據(jù)空間文件系統(tǒng)發(fā)送申請(qǐng),以校驗(yàn)文件是否過(guò)期,文件UUID表示文件在分布式文件系統(tǒng)中的存儲(chǔ)路徑。

圖5 第一層映射:文件全局路徑到緩存文件元數(shù)據(jù)的映射
圖6所示為邊緣緩存中的第二層映射,該映射表示文件指紋到文件UUID的映射。UUID可以被看作磁盤(pán)上的一個(gè)文件。第二層映射主要用于數(shù)據(jù)去重,邊緣緩存系統(tǒng)中的文件都是通過(guò)廣域網(wǎng)從虛擬數(shù)據(jù)空間系統(tǒng)中獲取的,當(dāng)需要獲取遠(yuǎn)程文件時(shí),如果文件指紋與已經(jīng)緩存的文件匹配,則在底層文件系統(tǒng)中創(chuàng)建軟鏈接即可。

圖6 第二層映射:文件指紋到文件UUID的映射
3.2.2 邊緣緩存替換策略
緩存替換策略是提高緩存性能的關(guān)鍵技術(shù)之一,基于成本/價(jià)值模型的替換策略綜合考慮了替換對(duì)象的大小、訪問(wèn)頻率、訪問(wèn)時(shí)間、訪問(wèn)時(shí)間間隔和獲取代價(jià)等因素。本文提出了一種基于貪婪對(duì)偶大小次數(shù)(greedydual size frequency,GDSF)優(yōu)化策略的替換方法,并將其作為邊緣緩存系統(tǒng)的替換策略,具體如下。
(1)初始化文件的價(jià)值參數(shù)L=0,邊緣緩存空間的總大小為T(mén)otal,已經(jīng)使用的存儲(chǔ)空間大小為Used,初始Used=0。
(2)如果請(qǐng)求的文件i在緩存中已經(jīng)有副本,則Used值不變,文件訪問(wèn)頻率Fr(i)加1,如式(1)所示:

同時(shí)根據(jù)目標(biāo)函數(shù),重新計(jì)算文件i的價(jià)值H(i)。
(3)如果請(qǐng)求的文件i在緩存中不存在副本,那么邊緣客戶(hù)端將向廣域虛擬數(shù)據(jù)空間系統(tǒng)獲取文件數(shù)據(jù)。當(dāng)文件請(qǐng)求表中對(duì)應(yīng)的文件超過(guò)閾值時(shí),邊緣緩存系統(tǒng)獲取文件的前K個(gè)部分(Size(i)),并進(jìn)行緩存。文件訪問(wèn)次數(shù)Fr(i)=1,計(jì)算對(duì)象的價(jià)值,并將文件保存到緩存中,Used值會(huì)發(fā)生變換,如式(2)所示:

這時(shí),根據(jù)邊緣緩存系統(tǒng)的剩余空間是否足夠,分為兩種情況:
① 剩余空間足夠,即Used≤Total,此時(shí)不需要進(jìn)行緩存替換,把新文件i存放在邊緣緩存中;
② 緩存空間不足,即Used>Total,此時(shí)必須進(jìn)行對(duì)象替換,在緩存中選擇k個(gè)具有非零最小代價(jià)H(i)的文件組i1,i2,…,ik,滿(mǎn)足如式(3)、式(4)所示的2個(gè)條件:

然后根據(jù)請(qǐng)求的文件i是否在替換文件中分成如下兩種情況:
● 如果請(qǐng)求的對(duì)象i不在這k個(gè)文件i1, i2,…,ik中,那么L的值就是這k個(gè)文件中價(jià)值H最大的那個(gè)值,然后按照式(5)、式(6)計(jì)算得到L和Used的值;

● 如果請(qǐng)求的文件i在這k個(gè)文件中,表明新文件i的價(jià)值不足以被緩存,因此不需要替換任何對(duì)象,只要把Used值恢復(fù)到原來(lái)的大小即可,Used=Used-Size(i)。
(4)在清除文件時(shí),要考慮其是否被其他軟鏈接索引,再進(jìn)行實(shí)際刪除。
整個(gè)邊緣緩存替換流程如圖7所示。

圖7 邊緣緩存文件對(duì)象替換策略流程
隨著單一科研機(jī)構(gòu)中客戶(hù)端數(shù)量的增多,單個(gè)邊緣緩存服務(wù)節(jié)點(diǎn)將成為邊緣緩存系統(tǒng)的瓶頸。本文采用集群的方式來(lái)提高邊緣緩存系統(tǒng)的服務(wù)能力。本文提出的邊緣緩存系統(tǒng)的集群方案設(shè)計(jì)主要包括同構(gòu)集群結(jié)構(gòu)設(shè)計(jì)[13]、基于一致性哈希算法的請(qǐng)求路由方法[14]、基于可伸縮可傳導(dǎo)的弱一致性進(jìn)程組成員資格(SWIM)協(xié)議[15]的集群成員維護(hù)方法。
3.3.1 同構(gòu)集群結(jié)構(gòu)設(shè)計(jì)
邊緣緩存系統(tǒng)是廣域虛擬數(shù)據(jù)空間系統(tǒng)的補(bǔ)充軟件,為了降低系統(tǒng)的復(fù)雜性,本文將邊緣緩存系統(tǒng)設(shè)計(jì)為同構(gòu)集群,圖8所示為邊緣緩存系統(tǒng)的集群架構(gòu)。如圖8所示,邊緣緩存系統(tǒng)由同構(gòu)的邊緣緩存服務(wù)節(jié)點(diǎn)構(gòu)成,每個(gè)邊緣緩存服務(wù)節(jié)點(diǎn)都具有緩存數(shù)據(jù)服務(wù)、緩存數(shù)據(jù)管理和集群狀態(tài)維護(hù)等功能,最上層為部署在研究所內(nèi)各類(lèi)終端上的虛擬數(shù)據(jù)空間客戶(hù)端,這些客戶(hù)端在啟動(dòng)時(shí)可以選擇是否使用邊緣緩存系統(tǒng)。當(dāng)不使用邊緣緩存系統(tǒng)時(shí),客戶(hù)端可直接從廣域虛擬數(shù)據(jù)空間系統(tǒng)進(jìn)行數(shù)據(jù)訪問(wèn),客戶(hù)端后續(xù)不能感知到邊緣緩存系統(tǒng)的存在;當(dāng)選擇使用邊緣緩存系統(tǒng)時(shí),客戶(hù)端在訪問(wèn)文件時(shí),首先查詢(xún)想訪問(wèn)的文件是否在邊緣緩存系統(tǒng)中,如果已緩存,則通過(guò)Proxy方式直接從邊緣緩存系統(tǒng)獲取文件;如果文件未在邊緣緩存系統(tǒng)中緩存,則通過(guò)Bypass方式直接從廣域虛擬數(shù)據(jù)空間系統(tǒng)訪問(wèn)數(shù)據(jù)。

圖8 邊緣緩存系統(tǒng)的集群架構(gòu)
3.3.2 基于一致性哈希算法的請(qǐng)求路由方法
當(dāng)集群中存在多個(gè)同構(gòu)的邊緣緩存服務(wù)節(jié)點(diǎn)時(shí),邊緣客戶(hù)端訪問(wèn)任意一個(gè)節(jié)點(diǎn)即可獲取邊緣緩存服務(wù)。盡管各個(gè)邊緣緩存服務(wù)節(jié)點(diǎn)提供的功能相同,但由于節(jié)點(diǎn)間性能不同,向外提供的服務(wù)能力也不同。因此,需要研究相關(guān)負(fù)載均衡(loadbalancing)方法把請(qǐng)求路由到合適的邊緣緩存服務(wù)節(jié)點(diǎn)上。盡管一致性哈希算法可將邊緣緩存服務(wù)節(jié)點(diǎn)加入和退出的影響降到最低,但在服務(wù)器數(shù)量較少時(shí)會(huì)導(dǎo)致映射不均勻,因此,本文提出了基于虛擬節(jié)點(diǎn)機(jī)制的一致性哈希策略的請(qǐng)求路由算法。
具體地,引入虛擬節(jié)點(diǎn)的機(jī)制,即根據(jù)每個(gè)邊緣緩存服務(wù)節(jié)點(diǎn)自身的性能進(jìn)行多次哈希計(jì)算,再映射到圓環(huán)上。如圖9所示,以1個(gè)邊緣緩存服務(wù)節(jié)點(diǎn)(圖9中簡(jiǎn)稱(chēng)為緩存服務(wù)節(jié)點(diǎn)2)為例,分別增加1A、1B、1C、2B和2C虛擬節(jié)點(diǎn),并將這些虛擬節(jié)點(diǎn)映射到哈希環(huán)上。通過(guò)這種方式,節(jié)點(diǎn)的分布更加均勻,文件訪問(wèn)仍然根據(jù)先前的方法進(jìn)行路由,并增加虛擬節(jié)點(diǎn)到物理節(jié)點(diǎn)的映射,文件訪問(wèn)請(qǐng)求被路由到相應(yīng)的邊緣緩存服務(wù)節(jié)點(diǎn)中,可解決請(qǐng)求路由在邊緣緩存服務(wù)節(jié)點(diǎn)中分布不均勻的問(wèn)題。

圖9 一致性哈希的虛擬節(jié)點(diǎn)
3.3.3 基于SWIM協(xié)議的集群成員維護(hù)方法
邊緣緩存系統(tǒng)采用SWIM協(xié)議維護(hù)邊緣緩存服務(wù)節(jié)點(diǎn)的狀態(tài)信息。每個(gè)邊緣緩存服務(wù)節(jié)點(diǎn)在內(nèi)存中都維護(hù)一個(gè)狀態(tài)表,該表記錄了當(dāng)前集群中活躍節(jié)點(diǎn)的狀態(tài)信息,狀態(tài)信息包括當(dāng)前活躍節(jié)點(diǎn)的IP地址、開(kāi)放的服務(wù)端口和節(jié)點(diǎn)的負(fù)載信息等。各節(jié)點(diǎn)周期性地從狀態(tài)表中選擇節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)探包確認(rèn)(ping-ack)操作。當(dāng)有節(jié)點(diǎn)加入、離開(kāi)或檢測(cè)到節(jié)點(diǎn)失效時(shí),通過(guò)Gossip協(xié)議[16]以點(diǎn)對(duì)點(diǎn)的方式向集群中其他節(jié)點(diǎn)通知狀態(tài)的變動(dòng)。SWIM協(xié)議滿(mǎn)足最終一致性,一定周期后集群狀態(tài)將達(dá)到一致。
邊緣緩存系統(tǒng)一致性主要包括邊緣緩存系統(tǒng)內(nèi)、邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)間兩個(gè)層次的數(shù)據(jù)一致性。
3.4.1 邊緣緩存系統(tǒng)內(nèi)的數(shù)據(jù)一致性機(jī)制
邊緣緩存系統(tǒng)內(nèi)的數(shù)據(jù)一致性由鎖機(jī)制來(lái)保證。鎖模型中包含3種鎖:共享鎖(S,shared)、排他鎖(X,excluded)和共享排他鎖(SX,shared excluded)。S和X模式是經(jīng)典的兩種讀寫(xiě)鎖模式,SX模式是對(duì)X模式的優(yōu)化,它與S模式是兼容的。表1描述了3種鎖的兼容性關(guān)系。

表1 鎖兼容關(guān)系表
圖10所示為在分布式鎖和文件鎖加入后邊緣客戶(hù)端EA訪問(wèn)緩存文件的過(guò)程。EA在訪問(wèn)邊緣緩存文件F1時(shí),首先訪問(wèn)邊緣緩存服務(wù)節(jié)點(diǎn)(在圖10~圖14中簡(jiǎn)稱(chēng)為緩存服務(wù)節(jié)點(diǎn))ES1,ES1獲取F1的緩存元數(shù)據(jù)的共享排他鎖,EA先通過(guò)ES1獲取F1的文件共享排他鎖,之后才能獲取F1文件數(shù)據(jù)。

圖10 在一致性機(jī)制下EA訪問(wèn)邊緣緩存文件的過(guò)程
如圖11所示,邊緣客戶(hù)端EA首先通過(guò)邊緣緩存服務(wù)節(jié)點(diǎn)ES1獲取F1元數(shù)據(jù)的共享排他鎖,并繼續(xù)后續(xù)訪問(wèn)。此時(shí)邊緣客戶(hù)端EB也通過(guò)邊緣緩存服務(wù)節(jié)點(diǎn)ES2獲取F1元數(shù)據(jù)的共享排他鎖,因?yàn)殒i的兼容性,此時(shí)只能獲得共享鎖。在ES1對(duì)F1元數(shù)據(jù)進(jìn)行維護(hù)時(shí),ES2只能對(duì)元數(shù)據(jù)進(jìn)行查詢(xún)操作。

圖11 元數(shù)據(jù)加鎖過(guò)程
圖12所示為文件加鎖過(guò)程,邊緣客戶(hù)端EA訪問(wèn)緩存數(shù)據(jù)F1,首先通過(guò)邊緣緩存服務(wù)節(jié)點(diǎn)ES1獲取F1元數(shù)據(jù)的共享排他鎖,需要獲取文件的共享排他鎖才可修改F1。邊緣客戶(hù)端EB也訪問(wèn)F1時(shí),只能獲取F1的共享鎖,并進(jìn)行只讀操作。

圖12 文件鎖沖突過(guò)程
圖13所示為緩存維護(hù)文件數(shù)據(jù)時(shí)的加鎖過(guò)程,邊緣緩存服務(wù)節(jié)點(diǎn)ES1在獲取F1的元數(shù)據(jù)排他鎖和F1的文件排他鎖后進(jìn)行緩存數(shù)據(jù)的維護(hù)。此時(shí),邊緣緩存系統(tǒng)正在維護(hù)F1數(shù)據(jù),其他邊緣緩存服務(wù)節(jié)點(diǎn)訪問(wèn)F1的元數(shù)據(jù)時(shí)加鎖都不能成功。

圖13 緩存服務(wù)節(jié)點(diǎn)維護(hù)文件數(shù)據(jù)時(shí)的加鎖過(guò)程
3.4.2 邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)之間的一致性機(jī)制
邊緣緩存系統(tǒng)采用類(lèi)網(wǎng)絡(luò)文件系統(tǒng)(network file system,NFS)的語(yǔ)義模型進(jìn)行一致性控制,實(shí)現(xiàn)“打開(kāi)-關(guān)閉”的一致性,并定期回寫(xiě)數(shù)據(jù),以達(dá)到邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)的最終一致性;同時(shí),邊緣緩存系統(tǒng)會(huì)設(shè)置緩存文件的TTL和文件指紋。當(dāng)文件被邊緣客戶(hù)端再次訪問(wèn)時(shí),首先會(huì)檢查文件指紋是否匹配,如果匹配,則通過(guò)邊緣緩存系統(tǒng)訪問(wèn)文件數(shù)據(jù),否則繞過(guò)邊緣緩存系統(tǒng)直接訪問(wèn)廣域虛擬數(shù)據(jù)空間系統(tǒng)。邊緣緩存系統(tǒng)周期性地通過(guò)文件的TTL檢查文件是否與廣域虛擬數(shù)據(jù)空間系統(tǒng)一致,如果文件過(guò)期,則通過(guò)比較文件指紋來(lái)決定是否重新同步文件,并更新TTL。
邊緣緩存系統(tǒng)會(huì)檢查文件是否過(guò)期,如果未過(guò)期,則認(rèn)為緩存文件可用;如果文件過(guò)期且文件指紋與遠(yuǎn)程文件指紋不同,則重新同步文件。
圖14所示為同步過(guò)程,邊緣緩存服務(wù)節(jié)點(diǎn)ES1首先獲取F1的元數(shù)據(jù)排他鎖,檢查緩存的文件和F1文件指紋是否相同或檢查數(shù)據(jù)是否達(dá)到同步周期。如果達(dá)到同步周期,ES1獲取F1的文件排他鎖進(jìn)行數(shù)據(jù)同步;同時(shí),當(dāng)邊緣客戶(hù)端完成對(duì)緩存文件數(shù)據(jù)的讀寫(xiě)時(shí),將緩存的文件同步到廣域虛擬數(shù)據(jù)空間系統(tǒng)中,并可設(shè)置寫(xiě)回間隔,以滿(mǎn)足類(lèi)NFS語(yǔ)義。

圖14 邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)的同步過(guò)程
為了實(shí)現(xiàn)邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)之間的交互,需要設(shè)計(jì)合理的交互接口。本節(jié)將介紹邊緣緩存系統(tǒng)中的緩存管理接口和數(shù)據(jù)訪問(wèn)接口,從而實(shí)現(xiàn)邊緣緩存系統(tǒng)與廣域虛擬數(shù)據(jù)空間系統(tǒng)的對(duì)接。表2和表3描述了緩存管理RESTful接口和數(shù)據(jù)訪問(wèn)接口。

表2 緩 存管理RESTful接口

表3 緩存管理數(shù)據(jù)訪問(wèn)接口
圖15所示為邊緣緩存系統(tǒng)在廣域虛擬數(shù)據(jù)空間系統(tǒng)中的具體實(shí)現(xiàn)。邊緣客戶(hù)端和邊緣緩存服務(wù)節(jié)點(diǎn)共同組成了邊緣緩存系統(tǒng)。邊緣緩存服務(wù)節(jié)點(diǎn)提供邊緣緩存系統(tǒng)的核心功能,包括緩存管理、緩存服務(wù)和緩存集群維護(hù)等功能。邊緣客戶(hù)端包括虛擬數(shù)據(jù)空間客戶(hù)端模塊,使得虛擬數(shù)據(jù)空間客戶(hù)端能夠感知邊緣緩存系統(tǒng)的存在。

圖15 邊緣緩存系統(tǒng)在廣域虛擬數(shù)據(jù)空間中的實(shí)現(xiàn)
圖16所示為邊緣緩存系統(tǒng)的組成。邊緣緩存系統(tǒng)包含5層,其中,最上層為客戶(hù)端層,客戶(hù)端層主要包括緩存管理命令行工具、虛擬數(shù)據(jù)空間邊緣客戶(hù)端;中間3層組成了邊緣緩存服務(wù)節(jié)點(diǎn),其包含緩存接口層、緩存組織層和數(shù)據(jù)服務(wù)層,緩存接口層包括緩存管理接口模塊、緩存數(shù)據(jù)訪問(wèn)接口模塊,緩存組織層包含集群維護(hù)模塊、緩存管理模塊、緩存服務(wù)模塊,數(shù)據(jù)服務(wù)層包含KV數(shù)據(jù)庫(kù)模塊、本地I/O模塊及遠(yuǎn)程I/O模塊;最下面一層為資源層,包含分布式KV數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)文件系統(tǒng)和虛擬數(shù)據(jù)空間核心空間,邊緣客戶(hù)端可以繞過(guò)中間3層,直接與處于資源層的廣域虛擬數(shù)據(jù)空間系統(tǒng)進(jìn)行通信,并獲取數(shù)據(jù)。圖17所示為邊緣緩存系統(tǒng)中各模塊間的具體交互。

圖16 邊緣緩存系統(tǒng)的模塊組成

圖17 邊緣緩存系統(tǒng)模塊交互
測(cè)試主要包括功能測(cè)試和性能測(cè)試。功能測(cè)試包括對(duì)邊緣客戶(hù)端和邊緣緩存服務(wù)節(jié)點(diǎn)功能的測(cè)試。在緩存服務(wù)節(jié)點(diǎn)側(cè),包括對(duì)緩存服務(wù)節(jié)點(diǎn)的集群功能和邊緣緩存管理功能的測(cè)試。在邊緣客戶(hù)端側(cè),包括邊緣客戶(hù)端POSIX接口兼容和請(qǐng)求路由方法測(cè)試等,其中POSIX接口兼容測(cè)試主要包含文件元數(shù)據(jù)查詢(xún)、修改,文件創(chuàng)建、寫(xiě)、讀、復(fù)制及截?cái)嗟龋夸泟?chuàng)建、查詢(xún)、刪除等,以及第三方應(yīng)用運(yùn)行的測(cè)試。關(guān)于性能測(cè)試,在廣域網(wǎng)真實(shí)環(huán)境中,在有無(wú)邊緣緩存的情況下,分別對(duì)邊緣客戶(hù)端的元數(shù)據(jù)與數(shù)據(jù)讀寫(xiě)等操作的性能進(jìn)行對(duì)比測(cè)試。
在整個(gè)測(cè)試過(guò)程中,在PC上通過(guò)虛擬機(jī)對(duì)邊緣緩存系統(tǒng)的功能進(jìn)行測(cè)試。筆者在真實(shí)廣域網(wǎng)環(huán)境中對(duì)邊緣緩存系統(tǒng)的元數(shù)據(jù)和數(shù)據(jù)訪問(wèn)的性能進(jìn)行測(cè)試。功能測(cè)試的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)邊緣客戶(hù)端配置為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至強(qiáng)金牌5118 CPU,128 GB內(nèi)存,Ubuntu 18.04.5操作系統(tǒng);國(guó)家超算濟(jì)南中心測(cè)試環(huán)境服務(wù)器配置為2顆Intel至強(qiáng)金牌51167 CPU,64 GB內(nèi)存,Ubuntu 18.04.5操作系統(tǒng)。
為了保持軟件環(huán)境一致,測(cè)試使用的主要軟件、工具及其對(duì)應(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ò)信息中心、國(guó)家超算濟(jì)南中心、國(guó)家超算長(zhǎng)沙中心、上海超算中心和國(guó)家超算廣州中心5個(gè)節(jié)點(diǎn)上部署了廣域虛擬數(shù)據(jù)空間系統(tǒng)。
如圖18所示,為了利用虛擬機(jī)對(duì)邊緣緩存系統(tǒng)的功能進(jìn)行測(cè)試,實(shí)驗(yàn)配置了虛擬機(jī)拓?fù)浣Y(jié)構(gòu),所有虛擬機(jī)通過(guò)VirtualBox運(yùn)行在PC上。邊緣客戶(hù)端由兩臺(tái)虛擬機(jī)模擬,邊緣緩存服務(wù)節(jié)點(diǎn)由3臺(tái)虛擬機(jī)模擬,邊緣緩存服務(wù)節(jié)點(diǎn)還共同連接同一個(gè)分布式KV數(shù)據(jù)庫(kù)和Lustre文件系統(tǒng),Lustre文件系統(tǒng)也部署在獨(dú)立的虛擬機(jī)上。虛擬數(shù)據(jù)空間系統(tǒng)由一臺(tái)性能較高的虛擬機(jī)模擬,該虛擬機(jī)運(yùn)行虛擬數(shù)據(jù)空間中的所有服務(wù),功能測(cè)試對(duì)虛擬數(shù)據(jù)空間系統(tǒng)規(guī)模沒(méi)有要求。在邊緣緩存服務(wù)節(jié)點(diǎn)與虛擬數(shù)據(jù)空間之間設(shè)置廣域網(wǎng)模擬器,邊緣緩存服務(wù)節(jié)點(diǎn)所有請(qǐng)求要通過(guò)廣域網(wǎng)模擬器才能到達(dá)虛擬數(shù)據(jù)空間。圖18中的交換機(jī)由VirtualBox的Host-Only網(wǎng)絡(luò)模擬,所有虛擬機(jī)配備由虛擬機(jī)模擬的千兆網(wǎng)卡,提供局域網(wǎng)千兆帶寬的物理鏈路。

圖18 功能測(cè)試虛擬機(jī)拓?fù)?/p>
邊緣客戶(hù)端和邊緣緩存服務(wù)節(jié)點(diǎn)處于同一網(wǎng)段中,虛擬數(shù)據(jù)空間系統(tǒng)在另一網(wǎng)段中;廣域網(wǎng)模擬器配置兩個(gè)網(wǎng)卡,分別處于兩個(gè)網(wǎng)段中,并且通過(guò)命令“echo “1” > /proc/sys/net/ipv4/ip_forward”開(kāi)啟內(nèi)核對(duì)IP數(shù)據(jù)包轉(zhuǎn)發(fā)的功能,使得一個(gè)網(wǎng)卡接收的數(shù)據(jù)包可轉(zhuǎn)發(fā)到另外一個(gè)網(wǎng)卡上;虛擬數(shù)據(jù)空間所在的虛擬機(jī)和邊緣緩存系統(tǒng)所在的虛擬機(jī)都配置上通往對(duì)方網(wǎng)絡(luò)的靜態(tài)路由,網(wǎng)關(guān)為對(duì)應(yīng)廣域網(wǎng)模擬器的網(wǎng)卡IP地址,使得網(wǎng)絡(luò)互聯(lián)互通;在廣域網(wǎng)模擬器上設(shè)置網(wǎng)絡(luò)帶寬和時(shí)延參數(shù),完成實(shí)驗(yàn)環(huán)境的配置。
(1)邊緣緩存服務(wù)節(jié)點(diǎn)功能測(cè)試
在IP地址為10.1.3.106的節(jié)點(diǎn)上部署并啟動(dòng)了虛擬數(shù)據(jù)空間系統(tǒng)。該部分主要進(jìn)行邊緣緩存文件管理接口功能測(cè)試。邊緣緩存系統(tǒng)提供POST/cache類(lèi)型的REST管理接口,包括文件查詢(xún)接口、文件添加接口、文件同步接口和文件刪除接口;同時(shí),在邊緣客戶(hù)端實(shí)現(xiàn)了對(duì)應(yīng)的管理命令行管理工具。邊緣緩存系統(tǒng)命令行工具與ge-cluster命令一樣,都要先將請(qǐng)求發(fā)送給邊緣客戶(hù)端,然后利用邊緣客戶(hù)端的全局信息將請(qǐng)求轉(zhuǎn)發(fā)給邊緣緩存服務(wù)節(jié)點(diǎn),并由邊緣緩存服務(wù)節(jié)點(diǎn)處理請(qǐng)求。
① 邊緣緩存文件查詢(xún)
邊緣緩存文件查詢(xún)由ge-stat命令實(shí)現(xiàn)。為了測(cè)試的順利進(jìn)行,提前在虛擬數(shù)據(jù)空間中存儲(chǔ)了多種類(lèi)型的數(shù)據(jù),包括目錄、文本數(shù)據(jù)、圖片數(shù)據(jù)、音頻數(shù)據(jù)、視頻數(shù)據(jù)和二進(jìn)制應(yīng)用等。最初所有這些數(shù)據(jù)都存儲(chǔ)在虛擬數(shù)據(jù)空間,在此條件下進(jìn)行邊緣緩存文件查詢(xún)命令的測(cè)試。實(shí)驗(yàn)結(jié)果顯示,邊緣緩存系統(tǒng)的查詢(xún)功能正常。
② 邊緣緩存文件添加
邊緣緩存文件添加由ge-add命令實(shí)現(xiàn)。ge-add通過(guò)邊緣客戶(hù)端將請(qǐng)求轉(zhuǎn)發(fā)到邊緣緩存服務(wù)節(jié)點(diǎn),邊緣服務(wù)器節(jié)點(diǎn)將文件同步到本地,初始化邊緣緩存元數(shù)據(jù)信息,返回文件添加成功并提示用戶(hù)。重新使用ge-stat命令查詢(xún)?cè)撐募祷亟Y(jié)果顯示該文件已被邊緣緩存系統(tǒng)緩存。
③ 邊緣緩存文件同步
邊緣緩存文件同步由ge-sync命令實(shí)現(xiàn),當(dāng)虛擬數(shù)據(jù)空間中的文件被添加到邊緣緩存系統(tǒng)時(shí),邊緣緩存系統(tǒng)將維護(hù)邊緣緩存本地文件和遠(yuǎn)程文件的一致性。gesync命令使用戶(hù)可以主動(dòng)同步邊緣緩存系統(tǒng)中存儲(chǔ)的文件,這種操作有利于那些對(duì)文件時(shí)效性要求高的用戶(hù)。測(cè)試證明,邊緣緩存文件同步功能運(yùn)行正常。
④ 邊緣緩存文件刪除
邊緣緩存文件刪除由ge-del命令實(shí)現(xiàn)。邊緣客戶(hù)端將ge-del請(qǐng)求轉(zhuǎn)發(fā)到邊緣緩存服務(wù)節(jié)點(diǎn),邊緣緩存服務(wù)節(jié)點(diǎn)再異步刪除文件。邊緣緩存文件的刪除是指將邊緣緩存系統(tǒng)中的文件刪除。測(cè)試證明,邊緣緩存文件刪除功能運(yùn)行正常。
(2)邊緣緩存客戶(hù)端功能測(cè)試
邊緣客戶(hù) 端功能測(cè)試包括邊緣客戶(hù)端掛載、基于一致性哈希算法的請(qǐng)求路由方法、邊緣客戶(hù)端POSIX接口兼容和第三方應(yīng)用運(yùn)行。其中POSIX接口測(cè)試主要包含文件元數(shù)據(jù)查詢(xún)、修改,文件創(chuàng)建、寫(xiě)、讀、復(fù)制、截?cái)唷h除,目錄創(chuàng)建、目錄查詢(xún)、目錄刪除等功能測(cè)試。
① 邊緣客戶(hù)端掛載測(cè)試
邊緣客戶(hù)端掛載測(cè)試主要用于展示邊緣客戶(hù)端是否能夠真實(shí)掛載和成功運(yùn)行。邊緣客戶(hù)端是基于用戶(hù)空間文件系統(tǒng)(filesystem in userspace,F(xiàn)USE)實(shí)現(xiàn)的,且為用戶(hù)態(tài)文件系統(tǒng)。
通過(guò)mount命令輸出的信息可觀察到,client程序被掛載到/mnt/gvds節(jié)點(diǎn)上。因此,邊緣客戶(hù)端掛載功能運(yùn)行正常。
② 請(qǐng)求路由方法測(cè)試
為了測(cè)試請(qǐng)求路由方法的可用性,啟動(dòng)邊緣緩存服務(wù)節(jié)點(diǎn)1(IP地址為10.0.2.103)和邊緣緩存服務(wù)節(jié)點(diǎn)3(IP地址為10.0.2.105),通過(guò)ge-cluster命令獲取當(dāng)前的集群狀態(tài)。使用邊緣緩存文件查詢(xún)命令(ge-stat)測(cè)試路由機(jī)制的可用性。為了方便查看實(shí)驗(yàn)結(jié)果,邊緣緩存服務(wù)節(jié)點(diǎn)每次接收到查詢(xún)請(qǐng)求時(shí)都會(huì)輸出客戶(hù)端查詢(xún)?nèi)罩荆ㄟ^(guò)ge-stat命令行依次統(tǒng)計(jì)虛擬數(shù)據(jù)空間中的文件是否在邊緣緩存中進(jìn)行緩存。測(cè)試證明,文件請(qǐng)求路由方法功能運(yùn)行正常。
③ 邊緣客戶(hù)端POSIX接口兼容測(cè)試
POSIX接口兼容測(cè)試主要包含:元數(shù)據(jù)查詢(xún)、修改;目錄創(chuàng)建、查詢(xún)、刪除;文件創(chuàng)建、寫(xiě)、讀、復(fù)制、截?cái)唷h除。
通過(guò)ls命令查詢(xún)文件的元數(shù)據(jù)信息,證明了文件元數(shù)據(jù)查詢(xún)和修改功能可用;通過(guò)mkdir命令創(chuàng)建文件夾,查詢(xún)其元數(shù)據(jù)信息,并刪除目錄,證明了邊緣客戶(hù)端目錄創(chuàng)建、目錄查詢(xún)和目錄刪除功能可用。
文件操作驗(yàn)證實(shí)驗(yàn)證明,邊緣客戶(hù)端文件操作功能運(yùn)行正常。
在真實(shí)的廣域網(wǎng)環(huán)境中,在有無(wú)邊緣緩存的情況下,對(duì)邊緣客戶(hù)端的讀寫(xiě)數(shù)據(jù)與元數(shù)據(jù)的訪問(wèn)等方面進(jìn)行性能對(duì)比測(cè)試。在中科院網(wǎng)絡(luò)信息中心、國(guó)家超算濟(jì)南中心、國(guó)家超算長(zhǎng)沙中心、上海超算中心和國(guó)家超算廣州中心5個(gè)節(jié)點(diǎn)上部署了測(cè)試環(huán)境。
筆者進(jìn)行了3個(gè)性能對(duì)比實(shí)驗(yàn):
● 虛擬數(shù)據(jù)空間系統(tǒng)在有無(wú)邊緣緩存系統(tǒng)情況下的性能對(duì)比試驗(yàn),對(duì)比實(shí)驗(yàn)從元數(shù)據(jù)訪問(wèn)性能、文件訪問(wèn)性能、文件并發(fā)訪問(wèn)性能等方面進(jìn)行;
● 在局域網(wǎng)內(nèi)搭建NFS,在相同局域網(wǎng)環(huán)境中,分析通過(guò)邊緣緩存系統(tǒng)訪問(wèn)底層文件與通過(guò)NFS訪問(wèn)底層文件系統(tǒng)的性能差異;
● 為了測(cè)試邊緣緩存系統(tǒng)本身帶來(lái)的性能損失,將邊緣客戶(hù)端與邊緣緩存服務(wù)節(jié)點(diǎn)部署在同一節(jié)點(diǎn)上,相比于直接訪問(wèn)底層存儲(chǔ),測(cè)試通過(guò)邊緣緩存系統(tǒng)訪問(wèn)底層存儲(chǔ)帶來(lái)的性能損失。
圖19所示為廣域網(wǎng)環(huán)境的節(jié)點(diǎn)拓?fù)洹_吘壙蛻?hù)端的配置、邊緣緩存服務(wù)節(jié)點(diǎn)配置以及國(guó)家超算濟(jì)南中心的服務(wù)器配置與功能測(cè)試環(huán)境配置相同。交換機(jī)為千兆網(wǎng)交換機(jī),可提供局域網(wǎng)千兆帶寬的物理鏈路。

圖19 廣域網(wǎng)真實(shí)環(huán)境下節(jié)點(diǎn)拓?fù)?/p>
在廣域網(wǎng)環(huán)境節(jié)點(diǎn)的網(wǎng)絡(luò)配置中,邊緣客戶(hù)端和邊緣緩存服務(wù)節(jié)點(diǎn)處于同一局域網(wǎng)中。表4描述了本地局域網(wǎng)與廣域網(wǎng)的基本網(wǎng)絡(luò)情況測(cè)試結(jié)果。性能測(cè)試采用了Linux命令集和fio等測(cè)試命令。

表4 本地局域網(wǎng)與廣域網(wǎng)網(wǎng)絡(luò)基本情況測(cè)試結(jié)果
(1)在有無(wú)邊緣緩存系統(tǒng)的情況下廣域虛擬數(shù)據(jù)空間系統(tǒng)的性能
在客戶(hù)端未使用邊緣緩存模塊的情況下,數(shù)據(jù)通過(guò)原始的數(shù)據(jù)通路訪問(wèn)廣域虛擬數(shù)據(jù)空間系統(tǒng),是廣域虛擬數(shù)據(jù)空間原始系統(tǒng)通路,記為GVDS;在客戶(hù)端使用邊緣緩存模塊的情況下,該客戶(hù)端被稱(chēng)為邊緣客戶(hù)端,數(shù)據(jù)通過(guò)邊緣緩存通路訪問(wèn)廣域虛擬數(shù)據(jù)空間系統(tǒng),是邊緣緩存系統(tǒng)通路,記為GeCache。對(duì)比實(shí)驗(yàn)從元數(shù)據(jù)并發(fā)訪問(wèn)性能、數(shù)據(jù)訪問(wèn)性能和數(shù)據(jù)并發(fā)訪問(wèn)性能3個(gè)方面進(jìn)行。
圖20所示為GVDS與GeCache在多進(jìn)程并發(fā)情況下元數(shù)據(jù)的訪問(wèn)性能結(jié)果。圖20(a)顯示了文件創(chuàng)建操作的性能對(duì)比結(jié)果,隨著并發(fā)進(jìn)程數(shù)的增加(從0增加到100),GeCache的整體性能(最高為75 IOPS)高于GVDS(最高為55 IOPS)。圖20(b)顯示了文件查詢(xún)操作的性能對(duì)比結(jié)果,并發(fā)進(jìn)程數(shù)超過(guò)20時(shí)GVDS(并發(fā)進(jìn)程數(shù)為50時(shí)吞吐量為7 600 IOPS)高于GeCache(并發(fā)進(jìn)程數(shù)為50時(shí)吞吐量為5 500 IOPS);隨著并發(fā)進(jìn)程數(shù)量的增長(zhǎng)兩者趨于相同(并發(fā)進(jìn)程數(shù)為100時(shí),GVDS吞吐量為7 800 IOPS,GeCache吞吐量為7 600 IOPS)。圖20(c)顯示了文件刪除操作的性能測(cè)試結(jié)果,隨著并發(fā)進(jìn)程數(shù)量的增長(zhǎng)(從0增加到100),GeCache的性能(最高吞吐量為250 IOPS)一直高于GVDS(最高吞吐量為200 IOPS)。原因是在邊緣緩存存在的情況下,文件是直接在邊緣緩存中創(chuàng)建的,并異步在廣域虛擬數(shù)據(jù)空間系統(tǒng)中同步;文件刪除時(shí),如果文件在邊緣緩存中,則先從邊緣緩存中刪除,再異步從廣域虛擬數(shù)據(jù)空間系統(tǒng)中刪除,因此文件創(chuàng)建和刪除時(shí)GeCache性能高于GVDS。文件狀態(tài)查詢(xún)時(shí),因?yàn)檫吘壘彺娌话募獢?shù)據(jù),元數(shù)據(jù)需先從GVDS中獲取,再?gòu)腉eCache中獲取被緩存的文件元數(shù)據(jù),導(dǎo)致通信次數(shù)增加,所以GeCache元數(shù)據(jù)查詢(xún)性能低于GVDS系統(tǒng)。后期可以采用元數(shù)據(jù)聚合和預(yù)取手段提高GeCache元數(shù)據(jù)訪問(wèn)性能。

圖20 在多進(jìn)程并發(fā)情況下GVDS與GeCache的元數(shù)據(jù)訪問(wèn)性能
圖21所示為GVDS與GeCache的單進(jìn)程文件讀寫(xiě)性能測(cè)試結(jié)果,包括順序?qū)憽㈨樞蜃x、隨機(jī)寫(xiě)和隨機(jī)讀4種。 如圖21所示,隨著數(shù)據(jù)塊的增大(從8 KB增加到4 096 KB),GeCache的順序讀寫(xiě)和隨機(jī)讀寫(xiě)的性能遠(yuǎn)高于GVDS。例如,在塊大小為4 096 KB時(shí),GeCache的隨機(jī)寫(xiě)的吞吐率為90 000 KB/s,而GVDS的隨機(jī)寫(xiě)的吞吐率只有10 000 KB/s。接下來(lái)分析實(shí)驗(yàn)結(jié)果的原因,用戶(hù)在邊緣緩存系統(tǒng)中讀寫(xiě)文件,在帶寬較高的情況下,GeCache的性能遠(yuǎn)遠(yuǎn)高于GVDS,且隨著數(shù)據(jù)塊增大,吞吐率差異巨大,由此證明邊緣緩存系統(tǒng)的有效性。另外,如圖21所示,GVDS在塊大于256 KB后,系統(tǒng)吞吐率趨于穩(wěn)定,這是因?yàn)榇藭r(shí)已經(jīng)達(dá)到廣域網(wǎng)帶寬,而GeCache系統(tǒng)因?yàn)榫钟蚓W(wǎng)千兆網(wǎng)優(yōu)勢(shì),吞吐率逐漸上升。

圖21 GVDS與GeCache單進(jìn)程情況下文件讀寫(xiě)性能
圖22所示為GVDS與GeCache在多進(jìn)程并發(fā)情況下的文件讀寫(xiě)性能測(cè)試結(jié)果。如圖22所示,GeCache的性能在4種情況下都遠(yuǎn)高于GVDS。例如,在多進(jìn)程多文件寫(xiě)場(chǎng)景中,隨著并發(fā)進(jìn)程的數(shù)量從0增加到100,GeCache的聚合帶寬可以達(dá)到110 000 KB/s,而GVDS只有將近100 KB/s。這是因?yàn)樵诙噙M(jìn)程并發(fā)訪問(wèn)的情況下,GVDS和GeCache的聚合帶寬大大提升;在并發(fā)進(jìn)程數(shù)超過(guò)10之后,聚合帶寬變化趨于穩(wěn)定,這是因?yàn)镚eCache達(dá)到了局域網(wǎng)千兆帶寬的瓶頸,GVDS系統(tǒng)達(dá)到了廣域網(wǎng)帶寬的瓶頸。

圖22 GVDS與GeCache多進(jìn)程并發(fā)情況下文件讀寫(xiě)性能
(2)局域網(wǎng)環(huán)境下網(wǎng)絡(luò)文件系統(tǒng)與邊緣緩存系統(tǒng)的性能對(duì)比
本實(shí)驗(yàn)是在局域網(wǎng)環(huán)境下NFS與邊緣緩存系統(tǒng)的性能對(duì)比,NFS服務(wù)器與邊緣緩存服務(wù)節(jié)點(diǎn)運(yùn)行在相同機(jī)器上,兩者具有相同的底層文件系統(tǒng)/mnt/lustre;NFS客戶(hù)端與邊緣客戶(hù)端位于相同機(jī)器上,這樣可保證實(shí)驗(yàn)在相同的軟硬件環(huán)境下進(jìn)行。
圖23所示是多進(jìn)程并發(fā)情況下NFS與GeCache的文件讀寫(xiě)性能測(cè)試結(jié)果。如圖23所示,當(dāng)進(jìn)程并發(fā)量高于10時(shí),NFS與GeCache系統(tǒng)聚合帶寬基本相同,并接近局域網(wǎng)帶寬。實(shí)驗(yàn)結(jié)果說(shuō)明,GeCache不僅可以在廣域網(wǎng)環(huán)境中提高虛擬數(shù)據(jù)空間系統(tǒng)的性能,還可以在局域網(wǎng)環(huán)境中提高虛擬數(shù)據(jù)空間系統(tǒng)的性能,并且?guī)?lái)的開(kāi)銷(xiāo)可以忽略不計(jì)。

圖23 NFS與GeCache多進(jìn)程并發(fā)情況下文件讀寫(xiě)性能
本文針對(duì)廣域網(wǎng)環(huán)境中邊緣用戶(hù)訪問(wèn)冗余數(shù)據(jù)降低應(yīng)用性能的問(wèn)題,通過(guò)研究虛擬數(shù)據(jù)空間系統(tǒng)中的緩存補(bǔ)充技術(shù),優(yōu)化了數(shù)據(jù)訪問(wèn)通路,在邊緣客戶(hù)端訪問(wèn)和共享遠(yuǎn)程數(shù)據(jù)時(shí),避免了數(shù)據(jù)冗余傳輸造成的大量的網(wǎng)絡(luò)帶寬浪費(fèi),邊緣緩存系統(tǒng)將數(shù)據(jù)以文件粒度緩存在靠近邊緣客戶(hù)端的位置,可以提升上層應(yīng)用訪問(wèn)和共享數(shù)據(jù)的性能。