摘 要: 對(duì)于讀密集型的云計(jì)算應(yīng)用,現(xiàn)有系統(tǒng)很難同時(shí)滿足它們對(duì)性能、一致性與可用性的需求。因此提出了一種基于事務(wù)內(nèi)存和云存儲(chǔ)技術(shù)的編程與存儲(chǔ)模型TMC,能為云應(yīng)用提供可配置的事務(wù)特性與數(shù)據(jù)存儲(chǔ)服務(wù)。TMC包括事務(wù)與存儲(chǔ)兩個(gè)組件,事務(wù)組件允許所有只讀事務(wù)無(wú)需遠(yuǎn)程驗(yàn)證即可順利提交,其他事務(wù)則采用2PC算法提交;存儲(chǔ)組件負(fù)責(zé)實(shí)現(xiàn)系統(tǒng)的可擴(kuò)展性與可用性。仿真實(shí)驗(yàn)結(jié)果表明,TMC具有較高的性能與可用性。系統(tǒng)若經(jīng)進(jìn)一步改進(jìn)和優(yōu)化,將具有應(yīng)用于實(shí)際生產(chǎn)環(huán)境中的潛力,可為用戶提供高質(zhì)量的云計(jì)算服務(wù)。
關(guān)鍵詞: 讀密集; 事務(wù)內(nèi)存; 云計(jì)算; 數(shù)據(jù)副本; 一致性
中圖分類(lèi)號(hào):TP302 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2014)02-11-04
0 引言
事務(wù)內(nèi)存[1]是一種通過(guò)事務(wù)來(lái)實(shí)現(xiàn)并發(fā)控制的編程范式,事務(wù)的ACI特性由事務(wù)內(nèi)存引擎來(lái)保證,無(wú)需開(kāi)發(fā)者關(guān)心。與其他并發(fā)控制方法(例如鎖)相比,事務(wù)內(nèi)存具有安全、易用等優(yōu)點(diǎn),近年來(lái)在學(xué)術(shù)界受到了廣泛關(guān)注。在云計(jì)算環(huán)境下,為了讓系統(tǒng)管理員和應(yīng)用開(kāi)發(fā)者充分地利用云計(jì)算帶來(lái)的強(qiáng)擴(kuò)展和可用性,設(shè)計(jì)實(shí)現(xiàn)新型的適用于云計(jì)算的編程模型是一項(xiàng)極其緊迫的任務(wù)。當(dāng)前已初露端倪的云計(jì)算編程模型以MapReduce[2]為代表,其他大體上是其變種,MapReduce的缺點(diǎn)是需要遵循復(fù)雜的開(kāi)發(fā)模式,實(shí)際效率低下。事務(wù)內(nèi)存是另一種可以作為云計(jì)算編程模型的技術(shù),在開(kāi)發(fā)復(fù)雜的分布式應(yīng)用程序過(guò)程中,使用事務(wù)內(nèi)存技術(shù)可以加快生產(chǎn)率,縮短開(kāi)發(fā)周期,提高代碼質(zhì)量。但現(xiàn)有的事務(wù)內(nèi)存研究多集中于共享內(nèi)存多處理器的單機(jī)環(huán)境下,而適用于分布式環(huán)境、能滿足云計(jì)算應(yīng)用需求的研究迄今尚未出現(xiàn)。
現(xiàn)實(shí)中存在著大量讀密集型應(yīng)用(例如數(shù)據(jù)倉(cāng)庫(kù)),本文提出的面向讀密集型應(yīng)用的事務(wù)內(nèi)存云(Transactional Memory Cloud,以下簡(jiǎn)稱(chēng)TMC),基于事務(wù)內(nèi)存與云存儲(chǔ)技術(shù),設(shè)計(jì)了一種新型云計(jì)算編程存儲(chǔ)模型,保證所有的只讀事務(wù)均不會(huì)被撤銷(xiāo),系統(tǒng)可用性與可靠性則通過(guò)異步數(shù)據(jù)副本策略實(shí)現(xiàn)。以上特性使得TMC適用于對(duì)性能、可擴(kuò)展性和數(shù)據(jù)一致性均有嚴(yán)格要求的讀密集型應(yīng)用。
1 相關(guān)工作
云計(jì)算為工業(yè)和學(xué)術(shù)界帶來(lái)了大機(jī)遇,同時(shí)也為有效利用云中各類(lèi)資源提出了挑戰(zhàn)。盡管不同的云計(jì)算應(yīng)用存在一定差異,但總的來(lái)說(shuō)云計(jì)算應(yīng)用的支撐平臺(tái)應(yīng)具有良好的性能、可擴(kuò)展性和可靠性。
當(dāng)前已有的商用云計(jì)算系統(tǒng)大多不支持事務(wù)特性,但各類(lèi)相關(guān)應(yīng)用對(duì)事務(wù)支持的需求卻從未停止,例如社交網(wǎng)絡(luò)、協(xié)作編輯、在線游戲等。將一致性檢查等工作交給上層用戶處理是目前常見(jiàn)的策略[3],但其方法增加了開(kāi)發(fā)者負(fù)擔(dān),顯然不是一種有效的手段。利用事務(wù)內(nèi)存技術(shù)實(shí)現(xiàn)對(duì)云計(jì)算應(yīng)用事務(wù)特性的支持是一種可行的新思路,但在研究應(yīng)用過(guò)程中需要注意對(duì)各種云計(jì)算系統(tǒng)特性的權(quán)衡。
文獻(xiàn)[4]提出的P-Store能夠保證云計(jì)算系統(tǒng)的可擴(kuò)展性和強(qiáng)一致性,但該協(xié)議要求只讀事務(wù)在提交時(shí)首先要完成分布式驗(yàn)證,并有可能被回滾或撤銷(xiāo),而本文的TMC則不存在以上限制。文獻(xiàn)[5]利用軟件事務(wù)內(nèi)存與多版本并發(fā)控制技術(shù)來(lái)支持分布式事務(wù)的一致性,但對(duì)其他諸如擴(kuò)展性、可用性等系統(tǒng)特性并未提及,TMC則通過(guò)將事務(wù)組件與存儲(chǔ)組件的解耦,對(duì)其進(jìn)行了統(tǒng)籌權(quán)衡的考慮。
2 系統(tǒng)建模
TMC包括事務(wù)和存儲(chǔ)兩大組件,事務(wù)組件提供邏輯上的并發(fā)事務(wù)處理,無(wú)需了解數(shù)據(jù)的物理位置;存儲(chǔ)組件負(fù)責(zé)存儲(chǔ)數(shù)據(jù)副本,并保證其一致性,但不必關(guān)心事務(wù)特性。TMC系統(tǒng)模型如圖1所示。
圖1中的DC為數(shù)據(jù)中心,這些數(shù)據(jù)中心可通過(guò)10Gb/s的專(zhuān)用以太網(wǎng)互聯(lián)(圖1中以環(huán)為例),被部署為“私有云”或“公有云”。在每個(gè)數(shù)據(jù)中心內(nèi)部,包含著成千上萬(wàn)臺(tái)計(jì)算/存儲(chǔ)機(jī)器節(jié)點(diǎn)(簡(jiǎn)稱(chēng)節(jié)點(diǎn))。事務(wù)組件負(fù)責(zé)通過(guò)協(xié)調(diào)管理每個(gè)節(jié)點(diǎn)上的事務(wù)組件代理來(lái)接收處理用戶通過(guò)互聯(lián)網(wǎng)發(fā)來(lái)的事務(wù)處理請(qǐng)求,存儲(chǔ)組件則通過(guò)共識(shí)協(xié)議和鏈路管理數(shù)據(jù)及其元數(shù)據(jù)的所有副本,并向事務(wù)組件提供一致、透明和彈性的數(shù)據(jù)訪問(wèn)服務(wù)。
TMC是一個(gè)通過(guò)消息傳遞進(jìn)行通信的分布式系統(tǒng),其中每個(gè)節(jié)點(diǎn)只能運(yùn)行一個(gè)內(nèi)存事務(wù),令Γ={Tx1,…,Txn}表示系統(tǒng)中全體事務(wù)的集合。每個(gè)數(shù)據(jù)項(xiàng)則由三元組do=
任一個(gè)內(nèi)存事務(wù)Txi均由事務(wù)開(kāi)始操作Start、針對(duì)數(shù)據(jù)項(xiàng)的讀(Read)寫(xiě)(Write)操作序列、事務(wù)提交操作Commit或事務(wù)撤銷(xiāo)操作Abort三部分構(gòu)成。Txi可由任一個(gè)節(jié)點(diǎn)啟動(dòng)并讀寫(xiě)任一個(gè)數(shù)據(jù)項(xiàng),事務(wù)集T(T?Γ)的歷史HIS(T)是由T上的事務(wù)操作(Start,Read,Write,Commit,Abort)事件組成的集合。每個(gè)Txi還需要維護(hù)三個(gè)屬性writeID、nextID和ts,writeID用于記錄Txi中最近提交的寫(xiě)事務(wù)(至少包含一個(gè)寫(xiě)操作)的時(shí)間戳;nextID用于記錄下一個(gè)將要提交的事務(wù)(至少訪問(wèn)Txi中的一個(gè)數(shù)據(jù)項(xiàng))的時(shí)間戳;ts用于記錄Txi執(zhí)行第一個(gè)讀操作Read1的時(shí)間戳,設(shè)Read1所訪問(wèn)的數(shù)據(jù)項(xiàng)所在的內(nèi)存事務(wù)為T(mén)xj,則ts=max(Txi.writeID,Txj.writeID),Read1之后讀操作所訪問(wèn)的數(shù)據(jù)項(xiàng)的版本號(hào)均不能大于ts。
3 事務(wù)組件
事務(wù)組件負(fù)責(zé)支持分布式事務(wù)內(nèi)存編程范式,并保證其正確性。為使所有讀事務(wù)不被撤銷(xiāo),需要解決兩個(gè)問(wèn)題:①建立系統(tǒng)全局快照,使所有內(nèi)存事務(wù)的讀操作可以從數(shù)據(jù)項(xiàng)的多個(gè)版本中選擇合適的一個(gè);②為寫(xiě)事務(wù)在提交階段建立全局串行化以保證事務(wù)性。
TMC基于兩階段提交算法[6](2PC)和文獻(xiàn)[7]中的方法解決上述兩個(gè)問(wèn)題。為了正確地實(shí)現(xiàn)事務(wù)串行化,事務(wù)組件會(huì)在每個(gè)Txi的讀操作后更新其nextID屬性。如果Txi的節(jié)點(diǎn)接收到了來(lái)自另一個(gè)事務(wù)Txj的讀請(qǐng)求并且Txj.ts>Txi.nextID,則推進(jìn)Txi.nextID至Txj.ts。
3.1 內(nèi)存事務(wù)的讀寫(xiě)操作
TMC采用延時(shí)讀寫(xiě)策略,事務(wù)Txi執(zhí)行寫(xiě)操作時(shí)先將要寫(xiě)入的數(shù)據(jù)項(xiàng)do保存在Txi的寫(xiě)集合ws中,Txi.ws只有在提交階段時(shí)才對(duì)外可見(jiàn)。Txi對(duì)數(shù)據(jù)項(xiàng)do的讀操作則分為本地讀(來(lái)自Txi)和遠(yuǎn)程讀(來(lái)自Txj)兩種類(lèi)型。本地讀如算法1。
4 存儲(chǔ)組件
存儲(chǔ)組件以云的形式向事務(wù)組件(也可以直接面向最終用戶)提供數(shù)據(jù)存儲(chǔ)服務(wù)。從用戶角度來(lái)看,所有的讀寫(xiě)操作只針對(duì)一個(gè)數(shù)據(jù)副本,數(shù)據(jù)一致性和可用性、系統(tǒng)可擴(kuò)展性由存儲(chǔ)組件透明地實(shí)現(xiàn)。TMC中的存儲(chǔ)組件是一群相互依存的服務(wù)集合,共同實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)目標(biāo),如圖3所示。
Locator服務(wù)將數(shù)據(jù)項(xiàng)id映射到數(shù)據(jù)中心,Router服務(wù)將消息轉(zhuǎn)發(fā)到節(jié)點(diǎn),Allocator服務(wù)決定存放數(shù)據(jù)項(xiàng)及元數(shù)據(jù)的節(jié)點(diǎn),Selector服務(wù)選擇存放數(shù)據(jù)副本的數(shù)據(jù)中心,MetaData與RawData服務(wù)用于存儲(chǔ)元數(shù)據(jù)和數(shù)據(jù)值,Logger服務(wù)記錄針對(duì)每個(gè)數(shù)據(jù)項(xiàng)的操作。
4.1 存儲(chǔ)組件的擴(kuò)展性
TMC存儲(chǔ)組件的設(shè)計(jì)目標(biāo)之一是系統(tǒng)吞吐量與容量同系統(tǒng)節(jié)點(diǎn)數(shù)之間成正比,即具有良好的可擴(kuò)展性。為實(shí)現(xiàn)這個(gè)目標(biāo),課題組首先在前期工作基礎(chǔ)上[8],采用機(jī)架選舉和多路線性散列算法,將工作負(fù)載均勻地分布到不同的數(shù)據(jù)中心以及每個(gè)數(shù)據(jù)中心的內(nèi)部節(jié)點(diǎn),該過(guò)程不需要“中心節(jié)點(diǎn)”來(lái)管理,全體數(shù)據(jù)中心和節(jié)點(diǎn)各司其職,防止了系統(tǒng)瓶頸的產(chǎn)生。
為進(jìn)一步增強(qiáng)擴(kuò)展性,存儲(chǔ)組件的另一個(gè)設(shè)計(jì)目標(biāo)是將元數(shù)據(jù)(包括位置、大小、副本信息等)與數(shù)據(jù)項(xiàng)本身解耦,具體實(shí)現(xiàn)上采用了層次化的設(shè)計(jì)方法。最上層是定位層,在訪問(wèn)每個(gè)數(shù)據(jù)項(xiàng)時(shí),均需通過(guò)Locator服務(wù)計(jì)算出存儲(chǔ)其元數(shù)據(jù)的數(shù)據(jù)中心,為提高可用性,元數(shù)據(jù)也被多處存儲(chǔ)(見(jiàn)圖1),并使用強(qiáng)一致性協(xié)議同步,Locator從多個(gè)副本中根據(jù)預(yù)設(shè)策略(例如距離)選擇合適的元數(shù)據(jù)。
存儲(chǔ)組件第二層是操作層,由MetaData服務(wù)負(fù)責(zé)處理數(shù)據(jù)項(xiàng)的創(chuàng)建與刪除,并確保數(shù)據(jù)項(xiàng)與其id屬性間的一一對(duì)應(yīng)。
存儲(chǔ)組件的最下層是數(shù)據(jù)層,其中的Allocator服務(wù)根據(jù)數(shù)據(jù)項(xiàng)id計(jì)算其元數(shù)據(jù)和數(shù)據(jù)值的存儲(chǔ)節(jié)點(diǎn);Router服務(wù)負(fù)責(zé)接收來(lái)自用戶或其他數(shù)據(jù)中心的請(qǐng)求,并將其轉(zhuǎn)發(fā)至相應(yīng)節(jié)點(diǎn)。本文假設(shè)所有數(shù)據(jù)中心均具有一定的穩(wěn)定性,每個(gè)數(shù)據(jù)中心均有一張全局成員信息表。每當(dāng)增加或移除一個(gè)數(shù)據(jù)中心時(shí),需要更新所有信息表。
4.2 數(shù)據(jù)一致性
因?yàn)閺挠脩艚嵌葋?lái)看,所有讀寫(xiě)操作只針對(duì)一個(gè)數(shù)據(jù)副本,所以需要使用數(shù)據(jù)一致性協(xié)議來(lái)更新其他副本。存儲(chǔ)組件共實(shí)現(xiàn)了三種數(shù)據(jù)一致性協(xié)議[6]供用戶在創(chuàng)建數(shù)據(jù)項(xiàng)時(shí)自由動(dòng)態(tài)地選擇,見(jiàn)表1。
5 實(shí)驗(yàn)
實(shí)驗(yàn)的主要目的是為了驗(yàn)證TMC能適用于讀密集型的云計(jì)算應(yīng)用,同時(shí)也應(yīng)具備良好性能和高可用性。本文利用澳大利亞墨爾本大學(xué)的開(kāi)源系統(tǒng)CloudSim[9]作為測(cè)試平臺(tái)來(lái)模擬云計(jì)算環(huán)境,課題組實(shí)現(xiàn)了TMC原型及相關(guān)算法,并集成到CloudSim中。實(shí)驗(yàn)機(jī)器的軟硬件配置為Windows 7 64bit+四核Intel Corei5 2.53GHz+內(nèi)存4GB。
本實(shí)驗(yàn)選用了TPC-C作為測(cè)試基準(zhǔn)和數(shù)據(jù)集,TPC-C是專(zhuān)門(mén)針對(duì)聯(lián)機(jī)交易處理系統(tǒng)(OLTP)的面向事務(wù)處理與數(shù)據(jù)庫(kù)性能的測(cè)試標(biāo)準(zhǔn),可在其中模擬比較復(fù)雜并具有代表意義的OLTP應(yīng)用環(huán)境。實(shí)驗(yàn)的比較對(duì)象包括另一種典型分布式事務(wù)內(nèi)存系統(tǒng)GenRSTM[10]和MySQL集群。實(shí)驗(yàn)結(jié)果如下。
圖4所示吞吐量實(shí)驗(yàn)中,首先通過(guò)CloudSim模擬出了五個(gè)數(shù)據(jù)中心,所有節(jié)點(diǎn)隨機(jī)均勻地分布其中,再將TPC-C測(cè)試集中的只讀事務(wù)比例設(shè)置為80%。對(duì)于MySQL,創(chuàng)建一張包含id和value字段的臨時(shí)表,將記錄作為數(shù)據(jù)項(xiàng)存取。從實(shí)驗(yàn)結(jié)果中可看出,三個(gè)系統(tǒng)的吞吐量均可隨著節(jié)點(diǎn)數(shù)增多而線性增長(zhǎng),但在以讀任務(wù)為主的環(huán)境下,TMC的優(yōu)勢(shì)更為明顯。同時(shí)由于日志記錄等磁盤(pán)操作的影響,MySQL在讀密集環(huán)境下的吞吐量明顯低于另外兩種事務(wù)內(nèi)存系統(tǒng)。
6 結(jié)束語(yǔ)
在云計(jì)算環(huán)境下,存在著大量對(duì)數(shù)據(jù)密集型應(yīng)用的需求,傳統(tǒng)的分布并發(fā)式編程模型與數(shù)據(jù)存儲(chǔ)架構(gòu)的不足已日益凸顯,尤其是在需要同時(shí)應(yīng)對(duì)系統(tǒng)性能、可擴(kuò)展性和數(shù)據(jù)一致性需求的場(chǎng)合下。本文提出了一種基于事務(wù)內(nèi)存與云存儲(chǔ)技術(shù)面向讀密集型應(yīng)用的編程與存儲(chǔ)模型TMC,TMC分為事務(wù)組件與存儲(chǔ)組件兩大模塊,事務(wù)組件在保證數(shù)據(jù)一致性的前提下,允許所有只讀事務(wù)無(wú)需遠(yuǎn)程驗(yàn)證即可順利提交,系統(tǒng)可擴(kuò)展性與可用性則通過(guò)存儲(chǔ)組件中的相關(guān)服務(wù)集合實(shí)現(xiàn)。以上特性使得TMC適用于對(duì)性能、可擴(kuò)展性和數(shù)據(jù)一致性均有嚴(yán)格要求的讀密集型云計(jì)算應(yīng)用。
由于受實(shí)驗(yàn)條件和環(huán)境的限制,課題組只對(duì)TMC原型進(jìn)行了簡(jiǎn)單的仿真模擬實(shí)驗(yàn),尚未開(kāi)發(fā)實(shí)現(xiàn)完整的可用于生產(chǎn)環(huán)境下的系統(tǒng)。我們計(jì)劃在本文工作基礎(chǔ)上,完成對(duì)TMC在“云”中的測(cè)試,并對(duì)其商用化進(jìn)行更加深入的研究與實(shí)踐。
參考文獻(xiàn):
[1] Tim Harris,et al. Transactional Memory: An Overview[J]. IEEEMicro,2007.27(3):8-29
[2] Jeffrey Dean,Sanjay Ghemawat. MapReduce: simplified dataprocessing on large clusters[J]. Commun.ACM,2008.51(1):107-113
[3] Avinash Lakshman, Prashant Malik. Cassandra: a decentralizedstructured storage system[J]. SIGOPS Oper. Syst. Rev.,2010.44(2):35-40
[4] Nicolas Schiper, et al, P-Store:Genuine Partial Replication in WideArea Networks[C]. Proceedings of the 2010 29th IEEE Symposium on Reliable Distributed Systems,2010:214-224
[5] Bieniusa A, Fuhrmann T.Consistency in hindsight: A fully decentralized STM algorithm[C]. Proceedings of the 2010 IEEE International Symposium on Parallel and Distributed Processing,2010:1-12
[6] 徐俊剛,邵佩英.分布式數(shù)據(jù)庫(kù)系統(tǒng)及其應(yīng)用(第三版)[M].科學(xué)出版社,2012.
[7] Rachid Guerraoui,et al. Genuine atomic multicast in asynchronousdistributed systems[J]. Theor. Comput. Sci.,2001.254(1-2):297-316
[8] 林菲,張萬(wàn)軍,孫勇.一種分布式非結(jié)構(gòu)化數(shù)據(jù)副本管理模型[J].計(jì)算機(jī)工程,2013.39(4):36-38
[9] R.N.Calheiros.CloudSim:a toolkit for modeling and simulation ofcloud computing environments and evaluation of resource provisioning algorithms[R]. NY, USA: Software: Practice and Experience,Wiley Press,2010.
[10] Nuno Carvalho,Generic replication of software transactional memory[C]. Proceedings of the 7th Middleware Doctoral Symposium,Bangalore,India,2010:14-19