一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明公開一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法,屬于數(shù)據(jù)庫管理技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]云計算是基于網(wǎng)絡(luò)來提供服務(wù)的新興技術(shù),云計算需要不同的組件來提供服務(wù),而這些組件都是以服務(wù)接口的方式來插入到云計算架構(gòu)的實現(xiàn)中,而這些組件的開發(fā)也可能由不同的云服務(wù)提供商來提供,所以其后端數(shù)據(jù)庫的數(shù)據(jù)一致性就必須得到保障,否則云計算的業(yè)務(wù)數(shù)據(jù)可能會混亂不堪。設(shè)想服務(wù)A組件與服務(wù)B組件共同完成一項任務(wù),當(dāng)A服務(wù)組件更新了本地數(shù)據(jù)庫實例的數(shù)據(jù)后,而服務(wù)B沒有這么做,那么系統(tǒng)數(shù)據(jù)就會紊亂,有些事情就無從查證,導(dǎo)致作業(yè)任務(wù)無法完成。目前保持分布式數(shù)據(jù)庫事務(wù)一致性的方法,通常會在服務(wù)A與服務(wù)B之間架設(shè)一個中心節(jié)點模塊C,該中心模塊負責(zé)勾連兩服務(wù)間的消息通信,當(dāng)應(yīng)用程序請求時,C先將消息記錄在本地日志中,然后轉(zhuǎn)發(fā)消息給A與B,A與B同時都處理成功并返回yes給C后,C再次發(fā)送消息給A與B,進行提交。當(dāng)在提交階段某服務(wù)出現(xiàn)問題返回no時,C還要通知所有服務(wù)進行回滾操作,這種方法有多次提交與消息交互,網(wǎng)絡(luò)通信時間太長,當(dāng)事務(wù)時間太長時,鎖定的資源時間也加長,造成服務(wù)提供能力減弱,性能下降等問題。本發(fā)明提供一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法,設(shè)置消息管理模塊用于維護消息的狀態(tài)變化,當(dāng)服務(wù)A產(chǎn)生消息發(fā)送到服務(wù)B時,服務(wù)B的消息處理狀態(tài)會隨著業(yè)務(wù)邏輯的處理編程處理成功或者失敗狀態(tài),基于消息來保證分布式數(shù)據(jù)庫事務(wù)的一致性,能夠提高并發(fā)訪問量,解決傳統(tǒng)方法中由于中心節(jié)點C轉(zhuǎn)發(fā)消息帶來的性能下降,由于引入本地日志與消息管理模塊,還可以在服務(wù)故障后,保證事務(wù)的重新提交,并且能夠避免事務(wù)的重復(fù)提交。
【發(fā)明內(nèi)容】
[0003]本發(fā)明針對目前保持分布式數(shù)據(jù)庫事務(wù)一致性的方法,多次提交與消息交互,網(wǎng)絡(luò)通信時間太長,當(dāng)事務(wù)時間太長時,鎖定的資源時間也加長,造成服務(wù)提供能力減弱,性能下降等問題,提供一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法,解決現(xiàn)有方法中轉(zhuǎn)發(fā)消息帶來的性能下降,導(dǎo)致效率低下的問題,還可以在服務(wù)故障后,保證事務(wù)的重新提交,并且能夠避免事務(wù)的重復(fù)提交。
[0004]本發(fā)明提出的具體方案是:
一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法:
云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);同時將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。
[0005]當(dāng)在前分布式服務(wù)出現(xiàn)故障,在后分布式服務(wù)維護接收到的在前服務(wù)的消息,當(dāng)在前服務(wù)恢復(fù)后,發(fā)出消息,在后服務(wù)檢查該消息是否已經(jīng)處理過,若處理過則丟棄該消息。
[0006]—種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的系統(tǒng),包括服務(wù)執(zhí)行器模塊和消息管理模塊,
其中服務(wù)執(zhí)行器模塊負責(zé)云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);
消息管理模塊負責(zé)將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。
[0007]當(dāng)在前分布式服務(wù)出現(xiàn)故障,消息管理模塊使在后分布式服務(wù)維護接收到的在前服務(wù)的消息,當(dāng)在前服務(wù)恢復(fù)后,發(fā)出消息,在后服務(wù)檢查該消息是否已經(jīng)處理過,若處理過則丟棄該消息。
[0008]本發(fā)明的有益之處是:
本發(fā)明云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);同時將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送;本發(fā)明能夠提高并發(fā)訪問量,解決傳統(tǒng)方法中由于中心節(jié)點轉(zhuǎn)發(fā)消息帶來的性能下降,由于引入本地日志與消息管理模塊,還可以在服務(wù)故障后,保證事務(wù)的重新提交,并且能夠避免事務(wù)的重復(fù)提交。
【附圖說明】
[0009]圖1本發(fā)明方法的流程示意圖。
【具體實施方式】
[0010]一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法:
云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);同時將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。
[0011]—種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的系統(tǒng),包括服務(wù)執(zhí)行器模塊和消息管理模塊,
其中服務(wù)執(zhí)行器模塊負責(zé)云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);
消息管理模塊負責(zé)將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。
[0012]利用上述方法及系統(tǒng),結(jié)合附圖對本發(fā)明做一步說明。
[0013]本發(fā)明系統(tǒng)包括:服務(wù)執(zhí)行器模塊、消息管理模塊。
[0014]服務(wù)執(zhí)行器模塊負責(zé)云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);
消息管理模塊負責(zé)將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。
[0015]利用本發(fā)明系統(tǒng),參照附圖中,當(dāng)服務(wù)A產(chǎn)生消息發(fā)送到服務(wù)B時,服務(wù)B的消息處理狀態(tài)會隨著業(yè)務(wù)邏輯的處理編程處理成功或者失敗狀態(tài),如附圖1所示。在前服務(wù)A向在后服務(wù)B發(fā)送了 3個消息分別是消息1、消息2、消息3,服務(wù)B對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),其中消息I和消息2的處理狀態(tài)都是yes,則通知服務(wù)A刪除消息I和消息2,避免重復(fù)發(fā)送,而消息3記錄狀態(tài)為no,因此服務(wù)A還會發(fā)送消息3給服務(wù)B,直到服務(wù)B中事務(wù)數(shù)據(jù)與服務(wù)A數(shù)據(jù)一致;
服務(wù)B記錄消息狀態(tài):當(dāng)消息剛產(chǎn)生時,記錄到服務(wù)A的本地日志中,這樣當(dāng)服務(wù)A突然停止服務(wù)時,可用于故障恢復(fù);服務(wù)B也會維護接收到的服務(wù)A的消息考慮服務(wù)A在故障前發(fā)出了消息1,那么當(dāng)服務(wù)A恢復(fù)后,再次發(fā)出消息I時,B要先檢查一下消息I是否已經(jīng)處理過,處理過即丟棄該消息,這樣做的好處是可以避免消息重復(fù)處理,;當(dāng)服務(wù)B處理完某消息后,返回給服務(wù)A,服務(wù)A要在本地日志中刪除掉已處理的消息。
【主權(quán)項】
1.一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法,其特征是 云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);同時將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。2.根據(jù)權(quán)利要求1所述的一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法,其特征是當(dāng)在前分布式服務(wù)出現(xiàn)故障,在后分布式服務(wù)維護接收到的在前服務(wù)的消息,當(dāng)在前服務(wù)恢復(fù)后,發(fā)出消息,在后服務(wù)檢查該消息是否已經(jīng)處理過,若處理過則丟棄該消息。3.—種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的系統(tǒng),其特征是包括服務(wù)執(zhí)行器模塊和消息管理模塊, 其中服務(wù)執(zhí)行器模塊負責(zé)云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù); 消息管理模塊負責(zé)將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送。4.根據(jù)權(quán)利要求3所述的一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的系統(tǒng),其特征是當(dāng)在前分布式服務(wù)出現(xiàn)故障,消息管理模塊使在后分布式服務(wù)維護接收到的在前服務(wù)的消息,當(dāng)在前服務(wù)恢復(fù)后,發(fā)出消息,在后服務(wù)檢查該消息是否已經(jīng)處理過,若處理過則丟棄該消息。
【專利摘要】本發(fā)明公開一種云計算下分布式數(shù)據(jù)庫保持事務(wù)一致性的方法,屬于數(shù)據(jù)庫管理技術(shù)領(lǐng)域;本發(fā)明云計算下,在前分布式服務(wù)接收業(yè)務(wù)數(shù)據(jù)請求,進行業(yè)務(wù)數(shù)據(jù)邏輯處理,并產(chǎn)生本地消息,同時將消息記錄在本地日志中,生成一個本地事務(wù);同時將消息分發(fā)給需要配合執(zhí)行事務(wù)的在后分布式服務(wù)中,在后服務(wù)的執(zhí)行器按照消息要求對事務(wù)進行邏輯處理,同時更新業(yè)務(wù)數(shù)據(jù)庫的數(shù)據(jù)信息,記錄消息處理狀態(tài),并同時通知服務(wù)調(diào)用者刪除本地日志中的消息,避免重復(fù)發(fā)送;本發(fā)明能夠提高并發(fā)訪問量,解決現(xiàn)有方法中由于中心節(jié)點轉(zhuǎn)發(fā)消息帶來的性能下降,由于引入本地日志與消息管理模塊,還可以在服務(wù)故障后,保證事務(wù)的重新提交,并且能夠避免事務(wù)的重復(fù)提交。
【IPC分類】G06F17/30
【公開號】CN105183879
【申請?zhí)枴緾N201510605942
【發(fā)明人】胡玉鵬, 劉俊朋, 郭鋒, 李新虎, 于輝, 張?zhí)m英
【申請人】浪潮集團有限公司
【公開日】2015年12月23日
【申請日】2015年9月22日