1. 程式人生 > >8 分散式事務的解決方案

8 分散式事務的解決方案

目錄

事務

  • 事務

  • 由一組操作構成的可靠,獨立的工作單元;
  • ACID:
  • 原子性
  • 隔離性
  • 一致性
  • 永續性
  • java有三種事務,jdbc事務,jta事務,容器事務,jdbc事務無法實現分散式事務的控制,jta是可以實現的,容器事務(spring事務)一般是也是基於jta去實現的
  • 應用於分散式的主要難點是:高度併發,資源分佈,大時間跨度;

標準分散式事務基於jta去實現的,分散式事務(Distributed Transaction)包括事務管理器(Transaction Manager)和一個或多個支援 XA 協議的資源管理器 ( Resource Manager )。我們可以將資源管理器看做任意型別的持久化資料儲存;事務管理器承擔著所有事務參與單元的協調與控制

分散式事務的設計理論

1:可靠性的訊息子系統的設計和原理

  • 一般來說會把訊息的傳送做成一個子系統,使用關係資料庫來儲存需要傳送的訊息,才用預傳送和確認傳送來保證訊息的一致性,當然可能會有網路問題,所以需要設計訊息確認和恢復的一些定時任務
  • 一樣的子系統,迴圈找出未成功傳送或者未成功消費的一些東西進行刪除或者恢復。訊息管理子系統主要是提供一個視覺化介面來操作一些異常的訊息。顯示冪等性(重複的資訊只被消費一次),最後的優化建議

2:最大努力型通知(定期校對)

  • 消費端接收到訊息後儲存進通知服務和通知記錄,然後傳送通知給被動方,設定定時任務對未傳送成功的通知進行重新發送,直到重新發送最大次數為止

3:TCC(一致性最強方案,效能略低)

  • 使用的是tcc-transaction輕量級分散式事務框架,原理是通過aop和攔截器進行實現
  • 另外:LCN也比較火