基礎理論
CAP理論
一致性(Consistency) :在分布式系統中所有的資料備份,在同一時刻都保持一致狀態,如無法保證狀態一致,直接回傳錯誤;
可用性(Availability):在集群中一部分節點故障,也能保證客戶端訪問系統并得到正確回應,允許一定時間內資料狀態不一致;
磁區容錯性(Partition tolerance):分布式系統在遇到任何網路磁區故障時,仍然能保證對外提供滿足一致性和可用性的服務,除非整個網路環境都發生故障;
本地事務四大特性(ACID)
事務應該是具備原子性、一致性、隔離性和持久性,簡稱 ACID,
原子性(Atomicity) ,可以理解為一個事務內的所有操作要么都執行,要么都不執行,
一致性(Consistency) ,可以理解為資料是滿足完整性約束的,也就是不會存在中間狀態的資料,事務前后資料的完整性必須保持一致,,
隔離性(Isolation) ,指的是多個事務并發執行的時候不會互相干擾,即一個事務內部的資料對于其他事務來說是隔離的,
持久性(Durability) ,指的是一個事務完成了之后資料就被永遠保存下來,之后的其他操作或故障都不會對事務的結果產生影響,
BASE理論
基本可用(Basically Available):分布式系統在出現故障時,保證核心可用,允許損失部分可用性,(回應時間上的損失、功能上的損失)
軟狀態(Soft State):系統中的資料允許存在中間狀態,中間狀態不影響系統的整體可用性,(支付中、處理中等)
最終一致性(Eventually Consistent):系統中的資料不可一直處于軟狀態,必須在有時間期限,在期限過后應當保證資料的一致性,(支付中變為支付成功)
相比于本地事務的ADIC強一致性模型,BASE理論提出通過犧牲一定的強一致性來獲得可用性;
不同業務單元和業務組件對資料一致性的要求不一樣,因此分布式系統中BASE理論和ACID特性會結合使用,
冪等性設計
冪等(Idempotent)是一個數學與計算機學中的概念,f(n) = 1^n , 無論n等于多少,f(n)永遠值等于1;
在程式中,使用相同引數執行同一個方法,每一次執行結果都是相同的,即具有冪等性;
以訂單狀態處理為例的冪等性設計,不論執行多少次orderProcess()方法,都只會扣減一次庫存,并且回傳true,
分布式事務分類
二段提交2PC(Two-Phase-Commit)|三段提交3PC (Three-Phase-Commit)
三階段提交引入兩個機制
1、 引入超時機制,同時在協調者和參與者中都引入超時機制,
2、在第一階段和第二階段中插入一個準備階段,保證了在最后提交階段之前各參與節點的狀態是一致的,
主要解決的問題:
避免了參與者在長時間無法與協調者節點通訊(協調者掛掉了)的情況下,無法釋放資源的問題,因為參與者自身擁有超時機制會在超時后,自動進行本地commit從而進行釋放資源,而這種機制也側面降低了整個事務的阻塞時間和范圍,
缺點:
性能較差,會存在長時間的鎖表,
補償事務-TCC(Try-Confirm-Cancel)|Saga
TCC 與Saga其實就是采用的補償機制,其核心思想是:針對每個操作,都要注冊一個與其對應的確認和補償(撤銷)操作,確認和補償都有采用冪等性設計,
缺點:代碼量大,可維護性差,
訊息事務
訊息一致性方案是通過訊息中間件保證上、下游應用資料操作的一致性,基本思路是將本地操作和發送訊息放在一個事務中,保證本地操作和訊息發送要么兩者都成功或者都失敗,下游應用向訊息系統訂閱該訊息,收到訊息后執行相應操作,
訊息方案從本質上講是將分布式事務轉換為兩個本地事務,然后依靠下游業務的重試機制達到最終一致性,
代表產品:RocketMQ
分布式事務產品框架
京東jdts
服務通過lb連到集群中任何一個節點均能保證業務正確執行,某一個節點例外時集群可正常提供服務,同時支持集群橫向、縱向擴展,
Seata
一款開源的分布式事務解決方案,致力于提供高性能和簡單易用的分布式事務服務,Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務模式,為用戶打造一站式的分布式解決方案,
全域事務服務GTS
用于實作分布式環境下,特別是微服務架構下的高性能事務一致性,可以與RDS、MySQL、PostgreSQL等資料源,Spring Cloud、Dubbo、HSF及其他RPC框架,MQ訊息佇列等中間件產品配合使用,輕松實作分布式資料庫事務、多庫事務、訊息事務、服務鏈路級事務及各種組合,
作者:京東零售 谷偉
來源:京東云開發者社區
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/556600.html
標籤:其他
下一篇:返回列表
