前言
因為公司的專案用到了分布式事物
,一開始對這個概念了解的只是模稜兩可,所以自己學習了一波並整理了此篇部落格。眾所周知,分布式事務是企業整合中的乙個技術難點,也是每乙個分布式系統架構中都會涉及到的乙個東西,尤其是在微服務中分布式事物
是必須要解決的乙個課題。
all or nothing
在mysql中,本地事物是如何實現的
分布式理論
cap理論意思就是在任何資料庫設計中,都無法同時滿足這三個特性,最多只能同時支援兩個特性並存。很顯然,在設計資料庫的時候,就需要在三個特性之間進行取捨,也就是說必須在一致性與可用性之間做出選擇
。
那麼base理論是什麼意思呢:資料庫設計時無法做到強一致,但每個小應用都可以根據自身的業務特點,採用適當的方式來使系統達到最終一致性。很明顯base理論和acid是相反的,它完全不同於acid的強一致性模型,而是通過犧牲強一致性來獲得可用性,並允許資料在一段時間內是不一致的,但最終達到一致狀態。
分布式事物解決方案
分布式事物的基本理論寫的差不多了,接下來了解一下常見的解決方案。
補償事務(tcc)
tcc事務補償是基於2pc實現的業務層事務控制方案,它是try、confirm和cancel三個單詞的首字母,含義如下:
注意事項:tcc介面都需要實現等冪性。
mq事務訊息
在幾種常見的分布式事物解決方案中,這中方法可能是最簡單的,但是缺點也是最明顯的,就是非常的吃mq的效能,而且有一些mq不支援,這個方法我沒有做過多的研究,所以就不寫了。。。
打個廣告
gts-阿里巴巴全新分布式事務解決方案,這是乙個基於雲的事物中介軟體,感興趣的小夥伴可以了解一下。
寫在最後
通過自己的學習,對分布式事務中的cap定理、base理論以及經典的解決方案有了一定的了解。微服務過多就會引出分布式事務,如果允許不建議採用上面任何一種方案,而是請把需要事務的微服務聚合成乙個單機服務,使用資料庫的本地事務。
分布式事物
1 分布式事務 在單機應用上,我們使用事務是很方便的,因為所有的業務邏輯都在本地,資料庫事務就能解決 acid 問題,特別是使用一些j2ee的框架,每一層的業務邏輯都給我們安排得妥妥當當的。當系統已經被拆分部署到多個伺服器例項上時,一般每個伺服器都只負責維護乙個子系統一張 數張表。與單機相比,業務還...
XA 分布式事物
當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務化。比如原來單機...
分布式事物 第一章 分布式事物簡介
事務就是提供一種 要麼什麼都不做,要麼做全套 all or nothing 機制。a 原子性 atomicity 你買東西要麼交錢收貨一起都執行,要麼發不出貨,就退錢。乙個事務 transaction 中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被...