欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法

文檔序號:6511328閱讀:213來源:國知局
一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法
【專利摘要】一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,首先是服務(wù)節(jié)點選定,即在客戶端發(fā)出事務(wù)請求后,內(nèi)存數(shù)據(jù)網(wǎng)格首先為該事務(wù)選定對應(yīng)的服務(wù)節(jié)點;然后事務(wù)啟動,將服務(wù)節(jié)點作為事務(wù)協(xié)調(diào)者,利用客戶端的源地址和線程ID等信息為標識為該事務(wù)請求創(chuàng)建并保存事務(wù)上下文和事務(wù)ID。接著進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第一階段,進行數(shù)據(jù)操作后,進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第二階段,進行事務(wù)提交或事務(wù)回滾。本發(fā)明采用多個事務(wù)協(xié)調(diào)者,避免單節(jié)點瓶頸,并且不需要遠程調(diào)用第三方事務(wù)管理器,可以避免產(chǎn)生額外的通信代價,同時降低事務(wù)協(xié)調(diào)和事務(wù)狀態(tài)維護的代價。
【專利說明】一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種分布式事務(wù)保障方法,尤其針對一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,屬于軟件【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]在線事務(wù)處理(OLTP, Online Transaction Processing)是指通過信息系統(tǒng)、計算機網(wǎng)絡(luò)、數(shù)據(jù)庫等基礎(chǔ)設(shè)施,以事務(wù)為基本操作單位來處理實時性作業(yè)任務(wù)。圖1描述了傳統(tǒng)在線事務(wù)處理應(yīng)用的傳統(tǒng)運行環(huán)境,根據(jù)模塊的不同功能可以分為展示層、業(yè)務(wù)層和數(shù)據(jù)層等。前端采用集群技術(shù),由負載均衡器、Web服務(wù)器和應(yīng)用服務(wù)器組成。在后端通常采用分布式緩存加快數(shù)據(jù)讀取速度。分布式緩存是一種簡單的內(nèi)存鍵值對存儲系統(tǒng),不保障數(shù)據(jù)操作的事務(wù)性,僅可以提高數(shù)據(jù)讀操作的速度,并且增加了應(yīng)用業(yè)務(wù)邏輯的復(fù)雜度。
[0003]內(nèi)存數(shù)據(jù)網(wǎng)格是新型的內(nèi)存鍵值對存儲系統(tǒng),可替代傳統(tǒng)的分布式緩存,其運行環(huán)境如圖2。內(nèi)存數(shù)據(jù)網(wǎng)格與分布式緩存在使用上的最大不同在于內(nèi)存數(shù)據(jù)網(wǎng)格提供了事務(wù)保障機制,并且可以簡化應(yīng)用的開發(fā),并提供持久化機制來將內(nèi)存中的數(shù)據(jù)自動存儲于數(shù)據(jù)庫中。
[0004]由于內(nèi)存數(shù)據(jù)網(wǎng)格是分布式的數(shù)據(jù)訪問平臺,在該系統(tǒng)中,用戶的一個分布式事務(wù)包含多條數(shù)據(jù)操作。由于這些數(shù)據(jù)分布在不同的內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點上,因此各節(jié)點的事務(wù)參與者在執(zhí)行局部事務(wù)的同時,需要通過事務(wù)協(xié)調(diào)者來負責(zé)協(xié)調(diào)局部事務(wù)的處理進度,從而實現(xiàn)OLTP應(yīng)用的分布式事務(wù)保障。
[0005]在現(xiàn)有方案中,OracleCoherence (http:// www.0racle, com/technetwork/middleware/coherence/overview/)和 JBoss Inf inispan (http://www.jboss.0rg/infinispan/)等本身都不支持分布式事務(wù),需要集成第三方事務(wù)管理器才能實現(xiàn)分布式事務(wù)。這種方式使得系統(tǒng)的所有事務(wù)都會交給單獨的事務(wù)協(xié)調(diào)者進行處理,容易形成單點瓶頸,并且,由于需要遠程集成第三方事務(wù)管理器,所以會產(chǎn)生額外的通信代價。Hazelcast (http: //www.hazelcast.com/)等提供了分布式事務(wù)保障機制,但由于釆用客戶端驅(qū)動的數(shù)據(jù)定位方式,客戶端在事務(wù)處理過程中需要和多個服務(wù)器端節(jié)點進行交互,導(dǎo)致事務(wù)協(xié)調(diào)以及狀態(tài)維護的代價巨大,影響系統(tǒng)性能。
[0006]存在一些針對鍵值對存儲的事務(wù)保障機制的研究工作。例如,Scatter (Glendenning LjBeschastnikh I,Krishnamurthy A,et al.Scalableconsistency in Scatter[C]//Proceedings of the Twenty-Third ACM Symposium onOperating Systems Principles.ACM, 2011:15-28.)是基于 Paxos 協(xié)議實現(xiàn)的具有兩級拓撲結(jié)構(gòu)的存儲系統(tǒng),可以支持同一存儲組內(nèi)部的事務(wù)保障,但無法支持跨存儲組的事務(wù)保障。G-Store (Das S,Agrawal D,El Abbadi A.G-store: a scalable data store fortransactional multi key access in the cloud[C]//Proceedings of thelst ACMsymposium on Cloud computing.ACM, 2010:163-174.)通過數(shù)據(jù)迀移的方法來避免分布式事務(wù),當(dāng)服務(wù)器端獲取到客戶事務(wù)請求后,把該請求涉及的數(shù)據(jù)全部迀移到接收請求的節(jié)點,然后此節(jié)點將負責(zé)處理相關(guān)數(shù)據(jù)的訪問。該方法是將分布式事務(wù)改為局部事務(wù)來處理,適用于長事務(wù)的場景,且不能解決事務(wù)沖突。上述工作適用于對數(shù)據(jù)一致性要求較弱的應(yīng)用系統(tǒng),無法滿足OLTP應(yīng)用的事務(wù)保障需求。

【發(fā)明內(nèi)容】

[0007]本發(fā)明的目的在于:克服現(xiàn)有技術(shù)的不足,提供一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,采用多個事務(wù)協(xié)調(diào)者,避免單節(jié)點瓶頸,并且不需要遠程調(diào)用第三方事務(wù)管理器,可以避免產(chǎn)生額外的通信代價,同時降低事務(wù)協(xié)調(diào)和事務(wù)狀態(tài)維護的代價。
[0008]本發(fā)明技術(shù)解決方案:一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,其特點在于實現(xiàn)步驟如下:
[0009](I)服務(wù)節(jié)點選定
[0010]客戶端的每次事務(wù)請求被發(fā)送給服務(wù)器端的某一個特定節(jié)點,并將該節(jié)點作為本次事務(wù)的服務(wù)節(jié)點及事務(wù)協(xié)調(diào)者。
[0011](2)事務(wù)啟動
[0012]在服務(wù)節(jié)點接收到來自客戶端發(fā)起的事務(wù)啟動請求后,事務(wù)協(xié)調(diào)者為該事務(wù)創(chuàng)建并保存事務(wù)上下文信息以及事務(wù)ID信息。
[0013](3)數(shù)據(jù)操作
[0014]當(dāng)事務(wù)啟動后,后續(xù)數(shù)據(jù)操作遵照內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議進行。所有的后續(xù)數(shù)據(jù)操作請求首先進行協(xié)議第一階段處理,然后再進入?yún)f(xié)議第二階段。協(xié)議第一階段即請求階段,在該階段內(nèi),事務(wù)協(xié)調(diào)者首先采用服務(wù)器端驅(qū)動的數(shù)據(jù)定位方式進行數(shù)據(jù)定位,確認數(shù)據(jù)操作的目標數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點,并將這些節(jié)點作為事務(wù)參與者。然后,事務(wù)協(xié)調(diào)者將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給事務(wù)參與者。事務(wù)參與者在接收到來自事務(wù)協(xié)調(diào)者的數(shù)據(jù)操作請求后,首先嘗試封鎖相關(guān)數(shù)據(jù),若封鎖數(shù)據(jù)成功,則以事務(wù)操作日志的形式記錄數(shù)據(jù)操作請求的內(nèi)容,然后向事務(wù)協(xié)調(diào)者確認可以執(zhí)行數(shù)據(jù)操作,若封鎖數(shù)據(jù)失敗,則告知事務(wù)協(xié)調(diào)者無法執(zhí)行數(shù)據(jù)操作。事務(wù)協(xié)調(diào)者判斷事務(wù)參與者的數(shù)據(jù)操作請求應(yīng)答,當(dāng)出現(xiàn)失敗應(yīng)答時,則進入步驟(5),若所有應(yīng)答均為成功應(yīng)答,則進入步驟(4)。
[0015](4)事務(wù)提交
[0016]在完成所有數(shù)據(jù)操作請求的處理后,客戶端發(fā)送事務(wù)提交請求。在事務(wù)協(xié)調(diào)者接收到事務(wù)提交請求后,進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第二階段,即提交階段。事務(wù)協(xié)調(diào)者通知所有事務(wù)參與者進行事務(wù)提交操作。事務(wù)參與者根據(jù)事務(wù)操作日志信息修改實際數(shù)據(jù),然后解除數(shù)據(jù)封鎖并清除日志。接著,事務(wù)參與者回復(fù)確認消息給事務(wù)協(xié)調(diào)者。當(dāng)所有的事務(wù)參與者均確認數(shù)據(jù)操作執(zhí)行成功后,事務(wù)協(xié)調(diào)者銷毀事務(wù)上下文,結(jié)束本次事務(wù)請求的處理。
[0017](5)事務(wù)回滾
[0018]若事務(wù)參與者的數(shù)據(jù)操作無法成功執(zhí)行,則進入?yún)f(xié)議第二階段,并執(zhí)行事務(wù)回滾操作。在事務(wù)協(xié)調(diào)者接收到事務(wù)回滾請求后,通知所有事務(wù)參與者解除數(shù)據(jù)封鎖,并清除相關(guān)事務(wù)操作日志。然后,事務(wù)協(xié)調(diào)者銷毀事務(wù)上下文,結(jié)束本次事務(wù)請求的處理。
[0019]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下技術(shù)優(yōu)勢:
[0020]1、傳統(tǒng)技術(shù)通常采用集成第三方事務(wù)管理器的方式,整個系統(tǒng)的所有事務(wù)都會交由單獨的事務(wù)協(xié)調(diào)者進行處理,易形成單點瓶頸,并給系統(tǒng)帶來額外的通信代價。本發(fā)明方法采用多個事務(wù)協(xié)調(diào)者,可避免單節(jié)點瓶頸,并且,不需要遠程調(diào)用第三方事務(wù)管理器,可以避免產(chǎn)生額外的通信代價。
[0021]2、傳統(tǒng)技術(shù)通常采用客戶端驅(qū)動的數(shù)據(jù)定位方式,事務(wù)的協(xié)調(diào)工作需要在客戶端與服務(wù)器端之間頻繁的交換事務(wù)狀態(tài)和并發(fā)控制狀態(tài),給系統(tǒng)帶來額外的通信和計算代價。本發(fā)明采用服務(wù)器端驅(qū)動的數(shù)據(jù)定位方式,事務(wù)請求由接收事務(wù)的服務(wù)節(jié)點負責(zé)協(xié)調(diào),每次數(shù)據(jù)定位至多需要兩次數(shù)據(jù)轉(zhuǎn)發(fā),可以有效降低事務(wù)協(xié)調(diào)和事務(wù)狀態(tài)維護的代價。
【專利附圖】

【附圖說明】
[0022]圖1為在線事務(wù)處理應(yīng)用的傳統(tǒng)運行環(huán)境。
[0023]圖2為內(nèi)存數(shù)據(jù)網(wǎng)格部署圖。
[0024]圖3為本發(fā)明方法的流程圖。該流程圖中包含內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的流程。其中,第一階段為數(shù)據(jù)操作的請求階段,并不會發(fā)生對數(shù)據(jù)的修改操作;第二階段進行為事務(wù)提交或回滾階段,最終修改數(shù)據(jù)或者回滾所有操作。
[0025]圖4為事務(wù)啟動操作的處理流程圖。其中服務(wù)節(jié)點在接收到客戶端的事務(wù)啟動請求后,創(chuàng)建并保存事務(wù)上下文以及事務(wù)ID。
[0026]圖5為數(shù)據(jù)操作的處理流程圖。首先事務(wù)協(xié)調(diào)者檢查并更新事務(wù)上下文信息;然后事務(wù)參與者根據(jù)請求消息查找對應(yīng)上下文,對相關(guān)數(shù)據(jù)進行封鎖,進行相關(guān)訪問操作,返回相應(yīng)結(jié)果到事務(wù)協(xié)調(diào)者;最后事務(wù)協(xié)調(diào)者根據(jù)來自事務(wù)參與者的處理結(jié)果,生成最終結(jié)果并返回給客戶端。
[0027]圖6為事務(wù)提交操作的處理流程圖。其中事務(wù)協(xié)調(diào)者負責(zé)通知事務(wù)參與者提交數(shù)據(jù)更改、解除封鎖以及銷毀本地事務(wù)上下文等操作;事務(wù)參與者則根據(jù)相關(guān)請求消息執(zhí)行對應(yīng)操作;當(dāng)事務(wù)協(xié)調(diào)者接收來自所有事務(wù)參與者的消息后,清除當(dāng)前事務(wù)上下文信息,最后返回對應(yīng)請求消息。
[0028]圖7為事務(wù)回滾操作的處理流程圖。其中事務(wù)協(xié)調(diào)者查找相關(guān)事務(wù)上下文,若未找到相關(guān)事務(wù)上下文,則標記處理失敗并返回請求,否則根據(jù)上下文信息向每個事務(wù)參與者發(fā)送回滾請求;事務(wù)參與者負責(zé)處理具體的事務(wù)回滾請求,并返回相關(guān)確認消息;當(dāng)事務(wù)協(xié)調(diào)者接收到所有事務(wù)參與者的確認消息后,清除當(dāng)前事務(wù)上下文并返回相關(guān)請求消
肩、O
【具體實施方式】
[0029]以下結(jié)合具體操作特征和附圖對本發(fā)明進行詳細說明。
[0030]本發(fā)明實施的完整過程如圖3所示。首先是服務(wù)節(jié)點選定,即在客戶端發(fā)出事務(wù)請求后,內(nèi)存數(shù)據(jù)網(wǎng)格首先為該事務(wù)選定對應(yīng)的服務(wù)節(jié)點。然后事務(wù)啟動,將服務(wù)節(jié)點作為事務(wù)協(xié)調(diào)者,利用客戶端的源地址和線程ID等信息為標識為該事務(wù)請求創(chuàng)建并保存事務(wù)上下文和事務(wù)ID。接著進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第一階段,進行數(shù)據(jù)操作。最后,進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第二階段,進行事務(wù)提交或事務(wù)回滾。
[0031]在上述流程基礎(chǔ)上,本發(fā)明實施例的具體實現(xiàn)流程如下:
[0032]1、服務(wù)節(jié)點選定[0033]首先根據(jù)服務(wù)器端節(jié)點的負載分布情況或者采用隨機策略,選擇服務(wù)器端的特定節(jié)點作為本次事務(wù)的服務(wù)節(jié)點及事務(wù)協(xié)調(diào)者。
[0034]2、事務(wù)啟動
[0035]事務(wù)啟動請求的處理流程如圖4所示,具體步驟如下:
[0036](I)事務(wù)協(xié)調(diào)者(S卩服務(wù)節(jié)點)接收來自客戶端的事務(wù)啟動請求;
[0037](2)事務(wù)協(xié)調(diào)者解析請求,獲取請求中包含的客戶端的源地址信息和線程ID信息;
[0038](3)根據(jù)解析的信息,事務(wù)協(xié)調(diào)者創(chuàng)建并保存該事務(wù)請求對應(yīng)的事務(wù)上下文及事務(wù)ID ;
[0039](4)事務(wù)協(xié)調(diào)者標記事務(wù)啟動請求處理成功,向客戶端返回事務(wù)啟動成功應(yīng)答。
[0040]3、數(shù)據(jù)操作
[0041]在完成事務(wù)啟動后,進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第一階段,后續(xù)數(shù)據(jù)操作請求由客戶端交由事務(wù)協(xié)調(diào)者處理,事務(wù)參與者也將參與到處理的過程中,事務(wù)參與者可能與事務(wù)協(xié)調(diào)者位于同一節(jié)點,也可能位于不同節(jié)點。數(shù)據(jù)操作的處理流程如圖5所示,具體步驟如下:
[0042]( I)事務(wù)協(xié)調(diào)者接收來自客戶端的數(shù)據(jù)操作請求;
[0043](2)事務(wù)協(xié)調(diào)者解析發(fā)送請求的客戶端的源地址和線程ID信息,并根據(jù)上述信息獲取相應(yīng)的事務(wù)上下文;
[0044](3)事務(wù)協(xié)調(diào)者采用服務(wù)器端驅(qū)動的數(shù)據(jù)定位方式進行數(shù)據(jù)定位,根據(jù)請求的鍵信息確認事務(wù)參與者地址,并將該地址保存在事務(wù)上下文中;
[0045](4)事務(wù)協(xié)調(diào)者將數(shù)據(jù)操作請求發(fā)送給相關(guān)事務(wù)參與者,并等待來自事務(wù)參與者的應(yīng)答;
[0046](5)事務(wù)參與者接收到來自事務(wù)協(xié)調(diào)者發(fā)送的數(shù)據(jù)操作請求后,具體的數(shù)據(jù)操作過程包含以下步驟:
[0047](5.1)事務(wù)參與者提取請求消息中的事務(wù)ID信息,并根據(jù)事務(wù)ID查找本地的事務(wù)上下文信息;
[0048](5.2)事務(wù)參與者判斷數(shù)據(jù)操作類型,若為讀操作,則進入步驟(5.3),若為寫操作則進入步驟(5.5);
[0049](5.3)事務(wù)參與者判斷內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點是否已經(jīng)對讀操作請求的目標數(shù)據(jù)進行封鎖。如果尚未將該數(shù)據(jù)封鎖,則創(chuàng)建相關(guān)鎖對象并設(shè)置為共享鎖,然后進入步驟(5.4);如果已經(jīng)將該數(shù)據(jù)封鎖,則判斷鎖對象類型,若為共享鎖,則進入步驟(5.4),若為排它鎖,則標記處理失敗,進入步驟(5.7);
[0050](5.4)事務(wù)參與者獲取數(shù)據(jù)并將數(shù)據(jù)操作應(yīng)答返回給事務(wù)協(xié)調(diào)者;
[0051](5.5)事務(wù)參與者判斷內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點是否已經(jīng)對寫操作請求的目標數(shù)據(jù)進行封鎖。如果尚未將該數(shù)據(jù)封鎖,則創(chuàng)建相關(guān)鎖對象并設(shè)置為排它鎖,然后進入步驟(5.6);如果該數(shù)據(jù)已經(jīng)被封鎖,則標記處理失敗,進入步驟(5.7);
[0052](5.6)事務(wù)參與者根據(jù)操作類型和目標數(shù)據(jù)信息,創(chuàng)建并保存事務(wù)日志;
[0053](5.7)事務(wù)參與者返回數(shù)據(jù)操作是否成功的應(yīng)答給事務(wù)協(xié)調(diào)者;
[0054](6)事務(wù)協(xié)調(diào)者接收事務(wù)參與者的應(yīng)答,若出現(xiàn)失敗應(yīng)答,則標記數(shù)據(jù)操作處理失敗,若應(yīng)答均為成功應(yīng)答,則標記數(shù)據(jù)操作處理成功;
[0055](7)事務(wù)協(xié)調(diào)者將數(shù)據(jù)操作處理結(jié)果返回給客戶端,若處理失敗則在客戶端拋出異常,則進入步驟4,執(zhí)行協(xié)議第二階段的事務(wù)回滾操作,否則進入步驟5,執(zhí)行協(xié)議第二階段的事務(wù)提交操作。
[0056]4、事務(wù)提交
[0057]在成功完成后續(xù)數(shù)據(jù)操作后,進入內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議的第二階段。事務(wù)提交的處理流程如圖6所示,具體步驟如下:
[0058]( I)事務(wù)協(xié)調(diào)者接收來自客戶端的事務(wù)提交請求;
[0059](2)事務(wù)協(xié)調(diào)者解析發(fā)送請求的客戶端的源地址和線程ID信息,并根據(jù)上述信息獲取相應(yīng)的事務(wù)上下文;
[0060](3)事務(wù)協(xié)調(diào)者從該事務(wù)上下文中提取事務(wù)參與者的相關(guān)信息;
[0061](4)事務(wù)協(xié)調(diào)者將事務(wù)提交請求發(fā)送給相關(guān)事務(wù)參與者,并等待來自事務(wù)參與者的應(yīng)答;
[0062](5)事務(wù)參與者接收到來自事務(wù)協(xié)調(diào)者發(fā)送的事務(wù)提交請求后,具體的事務(wù)提交過程包含以下步驟:
[0063](5.1)事務(wù)參與者提取事務(wù)提交請求消息中的事務(wù)ID信息,并判斷相應(yīng)數(shù)據(jù)操作類型。若為讀操作,則進入步驟(5.2),若為寫操作,則進入步驟(5.3);
[0064](5.2)事務(wù)參與者解除相關(guān)數(shù)據(jù)的封鎖,然后進入步驟(5.6);
[0065](5.3)事務(wù)參與者根據(jù)事務(wù)提交請求消息中的事務(wù)ID信息,從本地存儲中提取與該事務(wù)相關(guān)的日志記錄集合;
[0066](5.4)事務(wù)參與者針對日志集合中的每一條日志,執(zhí)行相應(yīng)讀寫操作。每次處理完一條日志,事務(wù)參與者將該日志從日志集合中刪除;
[0067](5.5)事務(wù)參與者解除相關(guān)數(shù)據(jù)的封鎖,并清除當(dāng)前事務(wù)上下文信息;
[0068](5.6)事務(wù)參與者返回事務(wù)提交是否成功的應(yīng)答給事務(wù)協(xié)調(diào)者;
[0069](6)事務(wù)協(xié)調(diào)者收所有事務(wù)參與者的應(yīng)答,清除當(dāng)前事務(wù)上下文信息;
[0070](7)事務(wù)協(xié)調(diào)者向客戶端返回事務(wù)提交應(yīng)答。
[0071]5、事務(wù)回滾
[0072]在分布式事務(wù)處理的過程中,很多情況可能導(dǎo)致事務(wù)不能按照預(yù)期的方式執(zhí)行,比如在數(shù)據(jù)操作階段封鎖相關(guān)數(shù)據(jù)失敗將導(dǎo)致不能進行后續(xù)操作,客戶端會拋出異常消息,此時將導(dǎo)致事務(wù)的回滾操作。在事務(wù)回滾階段,事務(wù)協(xié)調(diào)者通知各個事務(wù)參與者放棄相關(guān)數(shù)據(jù)操作的執(zhí)行計劃,以保證當(dāng)前事務(wù)的數(shù)據(jù)操作請求沒有對數(shù)據(jù)造成修改,并解除當(dāng)前事務(wù)的所有封鎖。事務(wù)回滾請求的處理流程如圖7所示,具體步驟如下:
[0073](I)事務(wù)協(xié)調(diào)者接收來自客戶端的事務(wù)回滾請求;
[0074](2)事務(wù)協(xié)調(diào)者解析發(fā)送請求的客戶端的源地址和線程ID信息,并根據(jù)上述信息獲取相應(yīng)的事務(wù)上下文;
[0075](3)事務(wù)協(xié)調(diào)者從已保存的事務(wù)上下文中提取出所有事務(wù)參與者的信息;
[0076](4)事務(wù)協(xié)調(diào)者將事務(wù)回滾請求發(fā)送給所有事務(wù)參與者,并等待來自事務(wù)參與者的應(yīng)答;
[0077](5)事務(wù)參與者接收到來自事務(wù)協(xié)調(diào)者發(fā)送的事務(wù)回滾請求后,具體的事務(wù)回滾執(zhí)行包含以下步驟:
[0078](5.1)事務(wù)參與者提取事務(wù)回滾請求消息中的事務(wù)ID信息,并判斷相應(yīng)數(shù)據(jù)操作類型,若為寫操作,則進入步驟(5.2),若為讀操作,則進入步驟(5.3);
[0079](5.2)事務(wù)參與者根據(jù)此事務(wù)ID信息查看本地事務(wù)上下文中參與此事務(wù)操作的日志記錄集合,并清除對應(yīng)日志信息,進入步驟(5.3);
[0080](5.3)事務(wù)參與者解除相關(guān)數(shù)據(jù)的封鎖,并清除當(dāng)前事務(wù)的上下文信息;
[0081](5.4)事務(wù)參與者返回事務(wù)回滾成功應(yīng)答給事務(wù)協(xié)調(diào)者;
[0082](6)事務(wù)協(xié)調(diào)者收到所有事務(wù)參與者的應(yīng)答消息后,清除當(dāng)前事務(wù)的上下文信息;
[0083](7)事務(wù)協(xié)調(diào)者向客戶端返回事務(wù)回滾應(yīng)答。
[0084]本發(fā)明未詳細闡述部分屬于本領(lǐng)域技術(shù)人員的公知技術(shù)。
[0085]以上所述,僅為本發(fā)明中的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可理解想到的變換或替換,都應(yīng)涵蓋在本發(fā)明的包含范圍之內(nèi),因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求書的保護范圍為準。
【權(quán)利要求】
1.一種面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,其特征在于實現(xiàn)步驟如下: (1)服務(wù)節(jié)點選定 客戶端的每次事務(wù)請求被發(fā)送給服務(wù)器端的某一個節(jié)點,并將該節(jié)點作為本次事務(wù)的服務(wù)節(jié)點及事務(wù)協(xié)調(diào)者; (2)事務(wù)啟動 在服務(wù)節(jié)點接收到來自客戶端發(fā)起的事務(wù)啟動請求后,事務(wù)協(xié)調(diào)者為該事務(wù)創(chuàng)建并保存事務(wù)上下文信息以及事務(wù)ID信息; (3)數(shù)據(jù)操作 當(dāng)事務(wù)啟動后,后續(xù)數(shù)據(jù)操作遵照內(nèi)存數(shù)據(jù)網(wǎng)格兩階段提交協(xié)議進行,所有的后續(xù)數(shù)據(jù)操作請求首先進行協(xié)議第一階段處理,然后再進入?yún)f(xié)議第二階段;協(xié)議第一階段即請求階段,在該階段內(nèi),事務(wù)協(xié)調(diào)者首先采用服務(wù)器端驅(qū)動的數(shù)據(jù)定位方式進行數(shù)據(jù)定位,確認數(shù)據(jù)操作的目標數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點,并將這些節(jié)點作為事務(wù)參與者,然后事務(wù)協(xié)調(diào)者將數(shù)據(jù)操作請求轉(zhuǎn)發(fā)給事務(wù)參與者;事務(wù)參與者在接收到來自事務(wù)協(xié)調(diào)者的數(shù)據(jù)操作請求后,首先嘗試封鎖相關(guān)數(shù)據(jù),若封鎖數(shù)據(jù)成功,則以事務(wù)操作日志的形式記錄數(shù)據(jù)操作請求的內(nèi)容,然后向事務(wù)協(xié)調(diào)者確認可以執(zhí)行數(shù)據(jù)操作,若封鎖數(shù)據(jù)失敗,則告知事務(wù)協(xié)調(diào)者無法執(zhí)行數(shù)據(jù)操作;事務(wù)協(xié)調(diào)者判斷事務(wù)參與者的數(shù)據(jù)操作請求應(yīng)答,當(dāng)出現(xiàn)失敗應(yīng)答時,則進入步驟(5 ),若所有應(yīng)答均為成功應(yīng)答,則進入步驟(4); (4)事務(wù)提交 在完成所有數(shù)據(jù)操作請求的處理后,客戶端發(fā)送事務(wù)提交請求;在事務(wù)協(xié)調(diào)者接收到事務(wù)提交請求后,進入內(nèi)存數(shù)據(jù) 網(wǎng)格兩階段提交協(xié)議的第二階段,即提交階段;事務(wù)協(xié)調(diào)者通知所有事務(wù)參與者進行事務(wù)提交操作,事務(wù)參與者根據(jù)事務(wù)操作日志信息修改實際數(shù)據(jù),然后解除數(shù)據(jù)封鎖并清除日志,接著事務(wù)參與者回復(fù)確認消息給事務(wù)協(xié)調(diào)者;當(dāng)所有的事務(wù)參與者均確認數(shù)據(jù)操作執(zhí)行成功后,事務(wù)協(xié)調(diào)者銷毀事務(wù)上下文,結(jié)束本次事務(wù)請求的處理; (5)事務(wù)回滾 若事務(wù)參與者的數(shù)據(jù)操作無法成功執(zhí)行,則進入?yún)f(xié)議第二階段,并執(zhí)行事務(wù)回滾操作;在事務(wù)協(xié)調(diào)者接收到事務(wù)回滾請求后,通知所有事務(wù)參與者解除數(shù)據(jù)封鎖,并清除相關(guān)事務(wù)操作日志,然后事務(wù)協(xié)調(diào)者銷毀事務(wù)上下文,結(jié)束本次事務(wù)請求的處理。
2.根據(jù)權(quán)利要求1所述的面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,其特征在于:所述步驟(I)中,根據(jù)服務(wù)器端節(jié)點的負載分布情況或者采用隨機策略,選擇服務(wù)器端的特定節(jié)點作為本次事務(wù)的服務(wù)節(jié)點及事務(wù)協(xié)調(diào)者。
3.根據(jù)權(quán)利要求1所述的面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,其特征在于:所述步驟(3),在完成事務(wù)啟動后,后續(xù)數(shù)據(jù)操作請求由事務(wù)協(xié)調(diào)者與事務(wù)參與者處理,其中事務(wù)參與者負責(zé)的數(shù)據(jù)操作的具體步驟如下: (3.1)事務(wù)參與者提取請求消息中的事務(wù)ID信息,并根據(jù)事務(wù)ID查找本地的事務(wù)上下文信息; (3.2)事務(wù)參與者判斷數(shù)據(jù)操作類型,若為讀操作,則進入步驟(3.3),若為寫操作則進入步驟(3.5); (3.3)事務(wù)參與者判斷內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點是否已經(jīng)對讀操作請求的目標數(shù)據(jù)進行封鎖。如果尚未將該數(shù)據(jù)封鎖,則創(chuàng)建相關(guān)鎖對象并設(shè)置為共享鎖,然后進入步驟(3.4);如果已經(jīng)將該數(shù)據(jù)封鎖,則判斷鎖對象類型, 若為共享鎖,則進入步驟(3.4),若為排它鎖,則標記處理失敗,進入步驟(3.7); (3.4)事務(wù)參與者獲取數(shù)據(jù)并將數(shù)據(jù)操作應(yīng)答返回給事務(wù)協(xié)調(diào)者; (3.5)事務(wù)參與者判斷內(nèi)存數(shù)據(jù)網(wǎng)格節(jié)點是否已經(jīng)對寫操作請求的目標數(shù)據(jù)進行封鎖;如果尚未將該數(shù)據(jù)封鎖,則創(chuàng)建相關(guān)鎖對象并設(shè)置為排它鎖,然后進入步驟(3.6);如果該數(shù)據(jù)已經(jīng)被封鎖,則標記處理失敗,進入步驟(3.7); (3.6)事務(wù)參與者根據(jù)操作類型和目標數(shù)據(jù)信息,創(chuàng)建并保存事務(wù)日志; (3.7)事務(wù)參與者返回數(shù)據(jù)操作是否成功的應(yīng)答給事務(wù)協(xié)調(diào)者。
4.根據(jù)權(quán)利要求1所述的面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,其特征在于:所述步驟(4),在成功完成后續(xù)數(shù)據(jù)操作后,事務(wù)參與者提交的具體步驟如下: (4.1)事務(wù)參與者提取事務(wù)提交請求消息中的事務(wù)ID信息,并判斷相應(yīng)數(shù)據(jù)操作類型;若為讀操作,則進入步驟(4.2),若為寫操作,則進入步驟(4.3); (4.2)事務(wù)參與者解除相關(guān)數(shù)據(jù)的封鎖,然后進入步驟(4.6); (4.3)事務(wù)參與者根據(jù)事務(wù)提交請求消息中的事務(wù)ID信息,從本地存儲中提取與該事務(wù)相關(guān)的日志記錄集合; (4.4)事務(wù)參與者針對日志集合中的每一條日志,執(zhí)行相應(yīng)讀寫操作;每次處理完一條日志,事務(wù)參與者將該日志從日志集合中刪除; (4.5)事務(wù)參與者解除相關(guān)數(shù)據(jù)的封鎖,并清除當(dāng)前事務(wù)上下文信息; (4.6)事務(wù)參與者返回事務(wù)提交是否成功的應(yīng)答給事務(wù)協(xié)調(diào)者。
5.根據(jù)權(quán)利要求1所述的面向內(nèi)存數(shù)據(jù)網(wǎng)格的分布式事務(wù)保障方法,其特征在于:所述步驟(5),事務(wù)回滾請求的具體步驟如下: (5.1)事務(wù)參與者提取事務(wù)回滾請求消息中的事務(wù)ID信息,并判斷相應(yīng)數(shù)據(jù)操作類型,若為寫操作,則進入步驟(5.2),若為讀操作,則進入步驟(5.3); (5.2)事務(wù)參與者根據(jù)此事務(wù)ID信息查看本地事務(wù)上下文中參與此事務(wù)操作的日志記錄集合,并清除對應(yīng)日志信息,進入步驟(5.3); (5.3)事務(wù)參與者解除相關(guān)數(shù)據(jù)的封鎖,并清除當(dāng)前事務(wù)的上下文信息; (5.4)事務(wù)參與者返回事務(wù)回滾成功應(yīng)答給事務(wù)協(xié)調(diào)者。
【文檔編號】G06F17/30GK103473318SQ201310415370
【公開日】2013年12月25日 申請日期:2013年9月12日 優(yōu)先權(quán)日:2013年9月12日
【發(fā)明者】黃濤, 鐘華, 魏峻, 王偉, 趙鑫, 劉朝輝 申請人:中國科學(xué)院軟件研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
卢氏县| 莱西市| 松阳县| 彩票| 华容县| 丘北县| 襄樊市| 甘德县| 革吉县| 南京市| 莆田市| 松滋市| 赫章县| 安康市| 清镇市| 东方市| 聊城市| 文登市| 称多县| 乐亭县| 镇平县| 永丰县| 威宁| 弋阳县| 富源县| 梨树县| 上饶县| 三门峡市| 大兴区| 仙居县| 东乌珠穆沁旗| 新兴县| 随州市| 云安县| 林甸县| 波密县| 隆林| 丰城市| 龙江县| 桐庐县| 滕州市|