在如今的分布式盛行的年代,分布式事務永遠都是繞不開的一個話題,今天就談談分布式事務相關的一致性與實戰解決方案,
一、為什么需要分布式事務
由于近十年互聯網的發展非常迅速,很多網站的訪問量越來越大,集中式環境已經不能滿足業務的需要了,只能按照業務為單位進行資料拆分(包含:垂直拆分與水平拆分),以及按照業務為單位提供服務,從早期的集中式轉變為面向服務加構的分布式應用環境,
舉一個經典的例子,阿里的淘寶網站隨著訪問量越來越大,只能按照商品、訂單、用戶、店鋪等業務為單位進行資料庫拆分,以及按照業務為單位提供服務介面,

這個時候,為了完成一個簡單的業務功能,比如:購買商品后扣款,有可能需要橫跨多個服務,涉及用戶訂單、商品庫存、支付等多個資料庫,而這些操作又需要再同一個事務中完成,這就涉及到了分布式事務,
本質上來說,分布式事務就是為了保證不同資源服務器的資料一致性,
二、分布式的一致性理論
最早加州大學伯克利分校Eric Brewer教授提出一個分布式系統特性的CAP理論,
1、CAP理論的不可能三角

(1)一致性(Consistency)
(2)可用性(Availability)
(3)磁區容錯性(Partition tolerance)
在分布式系統中,是不存在同時滿足一致性Consistency、可用性Availability和磁區容錯性Partition Tolerance三者的,
一句話總結:一致性、可用性和磁區容錯再分布式事務中不可兼得,再絕大多數的場景,都需要犧牲強一致性來換取系統的高可用性,系統往往只需要保證最終一致性,這也是后來發展出來的BASE理論的基礎
2、BASE理論

(1)Basically Available(基本可用)
(2)Soft State(柔軟狀態)
(3)Eventually consistent(最終一致性)
BASE是對CAP中一致性和可用性權衡的結果,其來源于對大規模互聯網系統分布式實踐的結論,是基于CAP定理逐步演化而來的,其核心思想是即使無法做到強一致性(Strong consistency),但每個應用都可以根據自身的業務特點,采用適當的方式來使系統達到最終一致性(Eventual consistency)
三、分布式事務的解決方案
1、基于XA協議的兩階段提交2PC(2-phase commit)
XA是一個分布式事務協議,XA中大致分為兩部分:事務管理器和本地資源管理器,其中本地資源管理器往往由資料庫實作,而事務管理器作為全域的調度者,負責各個本地資源的提交和回滾,

大致的流程:
(1)第一階段是表決階段,所有參與者都將本事務能否成功的資訊反饋給協調者;
(2)第二階段是執行階段,協調者根據所有參與者的反饋,通知所有參與者,步調一致地再所有分支上提交或者回滾,
優缺點:
盡量保證了資料的強一致性,實作成本較低,在各大主流資料庫都有自己的實作,存在單點故障問題、性能問題、跨資料庫問題,
2、事務補償TCC模式
TCC方案其實是兩階段提交的一種改進,將整個業務邏輯的每個分支顯式的分成了Try、Confirm、Cancel三個操作,

優缺點:
對于代碼有侵入性,降低了鎖沖突,提高了吞吐量,缺點是有時候并沒有那么好實作,
案例:
螞蟻金服的DTS(prepare、commit、rollback)
3、訊息佇列最終一致性方案
通過異步解耦的方式,通過第三種中間件

案例:
RocketMQ、BabbitMQ等均可實作,RocketMQ還有專門的事務型訊息,新版的kafka也有,
總之,分布式系統中事務更多的是對CAP權衡,在實際應用中,根據業務要求、開發人員情況以及所用框架的不同進行調整,
好了,今天的知識就先分享到這里了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/4459.html
標籤:ASP.NET
