一種基于動態(tài)分片的分布式事務執(zhí)行方法
【專利摘要】本發(fā)明公開一種基于動態(tài)分片的分布式事務執(zhí)行方法,在每個數(shù)據(jù)中心的數(shù)據(jù)庫管理服務器中部署有用于控制和管理對事務的動態(tài)事務分片單元,動態(tài)事務分片單元包括動態(tài)分片模塊和動態(tài)沖突分析模塊,采用動態(tài)事務分片單元處理來自應用服務器的事務請求,對該事務請求進行動態(tài)分片和動態(tài)沖突分析,隨后對分片后的事務采用分片執(zhí)行模塊進行執(zhí)行,并在數(shù)據(jù)庫存儲器上執(zhí)行具體的數(shù)據(jù)訪問操作。本發(fā)明是基于事務分片技術,在數(shù)據(jù)中心引入動態(tài)分片模塊和動態(tài)沖突分析模塊,實現(xiàn)程序化自動化的事務分片技術,使得事務有更多的機會在本地數(shù)據(jù)中心提交,有效地減少分布式存儲系統(tǒng)中跨數(shù)據(jù)中心通信的次數(shù),降低事務管理的延時從而獲得良好的響應性能。
【專利說明】
一種基于動態(tài)分片的分布式事務執(zhí)行方法
技術領域
[0001]本發(fā)明涉及數(shù)據(jù)訪問領域,更具體地,涉及一種基于動態(tài)分片的分布式事務執(zhí)行方法。
【背景技術】
[0002]大規(guī)模的分布式存儲系統(tǒng)會把數(shù)據(jù)分塊放在不同的數(shù)據(jù)中心上,即數(shù)據(jù)分區(qū)。對于部署在多數(shù)據(jù)中心上的應用,事務操作通常需要訪問不同分區(qū)的數(shù)據(jù),即訪問不同數(shù)據(jù)中心。按照事務分片技術,事務會按照訪問數(shù)據(jù)分區(qū)的不同被劃分為多個分片。其中每個分片只會訪問單個數(shù)據(jù)中心的數(shù)據(jù)分區(qū),并且以單個ACID事務的形式執(zhí)行和提交,同時第一個分片在客戶端所在的本地數(shù)據(jù)中心執(zhí)行。第一個分片執(zhí)行并提交后,事務就可以返回已完成的狀態(tài)給客戶端,剩下的分片會在返回后在后臺被發(fā)送到其他數(shù)據(jù)中心執(zhí)行。從而使得客戶端等待的時間不包括跨越數(shù)據(jù)中心的通信延時。為了保證被分片事務的ACID特性,尤其是可以確保強一致性的可串行性,需要在分片事務執(zhí)行之前進行沖突分析。如果對某事務的分片執(zhí)行會違背可串行性,它就不能被分片執(zhí)行。對事務的沖突分析基于SC圖理論,用SC圖表示分片事務。SC圖中節(jié)點表示事務分片,連接同個事務不同分片的是S邊,另一種邊(C邊)連接不同事務中的分片并表示這兩個分片存在數(shù)據(jù)訪問沖突,即二者訪問同個數(shù)據(jù)分區(qū)并且其中一個訪問是寫操作。文獻“Dennis Shasha, Francois Llirbat, EricSimon, and Patrick Valduriez."Transact1n chopping: Algorithms andperformance studies, ACM Transact1ns on Database Systems (TODS) 20,n0.3(1995): 325-363.”證明了在SC圖中非可串行化的沖突可以等價為SC環(huán)的存在。SC環(huán)是SC圖中的環(huán),既包含S邊又包含C邊。圖1展示了兩個SC圖,其中一個有SC環(huán),另一個沒有。其中Tm表示事務O的第一個分片,其他以此類推。
[0003]文南犬“Yang Zhang, Russell Power, Siyuan Zhou, Yair Sovran, Marcos K.Aguilera, and Jinyang L1."Transact1n chains: achieving serializability withlow latency in geo-distributed storage systems, In Proceedings of theTwenty-Fourth ACM Symposium on Operating Systems Principles, pp.276-291.ACM, 2013.”提出的靜態(tài)事務分片技術,在應用開發(fā)階段,對所有類型的事務進行靜態(tài)的分片和沖突分析,分析出事務是否可分片執(zhí)行。靜態(tài)沖突分析是應用開發(fā)者對所有事務的全局檢測,是一個人工過程,并且需要在應用的事務代碼中進行標注。
[0004]在靜態(tài)分片的技術方案中,程序員對應用所有事務進行靜態(tài)分片和全局靜態(tài)分析,分片信息和分析結果標注在程序代碼中。這種由開發(fā)者執(zhí)行的靜態(tài)分片技術有以下幾種缺點:
I)對程序員不透明。在程序代碼中標注分片信息首先需要對代碼進行額外的定制與修改,而且需要程序員完全掌握SC圖理論來進行沖突分析。這些都會帶來額外的工作量。
[0005]2)缺乏靈活性。靜態(tài)分析在程序編碼階段就完成,即事務是否可分片在編寫事務代碼時已經(jīng)確定,并不能根據(jù)事務的具體執(zhí)行情況進行動態(tài)調整。
[0006]3)只能采用靜態(tài)的數(shù)據(jù)分區(qū)方案。事務分片的依據(jù)是數(shù)據(jù)的分區(qū),靜態(tài)檢測在編碼階段就確定事務能否分片,只能使用一種特定的數(shù)據(jù)分區(qū)方案。
[0007]近年來,大型網(wǎng)絡應用都構建在基于多數(shù)據(jù)中心的分布式存儲系統(tǒng)之上,并且采用常規(guī)的關系型數(shù)據(jù)庫和事務操作。在基于多數(shù)據(jù)中心的分布式存儲系統(tǒng)中,為了保證事務的ACID特性,事務管理(如并發(fā)控制和提交協(xié)議)需要完成多次跨數(shù)據(jù)中心的通信。為了向用戶提供良好的可用性,多個數(shù)據(jù)中心通常位于相隔遙遠的不同地理位置??鐢?shù)據(jù)中心的通信延時很高,給事務管理造成非常高的時間開銷。事務分片技術能讓事務在本地數(shù)據(jù)中心提交。
【發(fā)明內(nèi)容】
[0008]本發(fā)明提出一種基于動態(tài)分片的分布式事務執(zhí)行方法,基于事務分片技術,在數(shù)據(jù)中心引入動態(tài)分片模塊和動態(tài)沖突分析模塊,實現(xiàn)程序化自動化的事務分片技術,使得事務有更多的機會在本地數(shù)據(jù)中心提交,有效地減少分布式存儲系統(tǒng)中跨數(shù)據(jù)中心通信的次數(shù),降低事務管理的延時從而獲得良好的響應性能。
[0009 ]為解決上述技術問題,本發(fā)明的技術方案如下:
一種基于動態(tài)分片的分布式事務執(zhí)行方法,在每個數(shù)據(jù)中心的數(shù)據(jù)庫管理服務器中部署有用于控制和管理對事務的動態(tài)事務分片單元,動態(tài)事務分片單元包括動態(tài)分片模塊和動態(tài)沖突分析模塊,采用動態(tài)事務分片單元處理來自應用服務器的事務請求,對該事務請求進行動態(tài)分片和動態(tài)沖突分析,隨后對分片后的事務采用分片執(zhí)行模塊進行執(zhí)行,并在數(shù)據(jù)庫存儲器上執(zhí)行具體的數(shù)據(jù)訪問操作。
[0010]優(yōu)選地,在所述動態(tài)事務分片單元中進行動態(tài)分片時,需要判斷事務是否可以分片執(zhí)行以實時的方式動態(tài)地確定,如果事務不可分片,該事務就會以整個事務為單位參與到常規(guī)的并發(fā)控制協(xié)議中,按照常規(guī)分布式事務的形式執(zhí)行并提交。
[0011 ]優(yōu)選地,所述動態(tài)分片模塊的工作過程為:在某時刻,當有事務請求從應用服務器發(fā)送過來,動態(tài)分片模塊按照當前的數(shù)據(jù)分區(qū)方案,把當前收到的所有事務都拆分成小的分片,最后把事務的分片情況發(fā)送到動態(tài)沖突分析模塊進行下一步處理;
其中數(shù)據(jù)分區(qū)方案是動態(tài)可變的,動態(tài)分片模塊讀取到的都是實時的分區(qū)方案。
[0012]優(yōu)選地,所述動態(tài)沖突分析模塊的工作包括分析沖突和監(jiān)控事務執(zhí)行情況,其中分析沖突是由沖突分析算法完成,而監(jiān)控事務執(zhí)行情況向分析算法提供當前系統(tǒng)的負載信息,使得實時的沖突分析可以更加準確。
[0013]優(yōu)選地,所述沖突分析算法基于SC圖理論,主要目標是分析出SC圖中的所有SC環(huán),在SC環(huán)中的事務不可分片,其余的事務就可分片;所有在動態(tài)分片模塊同時被分片的事務分片,再加上當前在系統(tǒng)中執(zhí)行但未提交的事務,就會構成一個臨時的局部SC圖,這個臨時的局部SC圖就是沖突分析算法的具體操作對象;此處加上已執(zhí)行但未提交的事務是為了分析出其與未執(zhí)行事務的沖突關系,在動態(tài)化的分析過程中是必要的,而這些已執(zhí)行但未提交事務的信息就是由動態(tài)沖突分析模塊監(jiān)控事務執(zhí)行情況的時候產(chǎn)生的。
[0014]本發(fā)明提出的動態(tài)事務分片技術給分布式系統(tǒng)引入動態(tài)事務分片和動態(tài)沖突分析的模塊,可以動態(tài)地對當前需要執(zhí)行的事務進行分片和沖突分析。對應靜態(tài)分片的三個缺點,動態(tài)分片技術有三個優(yōu)點: I)對程序員透明。在動態(tài)分片技術中,分布式存儲系統(tǒng)加上了動態(tài)分片模塊和動態(tài)沖突分析模塊,分別負責動態(tài)對事務分片和沖突分析,程序員不需要理會事務是否可分片而只需要編寫常規(guī)的事務代碼。對程序員的透明性不僅減少了程序員的開發(fā)工作量,程序化的模塊工作起來還會更加準確。此外,還可以在不需要修改應用代碼的前提下,把分片技術引入到在一些老舊的應用中。
[0015]2)更靈活和準確?;诋斍暗膶崟r數(shù)據(jù)分區(qū)情況和事務執(zhí)行狀態(tài),動態(tài)分片技術中的事務分片和沖突分析可以更準確地分析出當前的實際沖突情況。特別是動態(tài)沖突分析模塊,不像靜態(tài)檢測那樣保守地讓所有可能出現(xiàn)沖突的事務都不能分片,更靈活和準確的分析使得更多的事務可以分片執(zhí)行,從而實現(xiàn)低延時提交。
[0016]3)可適應于動態(tài)可變的數(shù)據(jù)分區(qū)方案。大規(guī)模應用的用戶訪問通常來自不同地區(qū)甚至不同時區(qū),不穩(wěn)定且不可預測。為了能在動態(tài)的訪問模式中保持良好的性能,大規(guī)模分布式存儲系統(tǒng)需要采用動態(tài)可變的數(shù)據(jù)分區(qū)方案。動態(tài)分片模塊部署在數(shù)據(jù)存儲管理服務器中,可以根據(jù)當前的分區(qū)方案,動態(tài)地對事務進行分片。
【附圖說明】
[0017]圖1為兩個SC圖,1(a)為有SC環(huán)圖,1(b)為無SC環(huán)圖。
[0018]圖2為數(shù)據(jù)中心中動態(tài)事務分片技術與其他模塊之間的關系圖。
[0019]圖3為可分片事務的執(zhí)行過程圖。
[0020]圖4為沖突分析算法涉及到的幾種圖的示例圖,4(a)為SC圖,4(b)為復合C圖,4(C)為簡單C圖,4(d)為關聯(lián)矩陣。
[0021 ]圖5為SC圖中分析兩類SC環(huán)的算法流程圖。
【具體實施方式】
[0022]附圖僅用于示例性說明,不能理解為對本專利的限制;為了更好說明本實施例,附圖某些部件會有省略、放大或縮小,并不代表實際產(chǎn)品的尺寸;
對于本領域技術人員來說,附圖中某些公知結構及其說明可能省略是可以理解的。下面結合附圖和實施例對本發(fā)明的技術方案做進一步的說明。
[0023]一種基于動態(tài)分片的分布式事務執(zhí)行方法,在每個數(shù)據(jù)中心的數(shù)據(jù)庫管理服務器中部署有用于控制和管理對事務的動態(tài)事務分片單元,動態(tài)事務分片單元包括動態(tài)分片模塊和動態(tài)沖突分析模塊,采用動態(tài)事務分片單元處理來自應用服務器的事務請求,對該事務請求進行動態(tài)分片和動態(tài)沖突分析,隨后對分片后的事務采用分片執(zhí)行模塊進行執(zhí)行,并在數(shù)據(jù)庫存儲器上執(zhí)行具體的數(shù)據(jù)訪問操作。
[0024]本發(fā)明的核心包含兩個部分:動態(tài)分片模塊和動態(tài)沖突分析模塊,部署在每個數(shù)據(jù)中心的數(shù)據(jù)庫管理服務器中,負責控制和管理對事務的動態(tài)分片。在數(shù)據(jù)中心中,事務請求來自負責向用戶響應的應用服務器,事務請求在動態(tài)分片的兩個模塊中完成處理,隨后分片后的事務受分片執(zhí)行模塊控制,在數(shù)據(jù)存儲服務器上執(zhí)行具體的數(shù)據(jù)訪問操作。圖2展示了數(shù)據(jù)中心中動態(tài)事務分片技術與其他模塊之間的關系。
[0025]分布式系統(tǒng)中加入了動態(tài)事務分片技術之后,事務是否可以分片執(zhí)行是以實時的方式動態(tài)地確定。如果事務不可分片,該事務就會以整個事務為單位參與到常規(guī)的并發(fā)控制協(xié)議中,按照常規(guī)分布式事務的形式執(zhí)行并提交。圖3展現(xiàn)了可分片事務的執(zhí)行過程,下面詳細描述動態(tài)分片模塊和動態(tài)沖突分析模塊的工作過程。
[0026](I)動態(tài)分片模塊
在某個時刻,當有事務請求從應用服務器發(fā)送過來,動態(tài)分片模塊會按照當前的數(shù)據(jù)分區(qū)方案,把當前收到的所有事務都拆分成小的分片。最后把事務的分片情況發(fā)送到動態(tài)沖突分析模塊進行下一步處理。
[0027]數(shù)據(jù)分區(qū)方案是動態(tài)可變的,動態(tài)分片模塊讀取到的都是實時的分區(qū)方案。另外,為了保證可分片事務的第一個分片可在用戶的本地數(shù)據(jù)中心提交,從而實現(xiàn)低延時提交。該事務必須在本地數(shù)據(jù)中心被分片,數(shù)據(jù)分區(qū)方案通常都可以保證這個性質。但若某些情況下不能保證,如分區(qū)方案臨時改變,該事務請求應該被重新發(fā)送到本地數(shù)據(jù)中心。
[0028](2)動態(tài)沖突分析模塊
動態(tài)沖突分析模塊的工作分為兩個方面:分析沖突和監(jiān)控事務執(zhí)行情況。分析沖突由一個沖突分析算法完成,而監(jiān)控事務執(zhí)行情況向分析算法提供當前系統(tǒng)的負載信息,使得實時的沖突分析可以更加準確。
[0029]沖突分析算法是基于SC圖理論,主要目標是分析出SC圖中的所有SC環(huán),在SC環(huán)中的事務不可分片執(zhí)行,其余的事務就可分片執(zhí)行。所有在動態(tài)分片模塊同時被分片的事務分片,再加上當前在系統(tǒng)中執(zhí)行但未提交的事務,就會構成一個臨時的局部SC圖。這個臨時的局部SC圖就是分析算法的具體操作對象。此處加上已執(zhí)行但未提交的事務是為了分析出它們與未執(zhí)行事務的沖突關系,在動態(tài)化的分析過程中是必要的。而這些已執(zhí)行但未提交事務的信息就是由動態(tài)沖突分析模塊監(jiān)控事務執(zhí)行情況的時候產(chǎn)生的。
[0030]分析算法在SC圖中檢測SC環(huán),是一個圖論算法。首先,分析算法把SC環(huán)分成兩種類型。如圖4(a)中的SC圖,有兩個SC環(huán):{To,i,To,2, T2>1,T1>2,T1J和{IV,T2,2, Τ2’3}。它是不同類型的SC環(huán),為方便描述,把前者命名為A類SC環(huán),后者為B類SC環(huán)。
[0031 ]兩種類型SC-環(huán)在原始SC圖中不方便檢測,所以分析算法根據(jù)SC圖中事務的關系,構建對應的以事務為節(jié)點的復合C圖,如圖4(b)。復合C圖是一個加權有向多重圖,即兩個節(jié)點間的邊是有向邊并且可能存在多條邊并且每條邊都有一個權值。從始點Ti到終點T2的復合C邊CT1,T2>的權值定義如下:
a)若SC圖中TjPT2之間只有一條C邊相連,CT1,Τ2>權值為正值并且數(shù)值等于T1中與T2相連的分片的編號;
b)若SC圖中TjPT2之間有兩條或更多的C邊相連,〈Ti,T2>權值為負值,不失一般性,數(shù)值統(tǒng)一定義為-1。
[0032]復合C邊的權值可以用一個關聯(lián)矩陣表示,如圖4(d)。顯然,每個關聯(lián)矩陣的負值項都代表著B類SC環(huán)的存在,這是檢測B類SC環(huán)的條件。
[0033]A類SC環(huán)涉及兩個以上事務的分片沖突關系,需要進一步分析。從復合C圖中去除所有負值邊,并把每對對稱的正值復合C邊用一條無向邊表示,就會得到簡單C圖,如圖4(c)所示。對A類SC環(huán)的檢測是一個遞歸的環(huán)檢測過程,本質上是深度優(yōu)先搜索過程。首先,對簡單C圖進行的環(huán)檢測算法可以用常規(guī)的深度優(yōu)先搜索實現(xiàn),找出某個環(huán)如{To,Ti, T2}后再進行深入的分析。對于在簡單C圖中環(huán)中的事務,根據(jù)關聯(lián)矩陣的信息分析該事務與相鄰兩個事務連接的分片是否同一個。如To的第一個分片與Ti相連,而與Τ2相連的是To的第二個分片。如果是不同的分片,說明簡單C圖中由C邊構成的環(huán)經(jīng)過了 To的S邊〈Το,ιΤο.Α,β卩A類SC環(huán)存在。在SC圖中分析兩類SC環(huán)的算法流程圖如圖5。對于兩類SC環(huán)中的事務節(jié)點都標記為不可分片,需要以常規(guī)分布式事務形式執(zhí)行。其余的事務節(jié)點標記為可分片。
[0034]可分片事務交由分片執(zhí)行模塊執(zhí)行,由分片協(xié)調器順序依次調用第一個分片和后續(xù)分片執(zhí)行,并把每個分片的執(zhí)行和提交情況都報告給動態(tài)沖突分析模塊,即動態(tài)沖突分析模塊監(jiān)控具體的執(zhí)行情況。需要注意的是,動態(tài)沖突分析模塊在接收到第一個分片的提交狀態(tài)之后就會向應用服務器返回響應。
[0035]顯然,本發(fā)明的上述實施例僅僅是為清楚地說明本發(fā)明所作的舉例,而并非是對本發(fā)明的實施方式的限定。對于所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明權利要求的保護范圍之內(nèi)。
【主權項】
1.一種基于動態(tài)分片的分布式事務執(zhí)行方法,其特征在于,在每個數(shù)據(jù)中心的數(shù)據(jù)庫管理服務器中部署有用于控制和管理對事務的動態(tài)事務分片單元,動態(tài)事務分片單元包括動態(tài)分片模塊和動態(tài)沖突分析模塊,采用動態(tài)事務分片單元處理來自應用服務器的事務請求,對該事務請求進行動態(tài)分片和動態(tài)沖突分析,隨后對分片后的事務采用分片執(zhí)行模塊進行執(zhí)行,并在數(shù)據(jù)庫存儲器上執(zhí)行具體的數(shù)據(jù)訪問操作。2.根據(jù)權利要求1所述的基于動態(tài)分片的分布式事務執(zhí)行方法,其特征在于,在所述動態(tài)事務分片單元中進行動態(tài)分片時,需要判斷事務是否可以分片執(zhí)行以實時的方式動態(tài)地確定,如果事務不可分片,該事務就會以整個事務為單位參與到常規(guī)的并發(fā)控制協(xié)議中,按照常規(guī)分布式事務的形式執(zhí)行并提交。3.根據(jù)權利要求1所述的基于動態(tài)分片的分布式事務執(zhí)行方法,其特征在于,所述動態(tài)分片模塊的工作過程為:在某時刻,當有事務請求從應用服務器發(fā)送過來,動態(tài)分片模塊按照當前的數(shù)據(jù)分區(qū)方案,把當前收到的所有事務都拆分成小的分片,最后把事務的分片情況發(fā)送到動態(tài)沖突分析模塊進行下一步處理; 其中數(shù)據(jù)分區(qū)方案是動態(tài)可變的,動態(tài)分片模塊讀取到的都是實時的分區(qū)方案。4.根據(jù)權利要求3所述的基于動態(tài)分片的分布式事務執(zhí)行方法,其特征在于,所述動態(tài)沖突分析模塊的工作包括分析沖突和監(jiān)控事務執(zhí)行情況,其中分析沖突是由沖突分析算法完成,而監(jiān)控事務執(zhí)行情況向分析算法提供當前系統(tǒng)的負載信息,使得實時的沖突分析可以更加準確。5.根據(jù)權利要求4所述的基于動態(tài)分片的分布式事務執(zhí)行方法,其特征在于,所述沖突分析算法基于SC圖理論,主要目標是分析出SC圖中的所有SC環(huán),在SC環(huán)中的事務不可分片,其余的事務就可分片;所有在動態(tài)分片模塊同時被分片的事務分片,再加上當前在系統(tǒng)中執(zhí)行但未提交的事務,就會構成一個臨時的局部SC圖,這個臨時的局部SC圖就是沖突分析算法的具體操作對象;此處加上已執(zhí)行但未提交的事務是為了分析出其與未執(zhí)行事務的沖突關系,在動態(tài)化的分析過程中是必要的,而這些已執(zhí)行但未提交事務的信息就是由動態(tài)沖突分析模塊監(jiān)控事務執(zhí)行情況的時候產(chǎn)生的。
【文檔編號】G06F3/06GK105892957SQ201610427437
【公開日】2016年8月24日
【申請日】2016年6月14日
【發(fā)明人】黃寧, 吳維剛
【申請人】中山大學