分布式事務及常用第三方框架


1、分布式事務 seata 流程原理

 

 

seata 官方文檔 : http://seata.io/zh-cn/docs/overview/what-is-seata.html

 

2、分布式事務 LCN 實現原理

LCN分布式事務框架其本身並不創建事務,而是基於對本地事務的協調從而達到事務一致性的效果。核心步驟:
創建事務組
是指在事務發起方開始執行業務代碼之前先調用TxManager創建事務組對象,然后拿到事務標示GroupId的過程。
添加事務組
添加事務組是指參與方在執行完業務方法以后,將該模塊的事務信息添加通知給TxManager的操作。
關閉事務組
是指在發起方執行完業務代碼以后,將發起方執行結果狀態通知給TxManager的動作。當執行完關閉事務組的方法以后,TxManager將根據事務組信息來通知相應的參與模塊提交或回滾事務。
事務控制原理


LCN事務控制原理是由事務模塊TxClient下的代理連接池與TxManager的協調配合完成的事務協調控制。

TxClient的代理連接池實現了javax.sql.DataSource接口,並重寫了close方法,事務模塊在提交關閉以后TxClient連接池將執行"假關閉"操作,等待TxManager協調完成事務以后在關閉連接。

對於代理連接池的優化
自動超時機制
任何通訊都有最大超時限制,參與模塊在等待通知的狀態下也有最大超時限制,當超過時間限制以后事務模塊將先確認事務狀態,然后再決定執行提交或者回滾操作,主要為了給最大資源占用時間加上限制。

智能識別創建不同的連接 對於只讀操作、非事務操作LCN將不開啟代理功能,返回本地連接對象,對於補償事務的啟動方將開啟回滾連接對象,執行完業務以后馬上回滾事務。

LCN連接重用機制 當模塊在同一次事務下被重復執行時,連接資源會被重用,提高連接的使用率。

事務補償機制
為什么需要事務補償?

事務補償是指在執行某個業務方法時,本應該執行成功的操作卻因為服務器掛機或者網絡抖動等問題導致事務沒有正常提交,此種場景就需要通過補償來完成事務,從而達到事務的一致性。

補償機制的觸發條件?

當執行關閉事務組步驟時,若發起方接受到失敗的狀態后將會把該次事務識別為待補償事務,然后發起方將該次事務數據異步通知給TxManager。TxManager接受到補償事務以后先通知補償回調地址,然后再根據是否開啟自動補償事務狀態來補償或保存該次切面事務數據。

補償事務機制?
LCN的補償事務原理是模擬上次失敗事務的請求,然后傳遞給TxClient模塊然后再次執行該次請求事務。

 

 

 

 

LCN實現分布式事務: https://www.jianshu.com/p/3e15d20ed308

LCN分布式事務:  https://zhuanlan.zhihu.com/p/71057053

 

3、定時任務 xxl-job原理

 

 

4、限流 Sentinel 原理

 

 

 

5、 分布式ID都有哪些生成方式?

  • UUID

  • 數據庫自增ID

  • 數據庫多主模式

  • 號段模式

  • Redis

  • 雪花算法(SnowFlake)

  • 滴滴出品(TinyID):數據庫號段式

  • 百度 (Uidgenerator)、基於雪花算法模型

  • 美團(Leaf):數據庫號段式 

 
6.限流的算法有哪些?

 1.計數器2.滑動窗口機制(Sentinel)3.令牌桶算法(Guava RateLimiter)4.漏桶算法 (Java 線程池)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM