天天看點

分布式事務的幾種實作方式

作者:閃念基因

一、基礎理論

PART1.1

CAP理論

一緻性(Consistency) :在分布式系統中所有的資料備份,在同一時刻都保持一緻狀态,如無法保證狀态一緻,直接傳回錯誤。

可用性(Availability):在叢集中一部分節點故障,也能保證用戶端通路系統并得到正确響應,允許一定時間内資料狀态不一緻。

分區容錯性(Partition tolerance):分布式系統在遇到任何網絡分區故障時,仍然能保證對外提供滿足一緻性和可用性的服務,除非整個網絡環境都發生故障。

PART1.2

本地事務四大特性(ACID)

事務應該是具備原子性、一緻性、隔離性和持久性,簡稱 ACID。

原子性(Atomicity),可以了解為一個事務内的所有操作要麼都執行,要麼都不執行。

一緻性(Consistency),可以了解為資料是滿足完整性限制的,也就是不會存在中間狀态的資料,事務前後資料的完整性必須保持一緻。

隔離性(Isolation),指的是多個事務并發執行的時候不會互相幹擾,即一個事務内部的資料對于其他事務來說是隔離的。

持久性(Durability),指的是一個事務完成了之後資料就被永遠儲存下來,之後的其他操作或故障都不會對事務的結果産生影響。

PART1.3

BASE理論

基本可用(Basically Available):分布式系統在出現故障時,保證核心可用,允許損失部分可用性。(響應時間上的損失、功能上的損失)。

軟狀态(Soft State):系統中的資料允許存在中間狀态,中間狀态不影響系統的整體可用性。(支付中、進行中等)。

最終一緻性(Eventually Consistent):系統中的資料不可一直處于軟狀态,必須在有時間期限,在期限過後應當保證資料的一緻性。(支付中變為支付成功)。

相比于本地事務的ADIC強一緻性模型,BASE理論提出通過犧牲一定的強一緻性來獲得可用性。

不同業務單元和業務元件對資料一緻性的要求不一樣,是以分布式系統中BASE理論和ACID特性會結合使用。

PART1.4

幂等性設計

幂等(Idempotent)是一個數學與計算機學中的概念。f(n) = 1^n , 無論n等于多少,f(n)永遠值等于1。

在程式中,使用相同參數執行同一個方法,每一次執行結果都是相同的,即具有幂等性。

以訂單狀态處理為例的幂等性設計,不論執行多少次orderProcess()方法,都隻會扣減一次庫存,并且傳回true。

二、分布式事務分類

PART2.1

二段送出2PC|三段送出3PC

Two-Phase-Commit |Three-Phase-Commit

分布式事務的幾種實作方式

三階段送出引入兩個機制

1、 引入逾時機制。同時在協調者和參與者中都引入逾時機制。

2、在第一階段和第二階段中插入一個準備階段。保證了在最後送出階段之前各參與節點的狀态是一緻的。

主要解決的問題:

避免了參與者在長時間無法與協調者節點通訊(協調者挂掉了)的情況下,無法釋放資源的問題,因為參與者自身擁有逾時機制會在逾時後,自動進行本地commit進而進行釋放資源。而這種機制也側面降低了整個事務的阻塞時間和範圍。

缺點:性能較差,會存在長時間的鎖表。

PART2

.2

補償事務-TCC|Saga

分布式事務的幾種實作方式

TCC 與Saga其實就是采用的補償機制,其核心思想是:針對每個操作,都要注冊一個與其對應的确認和補償(撤銷)操作。确認和補償都有采用幂等性設計。

缺點:代碼量大,可維護性差。

PART2.3

消息事務

分布式事務的幾種實作方式

消息一緻性方案是通過消息中間件保證上、下遊應用資料操作的一緻性。基本思路是将本地操作和發送消息放在一個事務中,保證本地操作和消息發送要麼兩者都成功或者都失敗。下遊應用向消息系統訂閱該消息,收到消息後執行相應操作。

消息方案從本質上講是将分布式事務轉換為兩個本地事務,然後依靠下遊業務的重試機制達到最終一緻性。

代表産品:RocketMQ

三、分布式事務産品架構

PART3.1

京東jdts

服務通過lb連到叢集中任何一個節點均能保證業務正确執行,某一個節點異常時叢集可正常提供服務,同時支援叢集橫向、縱向擴充。

PART3.2

Seata

一款開源的分布式事務解決方案,緻力于提供高性能和簡單易用的分布式事務服務。Seata 将為使用者提供了 AT、TCC、SAGA 和 XA 事務模式,為使用者打造一站式的分布式解決方案。

PART3.3

全局事務服務GTS

用于實作分布式環境下,特别是微服務架構下的高性能事務一緻性。可以與RDS、MySQL、PostgreSQL等資料源,Spring Cloud、Dubbo、HSF及其他RPC架構,MQ消息隊列等中間件産品配合使用,輕松實作分布式資料庫事務、多庫事務、消息事務、服務鍊路級事務及各種組合。

分布式事務的幾種實作方式

作者:全管道生态 谷偉

來源:微信公衆号:京東零售技術

出處:https://mp.weixin.qq.com/s/RJL16dJ1DpEM-32NpYxLrg

繼續閱讀