本發(fā)明涉及一種分布式數(shù)據(jù)中心技術(shù)領(lǐng)域,具體為一種分布式系統(tǒng)架構(gòu)數(shù)據(jù)處理一致性保障方法。
背景技術(shù):
傳統(tǒng)主-備模式的數(shù)據(jù)中心只是簡單的軟硬件資源的堆砌。正常情況下,主用數(shù)據(jù)中心對外提供業(yè)務(wù),備用數(shù)據(jù)中心處于閑置狀態(tài)。只有在發(fā)生災(zāi)難宕機(jī)的情況下,業(yè)務(wù)系統(tǒng)才從主用中心遷移到備用中心來。然而,災(zāi)難往往只是小概率事件,企業(yè)投入大量人力和物力建設(shè)的備用中心大多時候都是處于閑置狀態(tài),資源使用率極低。在傳統(tǒng)的主備中心模式之下,數(shù)據(jù)中心設(shè)備利用效率低下,業(yè)務(wù)連續(xù)性不高。當(dāng)某個業(yè)務(wù)出現(xiàn)問題的情況下,只能做整體的主備倒換,切換風(fēng)險很大。
分布式數(shù)據(jù)中心的出現(xiàn),讓我們找到了優(yōu)化投資利用率、保證業(yè)務(wù)連續(xù)性的新思路。因此,公司計劃建設(shè)分布式數(shù)據(jù)中心,提高業(yè)務(wù)連續(xù)性,提高災(zāi)備中心的資源利用效率,同時實現(xiàn)分業(yè)務(wù)的自動切換,即某業(yè)務(wù)故障,僅遷移該業(yè)務(wù),遷移過程不影響其他核心業(yè)務(wù)正常運(yùn)行,降低故障切換的風(fēng)險。建設(shè)分布式數(shù)據(jù)中心成為保證公司業(yè)務(wù)連續(xù)性的必然選擇。然而,建設(shè)分布式雙活數(shù)據(jù)中心需要網(wǎng)絡(luò)系統(tǒng)、存儲系統(tǒng)、計算資源甚至包括應(yīng)用系統(tǒng)等多個IT系統(tǒng)之間緊密合作,是一個龐大的系統(tǒng)工程。在分布式環(huán)境中,對數(shù)據(jù)的操作是分布在不同的計算節(jié)點上的,若分布式數(shù)據(jù)不一致,會造成系統(tǒng)的不可用,為了解決上述問題,分布式系統(tǒng)構(gòu)架需要具備事務(wù)處理能力,保證事務(wù)處理的原子性、一致性、獨(dú)立性與持久性。
在這個應(yīng)用層面的分布式事務(wù),目前知名的幾個商業(yè)云計算平臺都未做標(biāo)準(zhǔn)規(guī)范,目前屬于業(yè)界領(lǐng)域的空白。
技術(shù)實現(xiàn)要素:
針對分布式系統(tǒng)構(gòu)架數(shù)據(jù)處理一致性保障不佳的問題,本發(fā)明提供一種分布式系統(tǒng)架構(gòu)數(shù)據(jù)處理一致性保障方法。
本發(fā)明的分布式系統(tǒng)架構(gòu)數(shù)據(jù)處理一致性保障方法,其特征在于該方法通過以下步驟實現(xiàn):
1)發(fā)起者啟動本地事務(wù);
2)發(fā)起者調(diào)用xts接口,開始分布式事務(wù),活動管理器生成事務(wù)id并持久化事務(wù)活動;
3)預(yù)提交階段:發(fā)起者調(diào)用業(yè)務(wù)操作,運(yùn)行時參與者通過操作調(diào)用攔截器攔截業(yè)務(wù)操作,并對該業(yè)務(wù)進(jìn)行注冊操作,活動管理器將該事務(wù)操作持久化,并將該次操作加入到當(dāng)前事務(wù)活動中;
4)提交階段:若發(fā)起者發(fā)現(xiàn)某調(diào)用返回結(jié)果異常或調(diào)用異常,回滾發(fā)起者本地事務(wù),然后回滾事務(wù)活動;若發(fā)起者調(diào)用返回結(jié)果或調(diào)用正常,提交本地事務(wù),并提交事務(wù)活動。
5)提交及回滾事務(wù)活動完成后調(diào)用xts刪除接口將該次事務(wù)活動刪除。
所述的提交及回滾事務(wù)活動,其特征在于包括下述步驟:
a. 定時任務(wù)服務(wù)執(zhí)行xts回查任務(wù),調(diào)用xts回查接口;
b. xts調(diào)用發(fā)起者回查接口(isDone),根據(jù)返回結(jié)果更新事務(wù)活動狀態(tài);
c. 根據(jù)事務(wù)活動狀態(tài)提交/回滾各事務(wù)操作。
在標(biāo)準(zhǔn)的XA規(guī)范里,兩階段提交的過程中,第一階段各資源管理器執(zhí)行預(yù)提交,并給調(diào)用者返回結(jié)果,如果每個資源管理器的預(yù)提交都是正常的,第二階段由事務(wù)管理器發(fā)起提交操作;如果有各資源管理器預(yù)提交過程中有一個發(fā)生失敗,那么資源管理器會使整個事務(wù)的所有參與者都執(zhí)行回滾。全程所操作的分支事務(wù)操作都會持久化到日志中,以便在提交失敗或其他異常狀況出現(xiàn)后重新發(fā)起審查和恢復(fù)操作,確保事務(wù)一致性。在XA中的Database和驅(qū)動程序自身能夠支持兩階段提交的特性。
xts(分布式事務(wù)服務(wù))實現(xiàn)兩階段的思想是一樣的。主要的區(qū)別除了實際接口和實現(xiàn)不同之外,xts對兩階段的實現(xiàn)只是對數(shù)據(jù)庫預(yù)提交和提交/回滾的一個模擬,所以,xts也不需要數(shù)據(jù)庫及其JDBC驅(qū)動程序必須內(nèi)部支持分布式事務(wù)。所有的操作其實都是通過在應(yīng)用邏輯來進(jìn)行模擬的。也就是說,在xts中所謂第一階段的預(yù)提交其實都已經(jīng)是數(shù)據(jù)庫層面的真正的提交,即使數(shù)據(jù)庫及其JDBC驅(qū)動支持分布式事務(wù),我們也不使用它;而第二階段的提交操作根據(jù)各參與者而定,參與者應(yīng)用系統(tǒng)可以去更改一個標(biāo)志位以便表示第一階段的“預(yù)提交”已經(jīng)完成了,實際上甚至可以什么都不做。也就是說只要有數(shù)據(jù)庫操作,都是實質(zhì)上的提交。因此回滾也只是一個反向的數(shù)據(jù)庫數(shù)據(jù)操作,把第一階段中插入的數(shù)據(jù)刪除掉,刪除的數(shù)據(jù)插入回去,或者把第一階段升級的數(shù)據(jù)重新升級回去。在xts中并不存在XA規(guī)范中的那種本質(zhì)上的數(shù)據(jù)庫“預(yù)提交”操作,這種操作都事務(wù)參與者在“模擬”的。
本發(fā)明的分布式系統(tǒng)架構(gòu)數(shù)據(jù)處理一致性保障方法, 實現(xiàn)了云計算環(huán)境下企業(yè)級分布式系統(tǒng)數(shù)據(jù)一致性保障,為下一步深入研究與建設(shè)做好技術(shù)儲備與實現(xiàn)基礎(chǔ)。該方法在應(yīng)用層面通過“模擬”的方式實現(xiàn)2PC協(xié)議,解決XA規(guī)范覆蓋不到的非數(shù)據(jù)庫操作,并對使用者侵入少,要求較低。
另外,為了解決業(yè)務(wù)需求,分布式系統(tǒng)規(guī)??赡軙饾u增大,分布式事務(wù)處理吞吐能力也需要提高,xts服務(wù)可以進(jìn)行分布式部署并通過節(jié)點擴(kuò)展來提升處理能力,從而進(jìn)一步提高系統(tǒng)對外業(yè)務(wù)處理量。除了解決數(shù)據(jù)庫的分布式事務(wù)處理,也可以用于解決其他需要納入到分布式事務(wù)的資源操作,例如文件服務(wù)操作、消息服務(wù)操作等。
附圖說明
圖1為本發(fā)明的保障方法的邏輯框圖。
具體實施方式
實施例1:本發(fā)明的分布式系統(tǒng)架構(gòu)數(shù)據(jù)處理一致性保障方法,其特征在于該方法通過以下步驟實現(xiàn):
1)發(fā)起者啟動本地事務(wù);
2)發(fā)起者調(diào)用xts接口,開始分布式事務(wù),活動管理器生成事務(wù)id并持久化事務(wù)活動;
3)預(yù)提交階段:發(fā)起者調(diào)用業(yè)務(wù)操作,運(yùn)行時參與者通過操作調(diào)用攔截器攔截業(yè)務(wù)操作,并對該業(yè)務(wù)進(jìn)行注冊操作,活動管理器將該事務(wù)操作持久化,并將該次操作加入到當(dāng)前事務(wù)活動中;
4)提交階段:若發(fā)起者發(fā)現(xiàn)某調(diào)用返回結(jié)果異?;蛘{(diào)用異常,回滾發(fā)起者本地事務(wù),然后回滾事務(wù)活動;若發(fā)起者調(diào)用返回結(jié)果或調(diào)用正常,提交本地事務(wù),并提交事務(wù)活動;
5)提交及回滾事務(wù)活動完成后調(diào)用xts刪除接口將該次事務(wù)活動刪除。
所述的提交及回滾事務(wù)活動,其特征在于包括下述步驟:
a. 定時任務(wù)服務(wù)執(zhí)行xts回查任務(wù),調(diào)用xts回查接口;
b. xts調(diào)用發(fā)起者回查接口(isDone),根據(jù)返回結(jié)果更新事務(wù)活動狀態(tài);
c. 根據(jù)事務(wù)活動狀態(tài)提交/回滾各事務(wù)操作。