System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實現(xiàn)步驟摘要】
本申請涉及分布式事務(wù),尤其涉及一種檢測saga分布式事務(wù)設(shè)計合理性的方法及相關(guān)裝置。
技術(shù)介紹
1、saga事務(wù)的核心思想是將一個長事務(wù)(long?live?transaction,llt)拆分為多個本地短事務(wù),由saga事務(wù)協(xié)調(diào)器協(xié)調(diào),如果正常結(jié)束則正常完成,如果某個步驟失敗,則根據(jù)制定的順序調(diào)用補償操作。
2、saga模式把分布式事務(wù)看作一串子事務(wù)的事務(wù)鏈,每個saga子事務(wù)有相應(yīng)的正向操作(execute)tn,以及對應(yīng)的補償操作(compensate)cn,cn用于撤銷tn造成的結(jié)果。如果所有的子事務(wù)都被執(zhí)行成功,則整個事務(wù)成功;如果任何一個子事務(wù)失敗,整個事務(wù)模型都會被取消。補償操作(compensate)從語義角度撤消了tn的行為,但未必能將數(shù)據(jù)庫返回到執(zhí)行tn前的狀態(tài)。
3、目前,saga分布式事務(wù)的設(shè)計合理性測試需要依賴技術(shù)文檔,并對比測試案例執(zhí)行前后的數(shù)據(jù)快照,技術(shù)文檔的質(zhì)量及測試數(shù)據(jù)的變動對于測試結(jié)果的準(zhǔn)確性與完備性影響較大。
技術(shù)實現(xiàn)思路
1、鑒于上述問題,本申請?zhí)峁┝艘环N檢測saga分布式事務(wù)設(shè)計合理性的方法及相關(guān)裝置,以實現(xiàn)不依賴技術(shù)文檔及測試數(shù)據(jù)實現(xiàn)檢測saga分布式事務(wù)設(shè)計合理性的目的。具體方案如下:
2、本申請第一方面提供一種檢測saga分布式事務(wù)設(shè)計合理性的方法,包括:
3、獲得測試案例的業(yè)務(wù)標(biāo)識以及與所述業(yè)務(wù)標(biāo)識關(guān)聯(lián)的日志的日志號,所述測試案例是用于對使用saga分布式事務(wù)的目標(biāo)設(shè)計的業(yè)務(wù)系統(tǒng)進行反
4、基于所述業(yè)務(wù)標(biāo)識和所述日志號,獲得利用所述測試案例進行反向測試時產(chǎn)生的日志;
5、按照操作時間的先后順序,將所述日志中的數(shù)據(jù)操作轉(zhuǎn)換為按照操作時間的先后順序依次排列的多個結(jié)構(gòu)化查詢語言sql語句;
6、確定所述日志中的錯誤事件的發(fā)生時刻,基于所述發(fā)生時刻將所述錯誤事件插入到所述依次排列的多個結(jié)構(gòu)化查詢語言sql語句中;
7、基于插入所述錯誤事件的所述依次排列的多個結(jié)構(gòu)化查詢語言sql語句,確定利用所述測試案例進行反向測試后的測試結(jié)果;
8、基于進行反向測試后的測試結(jié)果,確定所述業(yè)務(wù)系統(tǒng)使用的saga分布式事務(wù)的目標(biāo)設(shè)計是否合理。
9、在一種可能的實現(xiàn)中,所述基于插入所述錯誤事件的所述依次排列的多個結(jié)構(gòu)化查詢語言sql語句,確定利用所述測試案例進行反向測試后的測試結(jié)果,包括:
10、將排列在所述錯誤事件之前的sql語句確定為正向操作,將排列在所述錯誤事件之后的sql語句確定為補償操作;
11、將針對同一數(shù)據(jù)表進行操作的所述正向操作和所述補償操作,確定為一個操作組;
12、確定每個所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果。
13、在一種可能的實現(xiàn)中,所述確定每個所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果,包括:
14、對每個所述操作組均進行如下處理:
15、對所述操作組包括的所述正向操作和所述補償操作進行解析,確定所述補償操作是否能夠?qū)⑺霾僮鹘M中的所述正向操作的操作結(jié)果還原,如果能夠還原,則確定所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果為合理,如果不能夠還原,則確定所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果為不合理。
16、在一種可能的實現(xiàn)中,所述對所述操作組包括的所述正向操作和所述補償操作進行解析,確定所述補償操作是否能夠?qū)⑺霾僮鹘M中的所述正向操作的操作結(jié)果還原,包括:
17、對所述操作組包括的所述正向操作和所述補償操作的操作類型進行解析,若所述補償操作的操作類型與所述正向操作的操作類型相反,則確定所述補償操作能夠?qū)⑺霾僮鹘M中的所述正向操作的操作結(jié)果還原,否則,確定所述補償操作不能將所述操作組中的所述正向操作的操作結(jié)果還原。
18、在一種可能的實現(xiàn)中,所述基于進行反向測試后的測試結(jié)果,確定所述業(yè)務(wù)系統(tǒng)使用的saga分布式事務(wù)的目標(biāo)設(shè)計是否合理,包括:
19、若各所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果均為合理,則確定所述業(yè)務(wù)系統(tǒng)使用的saga分布式事務(wù)的目標(biāo)設(shè)計合理;
20、若至少有一個所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果為不合理,則確定所述業(yè)務(wù)系統(tǒng)使用的saga分布式事務(wù)的目標(biāo)設(shè)計不合理。
21、本申請第二方面提供一種檢測saga分布式事務(wù)設(shè)計合理性的裝置,包括:
22、標(biāo)識獲得單元,用于獲得測試案例的業(yè)務(wù)標(biāo)識以及與所述業(yè)務(wù)標(biāo)識關(guān)聯(lián)的日志的日志號,所述測試案例是用于對使用saga分布式事務(wù)的目標(biāo)設(shè)計的業(yè)務(wù)系統(tǒng)進行反向測試的案例;
23、日志獲得單元,用于基于所述業(yè)務(wù)標(biāo)識和所述日志號,獲得利用所述測試案例進行反向測試時產(chǎn)生的日志;
24、轉(zhuǎn)換單元,用于按照操作時間的先后順序,將所述日志中的數(shù)據(jù)操作轉(zhuǎn)換為按照操作時間的先后順序依次排列的多個結(jié)構(gòu)化查詢語言sql語句;
25、插入單元,用于確定所述日志中的錯誤事件的發(fā)生時刻,基于所述發(fā)生時刻將所述錯誤事件插入到所述依次排列的多個結(jié)構(gòu)化查詢語言sql語句中;
26、結(jié)果確定單元,用于基于插入所述錯誤事件的所述依次排列的多個結(jié)構(gòu)化查詢語言sql語句,確定利用所述測試案例進行反向測試后的測試結(jié)果;
27、合理確定單元,用于基于進行反向測試后的測試結(jié)果,確定所述業(yè)務(wù)系統(tǒng)使用的saga分布式事務(wù)的目標(biāo)設(shè)計是否合理。
28、在一種可能的實現(xiàn)中,所述結(jié)果確定單元,包括:
29、操作確定子單元,用于將排列在所述錯誤事件之前的sql語句確定為正向操作,將排列在所述錯誤事件之后的sql語句確定為補償操作;
30、操作組子單元,用于將針對同一數(shù)據(jù)表進行操作的所述正向操作和所述補償操作,確定為一個操作組;
31、結(jié)果確定子單元,用于確定每個所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果。
32、本申請第三方面提供一種計算機程序產(chǎn)品,包括計算機可讀指令,當(dāng)所述計算機可讀指令在電子設(shè)備上運行時,使得所述電子設(shè)備實現(xiàn)上述第一方面或第一方面任一實現(xiàn)方式的檢測saga分布式事務(wù)設(shè)計合理性的方法。
33、本申請第四方面提供一種電子設(shè)備,包括至少一個處理器和與所述處理器連接的存儲器,其中:
34、所述存儲器用于存儲計算機程序;
35、所述處理器用于執(zhí)行所述計算機程序,以使所述電子設(shè)備能夠?qū)崿F(xiàn)上述第一方面或第一方面任一實現(xiàn)方式的檢測saga分布式事務(wù)設(shè)計合理性的方法。
36、本申請第五方面提供一種計算機存儲介質(zhì),所述存儲介質(zhì)承載有一個或多個計算機程序,當(dāng)所述一個或多個計算機程序被電子設(shè)備執(zhí)行時,能夠使所述電子設(shè)備上述第一方面或第一方面任一實現(xiàn)方式的檢測saga分布式事務(wù)設(shè)計合理性的方法。
37、借由上述技術(shù)方案,本申請?zhí)峁┑囊环N檢測saga分布式事務(wù)設(shè)計合理性的方法及相關(guān)裝置,可以獲得測試案例的業(yè)務(wù)標(biāo)識以及與業(yè)本文檔來自技高網(wǎng)...
【技術(shù)保護點】
1.一種檢測Saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的檢測Saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述基于插入所述錯誤事件的所述依次排列的多個結(jié)構(gòu)化查詢語言SQL語句,確定利用所述測試案例進行反向測試后的測試結(jié)果,包括:
3.根據(jù)權(quán)利要求2所述的檢測Saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述確定每個所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果,包括:
4.根據(jù)權(quán)利要求3所述的檢測Saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述對所述操作組包括的所述正向操作和所述補償操作進行解析,確定所述補償操作是否能夠?qū)⑺霾僮鹘M中的所述正向操作的操作結(jié)果還原,包括:
5.根據(jù)權(quán)利要求2至4中任一項所述的檢測Saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述基于進行反向測試后的測試結(jié)果,確定所述業(yè)務(wù)系統(tǒng)使用的Saga分布式事務(wù)的目標(biāo)設(shè)計是否合理,包括:
6.一種檢測Saga分布式事務(wù)設(shè)計合理性的裝置,其特征在于,包括:
7.根據(jù)權(quán)利要求6所述的檢測Saga分布式事務(wù)設(shè)
8.一種計算機程序產(chǎn)品,其特征在于,包括計算機可讀指令,當(dāng)所述計算機可讀指令在電子設(shè)備上運行時,使得所述電子設(shè)備實現(xiàn)如權(quán)利要求1至5中任意一項所述的檢測Saga分布式事務(wù)設(shè)計合理性的方法。
9.一種電子設(shè)備,其特征在于,包括至少一個處理器和與所述處理器連接的存儲器,其中:
10.一種計算機存儲介質(zhì),其特征在于,所述存儲介質(zhì)承載有一個或多個計算機程序,當(dāng)所述一個或多個計算機程序被電子設(shè)備執(zhí)行時,能夠使所述電子設(shè)備實現(xiàn)如權(quán)利要求1至5中任意一項所述的檢測Saga分布式事務(wù)設(shè)計合理性的方法。
...【技術(shù)特征摘要】
1.一種檢測saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的檢測saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述基于插入所述錯誤事件的所述依次排列的多個結(jié)構(gòu)化查詢語言sql語句,確定利用所述測試案例進行反向測試后的測試結(jié)果,包括:
3.根據(jù)權(quán)利要求2所述的檢測saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述確定每個所述操作組操作所述同一數(shù)據(jù)表后的測試結(jié)果,包括:
4.根據(jù)權(quán)利要求3所述的檢測saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述對所述操作組包括的所述正向操作和所述補償操作進行解析,確定所述補償操作是否能夠?qū)⑺霾僮鹘M中的所述正向操作的操作結(jié)果還原,包括:
5.根據(jù)權(quán)利要求2至4中任一項所述的檢測saga分布式事務(wù)設(shè)計合理性的方法,其特征在于,所述基于進行反向測試后的測試結(jié)果,確...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:邱亞茹,曹雅麗,常立志,
申請(專利權(quán))人:中國農(nóng)業(yè)銀行股份有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。