多案分库分表带来的问题-分布式事务
比如在一個貸款的流程里面,合同系統登記了數據,放款系統也必須生成放款記錄,如果兩個動作不是同時成功或者同時失敗,就會出現數據一致性的問題。如果在一個數據庫里面,我們可以用本地事務來控制,但是在不同的數據庫里面就不行了。所以分布式環境里面的事務,我們也需要通過一些方案來解決。
復習一下。分布式系統的基礎是CAP 理論。
1.C (一致性) Consistency:對某個指定的客戶端來說,讀操作能返回最新的寫操作。對于數據分布在不同節點上的數據來說,如果在某個節點更新了數據,那么在其他節點如果都能讀取到這個最新的數據,那么就稱為強一致,如果有某個節點沒有讀取到,那就是分布式不一致。
2.A (可用性) Availability:非故障的節點在合理的時間內返回合理的響應(不是錯誤和超時的響應)。可用性的兩個關鍵一個是合理的時間,一個是合理的響應。
合理的時間指的是請求不能無限被阻塞,應該在合理的時間給出返回。合理的響應指的是系統應該明確返回結果并且結果是正確的
3.P (分區容錯性) Partition tolerance:當出現網絡分區后,系統能夠繼續工作。打個比方,這里集群有多臺機器,有臺機器網絡出現了問題,但是這個集群仍然可以正工作。
CAP 三者是不能共有的,只能同時滿足其中兩點。基于AP,我們又有了BASE 理論。
基本可用(Basically Available):分布式系統在出現故障時,允許損失部分可用功能,保證核心功能可用。
軟狀態(Soft state):允許系統中存在中間狀態,這個狀態不影響系統可用性,這里指的是CAP 中的不一致。
最終一致(Eventually consistent):最終一致是指經過一段時間后,所有節點數據都將會達到一致。
分布式事務有幾種常見的解決方案:
1、全局事務(比如XA 兩階段提交;應用、事務管理器(TM)、資源管理器(DB)),例如Atomikos
2、基于可靠消息服務的分布式事務
3、柔性事務TCC(Try-Confirm-Cancel)tcc-transaction
4、最大努力通知,通過消息中間件向其他系統發送消息(重復投遞+定期校對)
?
總結
以上是生活随笔為你收集整理的多案分库分表带来的问题-分布式事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多案分库分表带来的问题-跨库关联查询
- 下一篇: 排序、翻页、函数计算问题