本地消息表实现机制讲解
生活随笔
收集整理的這篇文章主要介紹了
本地消息表实现机制讲解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本地消息表(異步確保)
本地消息表這種實現方式應該是業界使用最多的,其核心思想是將分布式事務拆分成本地事務進行處理,這種思路是來源于ebay。我們可以從下面的流程圖中看出其中的一些細節:
基本思路就是:
消息生產方,需要額外建一個消息表,并記錄消息發送狀態。消息表和業務數據要在一個事務里提交,也就是說他們要在一個數據庫里面。然后消息會經過MQ發送到消息的消費方。如果消息發送失敗,會進行重試發送。
消息消費方,需要處理這個消息,并完成自己的業務邏輯。此時如果本地事務處理成功,表明已經處理成功了,如果處理失敗,那么就會重試執行。如果是業務上面的失敗,可以給生產方發送一個業務補償消息,通知生產方進行回滾等操作。
生產方和消費方定時掃描本地消息表,把還沒處理完成的消息或者失敗的消息再發送一遍。如果有靠譜的自動對賬補賬邏輯,這種方案還是非常實用的。
這種方案遵循BASE理論,采用的是最終一致性,筆者認為是這幾種方案里面比較適合實際業務場景的,即不會出現像2PC那樣復雜的實現(當調用鏈很長的時候,2PC的可用性是非常低的),也不會像TCC那樣可能出現確認或者回滾不了的情況。
優點: 一種非常經典的實現,避免了分布式事務,實現了最終一致性。在 .NET中 有現成的解決方案。
缺點: 消息表會耦合到業務系統中,如果沒有封裝好的解決方案,會有很多雜活需要處理。
?
總結
以上是生活随笔為你收集整理的本地消息表实现机制讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCC事务补偿机制实现分布式事务控制介绍
- 下一篇: MQ事务消息实现方案