分布式事務的Tcc 解決方案 利用 hmily框架


2、TCC 解決分布式事務的方案 落地時 hmily框架。

       2.1 TCC 代表了三個階段 Try Confirm cancel

          Try 就是 一個方法,這里 是 業務的邏輯,幾個邏輯都操縱數據庫 比如完成 注冊用戶,調用 送積分的 遠程邏輯
                 默認 try執行了 confirm一定執行。
          Confirm 這里呢 可以理解成 確認提交。
          Cancel 就是業務的 回滾,只要try里面有異常 就 走cancel。

     2.2 TCC 注意的異常處理情況

        1) 空回滾 :就是 try沒有執行 就執行cancel 方法。
        2)冪等性 :一個方法無論調多少次 結果都是一樣的 這是冪等性。
        3) 懸掛 ;confirm 或者 cancel已經執行了 又要執行 try方法 這是懸掛。


            處理的方法是調用 數據庫的 邏輯。 hmily需要的數據庫表設計。



            事務的發起方   try這里需要解決冪等性 和懸掛的問題。 try方法上要加本地事務的注解。

                                        cancel這里需要解決 空回滾和冪等性的問題。

             事務的另一方  try這里 啥也不用寫邏輯

                                     confirm 這里需要 寫 送積分的邏輯。這里即使又異常整個事務也回滾不了 可以人工的處理。 需要解決冪等性。方法上要加本地事務的注解。

                                    cancel 這里 也啥也不用寫。

      ##feign 的使用注意事項


                     @FeignClient(value="tcc-demo-bank2",fallback=Bank2ClientFallback.class)
                    public interface Bank2Client {
                    //遠程調用李四的微服務
                 @GetMapping("/bank2/transfer")

                   ##這里特別注意啊一定要加 這個注解 為的是 把全局的 事務id 傳到 下游。
                  @Hmily
                  public Boolean transfer(@RequestParam("amount") Double amount);
                   }

 

 

 

代碼 位置

       https://pan.baidu.com/s/1Qn4qrAr-HIoO_gdcreAQug

 

 

 


免責聲明!

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



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