[發明專利]分布式事務處理方法和系統有效
| 申請號: | 201611110856.X | 申請日: | 2016-12-06 |
| 公開(公告)號: | CN106775959B | 公開(公告)日: | 2017-12-22 |
| 發明(設計)人: | 楊作仲;熊杰 | 申請(專利權)人: | 上海壹賬通金融科技有限公司 |
| 主分類號: | G06F9/46 | 分類號: | G06F9/46;G06F17/30 |
| 代理公司: | 廣州華進聯合專利商標代理有限公司44224 | 代理人: | 謝曲曲 |
| 地址: | 200030 上海市*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 分布式 事務處理 方法 系統 | ||
技術領域
本發明涉及計算機處理領域,特別是涉及一種分布式事務處理方法和系統。
背景技術
事務(Transaction)是由一組操作構成的可靠、獨立的工作單元,在該工作單元中所有的操作要么都成功,要么都失敗。事務具備四個基本的特性:原子性、一致性、隔離性、持久性,也簡稱為事務的ACID特性。在微服務時代,業務進行大量的拆分后,隨之而來的就是分布式事務的數據一致性問題,特別是涉及到交易的不同系統之間的分布式事務。為了保證分布式事務的數據一致性,通過事務表來記錄各個事務或子事務的操作狀態,傳統的事務表的管理是通過單獨的一個服務系統來統一管理各個事務的操作狀態,這樣每個業務系統都需要和該服務系統建立網絡連接,不僅耗費網絡流量,而且由于每個業務系統要和服務系統進行交互,所有的操作記錄都記錄在同一事務表中,不僅加重了事務表的負擔,且導致操作效率較低,并且,若服務系統出現故障,那么將會導致業務系統整個癱瘓,即存在單點故障。
發明內容
基于此,有必要針對上述問題,提出一種能夠減少網絡流量且效率高的分布式事務處理方法和系統。
一種分布式事務處理方法,所述方法包括:主業務系統接收分布式事務的開啟請求,根據所述開啟請求為所述分布式事務分配一個事務標識,將所述事務標識和對應的開啟狀態記錄到主事務表中,所述主事務表存儲在主業務數據庫中;所述主業務系統將所述分布式事務分為多個子事務,并分別向對應的各個從業務系統發送執行所述子事務的指令,所述指令中包括事務標識;所述從業務系統根據所述執行子事務的指令在從業務前置表中進行對應的操作,若操作成功,則根據所述事務標識生成一條標識當前子事務操作狀態的記錄插入到子事務表中,若操作失敗,則不記錄,其中,所述從業務前置表為從業務主表的復制表,所述從業務前置表和所述子事務表都存儲在對應的從業務數據庫中;所述主業務系統獲取各個子事務的操作結果,并根據所述操作結果更新主事務表中的操作狀態,若所有子事務全部操作成功,則向消息系統發送確認消息,若至少一個子事務操作失敗,則向消息系統發送取消消息;所述消息系統將所述確認消息或取消消息發送給對應的各個從業務系統;若所述從業務系統接收到的消息為確認消息,則將之前在從業務前置表中的操作同步到從業務主表中以完成對應子事務的提交,若所述從業務系統接收到的消息為取消消息,則直接將之前在從業務前置表中的操作進行回滾。
在其中一個實施例中,所述主業務系統獲取各個子事務的操作結果,并根據所述操作結果更新主事務表中的操作狀態,若所有子事務全部操作成功,則向消息系統發送確認消息,若至少一個子事務操作失敗,則向消息系統發送取消消息的步驟包括:所述主業務系統獲取各個子事務的操作結果,若所有子事務全部操作成功,則將主事務表中的操作狀態由開啟狀態更新為嘗試完成,然后向消息系統發送確認消息,若消息發送成功,則將主事務表中的操作狀態由嘗試完成更新為確認完成;若至少一個子事務操作失敗,則將主事務表中的操作狀態由開啟狀態更新為回滾中,然后向消息系統發送取消消息,若消息發送成功,則將主事務表中的操作狀態由回滾中更新為回滾完成。
在其中一個實施例中,所述若所述從業務系統接收到的消息為確認消息,則將之前在從業務前置表中的操作同步到從業務主表中以完成對應子事務的提交,若所述從業務系統接收到的消息為取消消息,則直接將之前在從業務前置表中的操作進行回滾的步驟包括:若所述從業務系統收到的消息為確認消息,則根據所述確認消息將所述子事務表中的操作狀態由嘗試完成更新為確認中,然后根據所述子事務表中的操作記錄將之前在從業務前置表中的操作同步到從業務主表中,若同步成功,則將所述子事務表中的狀態更新為確認完成;若所述從業務系統收到的消息為取消消息,則根據所述事務標識在子事務表中查找與該事務標識對應的操作狀態,若能夠查找到,則將所述操作狀態更新為回滾中,然后根據所述子事務表中的操作記錄將之前對所述從業務前置表的操作進行回滾,若回滾成功,則將所述子事務表中的操作狀態更新為回滾完成,若查找不到,則結束。
在其中一個實施例中,所述主業務系統將所述分布式事務分為多個子事務,并分別向對應的各個從業務系統發送執行所述子事務的指令,所述指令中包括事務標識的步驟包括:所述主業務系統將所述分布式事務分為多個子事務并設置各個子事務的執行順序,按照所述執行順序向對應的從業務系統發送執行所述子事務的指令,所述指令中包括事務標識,當接收到前一個子事務執行結果為成功時,才將后一個子事務的執行命令發送到對應的從業務系統,若接收到前一個子事務的執行結果為失敗,則不再執行后面的子事務。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海壹賬通金融科技有限公司,未經上海壹賬通金融科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611110856.X/2.html,轉載請聲明來源鉆瓜專利網。





