TW201935332A - 分布式事務處理方法及裝置 - Google Patents
分布式事務處理方法及裝置 Download PDFInfo
- Publication number
- TW201935332A TW201935332A TW107145886A TW107145886A TW201935332A TW 201935332 A TW201935332 A TW 201935332A TW 107145886 A TW107145886 A TW 107145886A TW 107145886 A TW107145886 A TW 107145886A TW 201935332 A TW201935332 A TW 201935332A
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- transaction
- processing
- transactions
- dependency relationship
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/405—Establishing or using transaction specific rules
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本說明書實施例提供一種分布式事務處理方法及裝置,在分布式事務處理方法中,事務管理器獲取分布式事務的多個分支事務。對多個分支事務進行分析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。根據處理對象和處理方式,確定多個分支事務之間的依賴關係。根據該依賴關係,並行及/或串行處理多個分支事務。
Description
本發明係有關電腦技術領域,尤其是一種用分布式事務處理方法及裝置。
傳統技術中,在處理分布式事務的過程中,為了保證各個參與者的一致性,事務處理器(Transaction Manager,TM)通常通過串行的方式來調用各個參與者處理相應的分支事務。如圖1所示,TM在處理分布式事務的過程中,會經過兩個階段:預處理階段和提交(commit)或者轉返(rollback)階段。在預處理階段,TM會嘗試鎖定資源管理器(Resource Manager,RM)1(分布式環境下的一個獨立參與者)中的資源,若能夠成功則嘗試去諮詢和鎖定RM2(分布式環境下的另一個獨立參與者)中的資源,若也能夠成功,則進入提交階段。在提交階段,TM會發起事務提交操作,在RM1中解除在預處理階段鎖定的資源並進行資源的消耗處理,成功後繼續進行RM2的資源釋放及實際消耗。在上述提交的過程中,若有任何異常,則TM會不斷進行重試提交,直到成功為止。可以理解的是,如果在預處理階段有失敗,則發起轉返,TM只有在得到RM1及RM2的轉返成功應答後才會最終進行事務完結處理,否則會不斷重試轉返,直到成功。
因此,需要提供一種更高效地處理分布式事務的方案。
因此,需要提供一種更高效地處理分布式事務的方案。
本說明書一個或多個實施例描述了一種分布式事務處理方法及裝置,可以提高分布式事務的處理效率。
第一方面,提供了一種分布式事務處理方法,包括:
事務管理器獲取分布式事務對應的多個分支事務;
對所述多個分支事務進行解析,以確定所述多個分支事務各自的處理對象以及對所述處理對象對應的資源的處理方式;
根據所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係;
根據所述依賴關係,並行及/或串行處理所述多個分支事務。
第二方面,提供了一種分布式事務處理裝置,包括:
獲取單元,用於獲取分布式事務對應的多個分支事務;
解析單元,用於對所述獲取單元獲取的所述多個分支事務進行解析,以確定所述多個分支事務各自的處理對象以及對所述處理對象對應的資源的處理方式;
確定單元,用於根據所述解析單元解析得到的所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係;
處理單元,用於根據所述確定單元確定的所述依賴關係,並行及/或串行處理所述多個分支事務。
本說明書一個或多個實施例提供的分布式事務處理方法及裝置,事務管理器獲取分布式事務的多個分支事務。對多個分支事務進行分析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。根據處理對象和處理方式,確定多個分支事務之間的依賴關係。根據該依賴關係,並行及/或串行處理多個分支事務。由此,可以提高分布式事務的處理效率。
第一方面,提供了一種分布式事務處理方法,包括:
事務管理器獲取分布式事務對應的多個分支事務;
對所述多個分支事務進行解析,以確定所述多個分支事務各自的處理對象以及對所述處理對象對應的資源的處理方式;
根據所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係;
根據所述依賴關係,並行及/或串行處理所述多個分支事務。
第二方面,提供了一種分布式事務處理裝置,包括:
獲取單元,用於獲取分布式事務對應的多個分支事務;
解析單元,用於對所述獲取單元獲取的所述多個分支事務進行解析,以確定所述多個分支事務各自的處理對象以及對所述處理對象對應的資源的處理方式;
確定單元,用於根據所述解析單元解析得到的所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係;
處理單元,用於根據所述確定單元確定的所述依賴關係,並行及/或串行處理所述多個分支事務。
本說明書一個或多個實施例提供的分布式事務處理方法及裝置,事務管理器獲取分布式事務的多個分支事務。對多個分支事務進行分析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。根據處理對象和處理方式,確定多個分支事務之間的依賴關係。根據該依賴關係,並行及/或串行處理多個分支事務。由此,可以提高分布式事務的處理效率。
在詳細介紹本說明書提供的方案之前,先結合傳統技術給出如下優化思路:
圖1所示的分布式事務處理方法的資訊交互圖可以如圖2所示。從圖2可以看出,在預處理階段,事務管理器對各個參與者的調用本質上沒有必然的依賴關係。此外,無論是在提交階段還是在轉返階段,上述調用過程也沒有必然的依賴關係。因此,在分布式環境中,事務管理器對各個參與者之間的調用是可以採用併發的方式進行的。也即各個分支事務是可以並行處理的。通過上述並行的方式,在參與者越多的情況下,分布式事務處理的時間並不會線性增加。舉例來說,若一次服務交互時間是T,則有N個參與者的情況下,若採用傳統的分布式事務處理的方式,兩個階段的處理開銷都是NT。而採用並行的方式,能夠基本保證處理時間為T。
下面結合上述優化思路,對本說明書提供的方案進行詳細描述。
本說明書一個實施例提供的分布式事務處理方法可以應用於如圖3所示的場景中,圖3中,業務系統用於根據業務請求,將分布式事務劃分為多個分支事務。此處的分支事務可以是指分布式事務的一次行為。以業務需求為:“從帳戶A轉帳100元給帳戶B”為例來說,則可以將分布式事務劃分為兩個分支事務,該兩個分支事務分別用於作如下處理:“A-100”和“B+100”。之後,業務系統可以將劃分的多個分支事務發送給事務管理器。事務管理器在接收到上述多個分支事務之後,可以對該多個分支事務進行解析,以確定各自的處理對象(如,帳戶等)以及對處理對象對應的資源(如,帳戶餘額、黃金等)的處理方式。之後,可以根據處理對象和處理方式,確定多個分支事務之間的依賴關係。並根據該依賴關係,並行及/或串行處理多個分支事務。最後,事務管理器將多個分支事務的處理結果資訊返回給業務系統。
需要說明的是,圖3中,事務管理器具體是通過調用參與者來處理分支事務的,其中,參與者可以是指事務管理器在處理分支事務時所調用的服務。如前述例子,一個參與者可以認為是財務庫A,而另一個參與者可以認為是財務庫B。具體地,在上述兩個分支事務的處理過程中,事務管理器可以調用財務庫A從帳戶A中轉出100元,可以調用財務庫B給帳戶B轉入100元。由此,就保了帳戶A扣款和帳戶B加款的一致性。在上述分支事務的處理過程中,若有任何異常,則失敗轉返,並反饋轉帳失敗。
圖4為本說明書一個實施例提供的分布式事務處理方法流程圖。所述方法的執行主體可以為圖3中的事務管理器。如圖4所示,所述方法具體可以包括:
步驟410,事務管理器獲取分布式事務對應的多個分支事務。
在一種實現方式中,業務系統可以根據業務需求,將分布式事務劃分為多個分支事務。以業務需求為:“從帳戶A轉帳100元給帳戶B,從帳戶B分潤5元給帳戶C”為例來說,則可以將分布式事務劃分為四個分支事務,該四個分支事務分別用於作如下處理:“A-100”、“B+100”、“B-5”和“C+5”。之後,業務系統可以將劃分的多個分支事務發送給事務管理器。
步驟420,對多個分支事務進行解析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。
此處的處理對象可以包括使用者的帳戶等。處理對象對應的資源可以包括但不限於帳戶餘額(也稱資金)以及黃金等。而對處理對象對應的資源的處理方式可以包括資源增加和資源消耗等。以處理對象為帳戶,處理對象對應的資源為帳戶餘額為例來說,可以根據對帳戶的帳戶餘額的增減情況,確定對資源的處理方式。具體地,當增加帳戶中的帳戶餘額時,對資源的處理方式可以為資源增加;而當減少帳戶中的帳戶餘額時,對資源的處理方式可以為資源消耗。
如前述例子,四個分支事務各自的處理對象分別為:“帳戶A”、“帳戶B”、“帳戶B”和“帳戶C”。此外,由於第一個分支事務用於從帳戶A的帳戶餘額中扣除100元,也即第一個分支事務用於減少帳戶A中的帳戶餘額,所以其對資源的處理方式為:“資源消耗”。同理可以確定出其它三個分支事務對資源的處理方式分別為:“資源增加”、“資源消耗”和“資源增加”。
步驟430,根據處理對象和處理方式,確定多個分支事務之間的依賴關係。
在一種實現方式中,可以根據處理方式,對多個分支事務進行分類。在對分支事務進行分類後,根據處理對象,確定不同類別的分支事務之間的依賴關係。具體地,對多個分支事務中的每個分支事務,判斷該分支事務對處理對象對應的資源的處理方式是否為資源增加。若是,則確定該分支事務的類別為資源增加類。若否,則確定該分支事務的類別為資源消耗類。對資源增加類的分支事務,可以直接將該類別的分支事務確定為不存在依賴關係的分支事務。對資源消耗類的分支事務,判斷該資源消耗類的分支事務的處理對象是否與資源增加類的分支事務的處理對象相同。若是,則確定該資源消耗類的分支事務為存在依賴關係的分支事務。若否,則確定該資源消耗類的分支事務為不存在依賴關係的分支事務。
如前述例子,由於第二個分支事務(對應於“B+100”的分支事務)和第四個分支事務(對應於“C+5”的分支事務)對處理對象對應的資源的處理方式均為“資源增加”,所以可以確定該兩個分支事務的類別為資源增加類。由於第一個分支事務(對應於“A-100”的分支事務)和第三個分支事務(對應於“B-5”的分支事務)對處理對象對應的資源的處理方式均為“資源消耗”,所以可以確定該兩個分支事務的類別為資源消耗類。
對於資源增加類的兩個分支事務,可以確定該兩個分支事務為不存在依賴關係的分支事務。對資源消耗類的兩個分支事務,由於第三個分支事務與第二個分支事務的處理對象(帳戶B)相同,所以可以確定第三個分支事務為存在依賴關係的分支事務。而第一個分支事務與資源增加類的兩個分支事務的處理對象均不同,所以確定第一個分支事務為不存在依賴關係的分支事務。
步驟440,根據依賴關係,並行及/或串行處理多個分支事務。
在一種實現方式中,可以將不存在依賴關係的分支事務劃分到第一分組,將存在依賴關係的分支事務劃分到第二組。並行處理第一分組中的分支事務。在第一分組中的分支事務處理結束後,並行處理第二分組中的分支事務。
如前述例子,可以將第二個分支事務、第四個分支事務以及第一個分支事務劃分到第一分組。將第三個分支事務劃分到第二分組。之後,並行處理第二個分支事務、第四個分支事務以及第一個分支事務。在該三個分支事務處理結束後,處理第三個分支事務。此處,也可以理解為,第三個分支事務是串行處理的。
通過本說明書上述實施例提供的分布式事務處理方法,可以既提高分布式事務的處理效率,又能保證其處理的正確性。如前述例子,在對應於“A-100”、“B+100”和“C+5”的分支事務先並行處理,之後在串行處理對應於“B-5”分支事務的情況下,可以避免當對應於“B-5”分支事務先處理時,如果帳戶B的帳戶餘額為0,則會處理失敗的問題。也即,本說明書實施例中,當分支事務的處理對象相同時,可以通過設定處理順序的方式,來保證其處理的正確性。
可以理解的是,在本說明書上述實施例提供的事務處理方法中,假設事務管理器調用一次服務(或者參與者)的時間為T,且假設分布式事務被劃分為N個分支事務。那麼在N個分支事務之間不存在依賴關係的情況下,分布式事務的處理時間開銷為T。而在N個分支事務之間存在依賴關係的情況下,分布式事務的處理時間開銷為2T。由此,可以看出,在分布式事務不存在依賴關係的情況下,本說明書提供的方案可以將分布式事務處理時間控制在單分支事務處理時間範圍內,不會因為參與者增加而使得整個分布式事務處理時間增加。即便自分支事務之間存在依賴的情況下,處理時長依然可控,且不隨著參與者規模擴大而導致處理時間增長。
與上述分布式事務處理方法對應地,本說明書一個實施例還提供的一種分布式事務處理裝置,如圖5所示,該裝置包括:
獲取單元501,用於獲取分布式事務對應的多個分支事務。
解析單元502,用於對獲取單元501獲取的多個分支事務進行解析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。
此處,處理對象可以為使用者的帳戶等。處理對象對應的資源可以為帳戶餘額等。
確定單元503,用於根據解析單元502解析得到的處理對象和處理方式,確定多個分支事務之間的依賴關係。
可選地,確定單元503具體可以用於:
根據處理方式,對多個分支事務進行分類;
根據處理對象,確定不同類別的分支事務之間的依賴關係。
可選地,確定單元503還具體可以用於:
對多個分支事務中的每個分支事務,判斷分支事務對處理對象對應的資源的處理方式是否為資源增加。
若是,則確定分支事務的類別為資源增加類。
若否,則確定分支事務的類別為資源消耗類。
將資源增加類的分支事務確定為不存在依賴關係的分支事務。
對資源消耗類的分支事務,判斷資源消耗類的分支事務的處理對象是否與資源增加類的分支事務的處理對象相同。
若是,則確定資源消耗類的分支事務為存在依賴關係的分支事務。
若否,則確定資源消耗類的分支事務為不存在依賴關係的分支事務。
處理單元504,用於根據確定單元503確定的依賴關係,並行及/或串行處理多個分支事務。
可選地,處理單元504具體可以用於:
將不存在依賴關係的分支事務劃分到第一分組,將存在依賴關係的分支事務劃分到第二組。
並行處理第一分組中的分支事務。
在第一分組中的分支事務處理結束後,並行處理第二分組中的分支事務。
本說明書上述實施例裝置的各功能模組的功能,可以通過上述方法實施例的各步驟來實現,因此,本說明書一個實施例提供的裝置的具體工作過程,在此不復贅述。
本說明書一個實施例提供的分布式事務處理裝置,獲取單元501獲取分布式事務對應的多個分支事務。解析單元502對多個分支事務進行解析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。確定單元503根據處理對象和處理方式,確定多個分支事務之間的依賴關係。處理單元504根據依賴關係,並行及/或串行處理多個分支事務。由此,可以提高分布式事務的處理效率。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本說明書所描述的功能可以用硬體、軟體、韌體或它們的任意組合來實現。當使用軟體實現時,可以將這些功能儲存在電腦可讀媒介中或者作為電腦可讀媒介上的一個或多個指令或代碼進行傳輸。
以上所述的具體實施方式,對本說明書的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本說明書的具體實施方式而已,並不用於限定本說明書的保護範圍,凡在本說明書的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本說明書的保護範圍之內。
圖1所示的分布式事務處理方法的資訊交互圖可以如圖2所示。從圖2可以看出,在預處理階段,事務管理器對各個參與者的調用本質上沒有必然的依賴關係。此外,無論是在提交階段還是在轉返階段,上述調用過程也沒有必然的依賴關係。因此,在分布式環境中,事務管理器對各個參與者之間的調用是可以採用併發的方式進行的。也即各個分支事務是可以並行處理的。通過上述並行的方式,在參與者越多的情況下,分布式事務處理的時間並不會線性增加。舉例來說,若一次服務交互時間是T,則有N個參與者的情況下,若採用傳統的分布式事務處理的方式,兩個階段的處理開銷都是NT。而採用並行的方式,能夠基本保證處理時間為T。
下面結合上述優化思路,對本說明書提供的方案進行詳細描述。
本說明書一個實施例提供的分布式事務處理方法可以應用於如圖3所示的場景中,圖3中,業務系統用於根據業務請求,將分布式事務劃分為多個分支事務。此處的分支事務可以是指分布式事務的一次行為。以業務需求為:“從帳戶A轉帳100元給帳戶B”為例來說,則可以將分布式事務劃分為兩個分支事務,該兩個分支事務分別用於作如下處理:“A-100”和“B+100”。之後,業務系統可以將劃分的多個分支事務發送給事務管理器。事務管理器在接收到上述多個分支事務之後,可以對該多個分支事務進行解析,以確定各自的處理對象(如,帳戶等)以及對處理對象對應的資源(如,帳戶餘額、黃金等)的處理方式。之後,可以根據處理對象和處理方式,確定多個分支事務之間的依賴關係。並根據該依賴關係,並行及/或串行處理多個分支事務。最後,事務管理器將多個分支事務的處理結果資訊返回給業務系統。
需要說明的是,圖3中,事務管理器具體是通過調用參與者來處理分支事務的,其中,參與者可以是指事務管理器在處理分支事務時所調用的服務。如前述例子,一個參與者可以認為是財務庫A,而另一個參與者可以認為是財務庫B。具體地,在上述兩個分支事務的處理過程中,事務管理器可以調用財務庫A從帳戶A中轉出100元,可以調用財務庫B給帳戶B轉入100元。由此,就保了帳戶A扣款和帳戶B加款的一致性。在上述分支事務的處理過程中,若有任何異常,則失敗轉返,並反饋轉帳失敗。
圖4為本說明書一個實施例提供的分布式事務處理方法流程圖。所述方法的執行主體可以為圖3中的事務管理器。如圖4所示,所述方法具體可以包括:
步驟410,事務管理器獲取分布式事務對應的多個分支事務。
在一種實現方式中,業務系統可以根據業務需求,將分布式事務劃分為多個分支事務。以業務需求為:“從帳戶A轉帳100元給帳戶B,從帳戶B分潤5元給帳戶C”為例來說,則可以將分布式事務劃分為四個分支事務,該四個分支事務分別用於作如下處理:“A-100”、“B+100”、“B-5”和“C+5”。之後,業務系統可以將劃分的多個分支事務發送給事務管理器。
步驟420,對多個分支事務進行解析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。
此處的處理對象可以包括使用者的帳戶等。處理對象對應的資源可以包括但不限於帳戶餘額(也稱資金)以及黃金等。而對處理對象對應的資源的處理方式可以包括資源增加和資源消耗等。以處理對象為帳戶,處理對象對應的資源為帳戶餘額為例來說,可以根據對帳戶的帳戶餘額的增減情況,確定對資源的處理方式。具體地,當增加帳戶中的帳戶餘額時,對資源的處理方式可以為資源增加;而當減少帳戶中的帳戶餘額時,對資源的處理方式可以為資源消耗。
如前述例子,四個分支事務各自的處理對象分別為:“帳戶A”、“帳戶B”、“帳戶B”和“帳戶C”。此外,由於第一個分支事務用於從帳戶A的帳戶餘額中扣除100元,也即第一個分支事務用於減少帳戶A中的帳戶餘額,所以其對資源的處理方式為:“資源消耗”。同理可以確定出其它三個分支事務對資源的處理方式分別為:“資源增加”、“資源消耗”和“資源增加”。
步驟430,根據處理對象和處理方式,確定多個分支事務之間的依賴關係。
在一種實現方式中,可以根據處理方式,對多個分支事務進行分類。在對分支事務進行分類後,根據處理對象,確定不同類別的分支事務之間的依賴關係。具體地,對多個分支事務中的每個分支事務,判斷該分支事務對處理對象對應的資源的處理方式是否為資源增加。若是,則確定該分支事務的類別為資源增加類。若否,則確定該分支事務的類別為資源消耗類。對資源增加類的分支事務,可以直接將該類別的分支事務確定為不存在依賴關係的分支事務。對資源消耗類的分支事務,判斷該資源消耗類的分支事務的處理對象是否與資源增加類的分支事務的處理對象相同。若是,則確定該資源消耗類的分支事務為存在依賴關係的分支事務。若否,則確定該資源消耗類的分支事務為不存在依賴關係的分支事務。
如前述例子,由於第二個分支事務(對應於“B+100”的分支事務)和第四個分支事務(對應於“C+5”的分支事務)對處理對象對應的資源的處理方式均為“資源增加”,所以可以確定該兩個分支事務的類別為資源增加類。由於第一個分支事務(對應於“A-100”的分支事務)和第三個分支事務(對應於“B-5”的分支事務)對處理對象對應的資源的處理方式均為“資源消耗”,所以可以確定該兩個分支事務的類別為資源消耗類。
對於資源增加類的兩個分支事務,可以確定該兩個分支事務為不存在依賴關係的分支事務。對資源消耗類的兩個分支事務,由於第三個分支事務與第二個分支事務的處理對象(帳戶B)相同,所以可以確定第三個分支事務為存在依賴關係的分支事務。而第一個分支事務與資源增加類的兩個分支事務的處理對象均不同,所以確定第一個分支事務為不存在依賴關係的分支事務。
步驟440,根據依賴關係,並行及/或串行處理多個分支事務。
在一種實現方式中,可以將不存在依賴關係的分支事務劃分到第一分組,將存在依賴關係的分支事務劃分到第二組。並行處理第一分組中的分支事務。在第一分組中的分支事務處理結束後,並行處理第二分組中的分支事務。
如前述例子,可以將第二個分支事務、第四個分支事務以及第一個分支事務劃分到第一分組。將第三個分支事務劃分到第二分組。之後,並行處理第二個分支事務、第四個分支事務以及第一個分支事務。在該三個分支事務處理結束後,處理第三個分支事務。此處,也可以理解為,第三個分支事務是串行處理的。
通過本說明書上述實施例提供的分布式事務處理方法,可以既提高分布式事務的處理效率,又能保證其處理的正確性。如前述例子,在對應於“A-100”、“B+100”和“C+5”的分支事務先並行處理,之後在串行處理對應於“B-5”分支事務的情況下,可以避免當對應於“B-5”分支事務先處理時,如果帳戶B的帳戶餘額為0,則會處理失敗的問題。也即,本說明書實施例中,當分支事務的處理對象相同時,可以通過設定處理順序的方式,來保證其處理的正確性。
可以理解的是,在本說明書上述實施例提供的事務處理方法中,假設事務管理器調用一次服務(或者參與者)的時間為T,且假設分布式事務被劃分為N個分支事務。那麼在N個分支事務之間不存在依賴關係的情況下,分布式事務的處理時間開銷為T。而在N個分支事務之間存在依賴關係的情況下,分布式事務的處理時間開銷為2T。由此,可以看出,在分布式事務不存在依賴關係的情況下,本說明書提供的方案可以將分布式事務處理時間控制在單分支事務處理時間範圍內,不會因為參與者增加而使得整個分布式事務處理時間增加。即便自分支事務之間存在依賴的情況下,處理時長依然可控,且不隨著參與者規模擴大而導致處理時間增長。
與上述分布式事務處理方法對應地,本說明書一個實施例還提供的一種分布式事務處理裝置,如圖5所示,該裝置包括:
獲取單元501,用於獲取分布式事務對應的多個分支事務。
解析單元502,用於對獲取單元501獲取的多個分支事務進行解析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。
此處,處理對象可以為使用者的帳戶等。處理對象對應的資源可以為帳戶餘額等。
確定單元503,用於根據解析單元502解析得到的處理對象和處理方式,確定多個分支事務之間的依賴關係。
可選地,確定單元503具體可以用於:
根據處理方式,對多個分支事務進行分類;
根據處理對象,確定不同類別的分支事務之間的依賴關係。
可選地,確定單元503還具體可以用於:
對多個分支事務中的每個分支事務,判斷分支事務對處理對象對應的資源的處理方式是否為資源增加。
若是,則確定分支事務的類別為資源增加類。
若否,則確定分支事務的類別為資源消耗類。
將資源增加類的分支事務確定為不存在依賴關係的分支事務。
對資源消耗類的分支事務,判斷資源消耗類的分支事務的處理對象是否與資源增加類的分支事務的處理對象相同。
若是,則確定資源消耗類的分支事務為存在依賴關係的分支事務。
若否,則確定資源消耗類的分支事務為不存在依賴關係的分支事務。
處理單元504,用於根據確定單元503確定的依賴關係,並行及/或串行處理多個分支事務。
可選地,處理單元504具體可以用於:
將不存在依賴關係的分支事務劃分到第一分組,將存在依賴關係的分支事務劃分到第二組。
並行處理第一分組中的分支事務。
在第一分組中的分支事務處理結束後,並行處理第二分組中的分支事務。
本說明書上述實施例裝置的各功能模組的功能,可以通過上述方法實施例的各步驟來實現,因此,本說明書一個實施例提供的裝置的具體工作過程,在此不復贅述。
本說明書一個實施例提供的分布式事務處理裝置,獲取單元501獲取分布式事務對應的多個分支事務。解析單元502對多個分支事務進行解析,以確定多個分支事務各自的處理對象以及對處理對象對應的資源的處理方式。確定單元503根據處理對象和處理方式,確定多個分支事務之間的依賴關係。處理單元504根據依賴關係,並行及/或串行處理多個分支事務。由此,可以提高分布式事務的處理效率。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本說明書所描述的功能可以用硬體、軟體、韌體或它們的任意組合來實現。當使用軟體實現時,可以將這些功能儲存在電腦可讀媒介中或者作為電腦可讀媒介上的一個或多個指令或代碼進行傳輸。
以上所述的具體實施方式,對本說明書的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本說明書的具體實施方式而已,並不用於限定本說明書的保護範圍,凡在本說明書的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本說明書的保護範圍之內。
TM‧‧‧事務管理器
RM1‧‧‧資源管理器
RM2‧‧‧資源管理器
RMN‧‧‧資源管理器
410‧‧‧步驟
420‧‧‧步驟
430‧‧‧步驟
440‧‧‧步驟
501‧‧‧獲取單元
502‧‧‧解析單元
503‧‧‧確定單元
504‧‧‧處理單元
為了更清楚地說明本說明書實施例的技術方案,下面將對實施例描述中所需要使用的圖式作簡單地介紹,顯而易見地,下面描述中的圖式僅僅是本說明書的一些實施例,對於本領域普通技術人員來講,在不付出進步性勞動的前提下,還可以根據這些圖式獲得其它的圖式。
圖1為傳統的分布式事務處理方法示意圖;
圖2為分布式事務處理方法的資訊交互圖;
圖3為本說明書一個實施例提供的分布式事務處理方法的應用場景示意圖;
圖4為本說明書一個實施例提供的分布式事務處理方法流程圖;
圖5為本說明書一個實施例提供的分布式事務處理裝置示意圖。
Claims (10)
- 一種分布式事務處理方法,其特徵在於,包括: 事務管理器獲取分布式事務對應的多個分支事務; 對所述多個分支事務進行解析,以確定所述多個分支事務各自的處理對象以及對所述處理對象對應的資源的處理方式; 根據所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係; 根據所述依賴關係,並行及/或串行處理所述多個分支事務。
- 根據請求項1所述的方法,其中,所述根據所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係,包括: 根據所述處理方式,對所述多個分支事務進行分類; 根據所述處理對象,確定不同類別的分支事務之間的依賴關係。
- 根據請求項2所述的方法,其中, 所述根據所述處理方式,對所述多個分支事務進行分類,包括: 對所述多個分支事務中的每個分支事務,判斷所述分支事務對處理對象對應的資源的處理方式是否為資源增加; 若是,則確定所述分支事務的類別為資源增加類; 若否,則確定所述分支事務的類別為資源消耗類; 所述根據所述處理對象,確定不同類別的分支事務之間的依賴關係,包括: 將資源增加類的分支事務確定為不存在依賴關係的分支事務; 對資源消耗類的分支事務,判斷所述資源消耗類的分支事務的處理對象是否與資源增加類的分支事務的處理對象相同; 若是,則確定所述資源消耗類的分支事務為存在依賴關係的分支事務; 若否,則確定所述資源消耗類的分支事務為不存在依賴關係的分支事務。
- 根據請求項3所述的方法,其中,所述根據所述依賴關係,並行及/或串行處理所述多個分支事務,包括: 將所述不存在依賴關係的分支事務劃分到第一分組,將所述存在依賴關係的分支事務劃分到第二組; 並行處理第一分組中的分支事務; 在所述第一分組中的分支事務處理結束後,並行處理所述第二分組中的分支事務。
- 根據請求項1至4中任一項所述的方法,其中,所述處理對象為使用者的帳戶,所述處理對象對應的資源為帳戶餘額。
- 一種分布式事務處理裝置,其特徵在於,包括: 獲取單元,用於獲取分布式事務對應的多個分支事務; 解析單元,用於對所述獲取單元獲取的所述多個分支事務進行解析,以確定所述多個分支事務各自的處理對象以及對所述處理對象對應的資源的處理方式; 確定單元,用於根據所述解析單元解析得到的所述處理對象和所述處理方式,確定所述多個分支事務之間的依賴關係; 處理單元,用於根據所述確定單元確定的所述依賴關係,並行及/或串行處理所述多個分支事務。
- 根據請求項6所述的裝置,其中,所述確定單元具體用於: 根據所述處理方式,對所述多個分支事務進行分類; 根據所述處理對象,確定不同類別的分支事務之間的依賴關係。
- 根據請求項7所述的裝置,其中,所述確定單元還具體用於: 對所述多個分支事務中的每個分支事務,判斷所述分支事務對處理對象對應的資源的處理方式是否為資源增加; 若是,則確定所述分支事務的類別為資源增加類; 若否,則確定所述分支事務的類別為資源消耗類; 將資源增加類的分支事務確定為不存在依賴關係的分支事務; 對資源消耗類的分支事務,判斷所述資源消耗類的分支事務的處理對象是否與資源增加類的分支事務的處理對象相同; 若是,則確定所述資源消耗類的分支事務為存在依賴關係的分支事務; 若否,則確定所述資源消耗類的分支事務為不存在依賴關係的分支事務。
- 根據請求項8所述的裝置,其中,所述處理單元具體用於: 將所述不存在依賴關係的分支事務劃分到第一分組,將所述存在依賴關係的分支事務劃分到第二組; 並行處理第一分組中的分支事務; 在所述第一分組中的分支事務處理結束後,並行處理所述第二分組中的分支事務。
- 根據請求項6至9中任一項所述的裝置,其中,所述處理對象為使用者的帳戶,所述處理對象對應的資源為帳戶餘額。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810106140.5 | 2018-02-02 | ||
CN201810106140.5A CN108415757B (zh) | 2018-02-02 | 2018-02-02 | 分布式事务处理方法及装置 |
??201810106140.5 | 2018-02-02 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201935332A true TW201935332A (zh) | 2019-09-01 |
TWI687875B TWI687875B (zh) | 2020-03-11 |
Family
ID=63127505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107145886A TWI687875B (zh) | 2018-02-02 | 2018-12-19 | 分布式事務處理方法及裝置 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN108415757B (zh) |
TW (1) | TWI687875B (zh) |
WO (1) | WO2019149032A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108415757B (zh) * | 2018-02-02 | 2020-10-30 | 创新先进技术有限公司 | 分布式事务处理方法及装置 |
CN109491768A (zh) * | 2018-11-21 | 2019-03-19 | 四川长虹电器股份有限公司 | 一种基于子事务流的分布式事务动态处理方法和*** |
CN110990182B (zh) * | 2019-12-03 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、设备及存储介质 |
US11544245B2 (en) | 2019-12-03 | 2023-01-03 | Tencent Technology (Shenzhen) Company Limited | Transaction processing method, apparatus, and device and computer storage medium |
CN113205407A (zh) * | 2021-05-28 | 2021-08-03 | 中国工商银行股份有限公司 | 分布式子事务处理方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6438582B1 (en) * | 1998-07-21 | 2002-08-20 | International Business Machines Corporation | Method and system for efficiently coordinating commit processing in a parallel or distributed database system |
CN102346460B (zh) * | 2011-05-27 | 2013-11-13 | 运软网络科技(上海)有限公司 | 一种基于事务的服务控制***及其控制方法 |
CN102207883A (zh) * | 2011-06-01 | 2011-10-05 | 华中科技大学 | 异构分布式实时***的事务调度方法 |
CN103856548B (zh) * | 2012-12-07 | 2017-11-03 | 华为技术有限公司 | 动态资源调度方法和动态资源调度器 |
US10191932B2 (en) * | 2014-03-21 | 2019-01-29 | Oracle International Corporation | Dependency-aware transaction batching for data replication |
CN105335143A (zh) * | 2014-07-30 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种业务处理方法及装置 |
CN105589748A (zh) * | 2014-10-22 | 2016-05-18 | 阿里巴巴集团控股有限公司 | 一种业务请求处理方法及装置 |
CN106033439B (zh) * | 2015-03-13 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及*** |
CN106557514A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
CN107291548B (zh) * | 2016-03-31 | 2021-04-13 | 阿里巴巴集团控股有限公司 | 任务的资源调度方法及装置 |
CN107621973B (zh) * | 2016-07-13 | 2021-10-26 | 阿里巴巴集团控股有限公司 | 一种跨集群的任务调度方法及装置 |
CN108415757B (zh) * | 2018-02-02 | 2020-10-30 | 创新先进技术有限公司 | 分布式事务处理方法及装置 |
-
2018
- 2018-02-02 CN CN201810106140.5A patent/CN108415757B/zh active Active
- 2018-12-19 TW TW107145886A patent/TWI687875B/zh active
-
2019
- 2019-01-07 WO PCT/CN2019/070574 patent/WO2019149032A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
CN108415757A (zh) | 2018-08-17 |
TWI687875B (zh) | 2020-03-11 |
CN108415757B (zh) | 2020-10-30 |
WO2019149032A1 (zh) | 2019-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201935332A (zh) | 分布式事務處理方法及裝置 | |
US9247022B2 (en) | Method and apparatus for optimizing performance and network traffic in distributed workflow processing | |
US7953716B2 (en) | Method for determining participation in a distributed transaction | |
CN111045794B (zh) | 分布式事务处理方法、装置、***、计算机设备及存储介质 | |
WO2017193715A1 (zh) | 一种流程调度方法及装置、设备 | |
WO2020000720A1 (zh) | 服务器、报文处理方法、程序和计算机可读存储介质 | |
CN106503974B (zh) | 交易数据处理方法及装置 | |
CN113157710B (zh) | 区块链数据并行写入方法、装置、计算机设备及存储介质 | |
CN109325744B (zh) | 支付处理方法、装置、介质及电子设备 | |
CN112907344A (zh) | 账务数据的处理方法、装置、电子设备和存储介质 | |
CN104391686A (zh) | 流程控制方法及装置 | |
CN107038025B (zh) | 基于soa架构的***调用方法及装置 | |
CN107635012B (zh) | 一种消息匹配方法、服务器和计算机可读存储介质 | |
CN106127568A (zh) | 跨行支付***的清算业务队列解救方法及装置 | |
WO2020258653A1 (zh) | 一种跨节点的数据处理方法及装置 | |
CN116502283A (zh) | 一种隐私数据处理方法及装置 | |
CN108009916B (zh) | 一种基于事务动态调整的通用支付记账的方法以及*** | |
CN113052687A (zh) | 一种交易路由分发方法和相关装置 | |
US20190384629A1 (en) | Dynamically determine the transaction coordinator in multitier hybrid transaction processing middleware systems | |
CN109491768A (zh) | 一种基于子事务流的分布式事务动态处理方法和*** | |
CN114385320B (zh) | 一种分布式事务处理方法和*** | |
US20040261066A1 (en) | Declarative state space reduction in a transactional messaging language | |
CN112990934A (zh) | ***交易的校验方法及*** | |
CN111754348A (zh) | 场景化组合交易方法及装置 | |
CN112817704B (zh) | 分布式柔性事务处理方法及装置、存储介质及电子设备 |