<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                https://juejin.cn/post/6844903913691283469 [官網](http://seata.io/zh-cn/) Seata 是一款開源的分布式事務解決方案,致力于提供高性能和簡單易用的分布式事務服務。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務模式,為用戶打造一站式的分布式解決方案。 ## Seata主要由三個重要組件組成: TC:Transaction Coordinator 事務協調器,事務協調器,維護全局和分支事務的狀態,驅動全局事務提交或回滾。 TM:Transaction Manager 事務管理器,定義全局事務的范圍:開始全局事務、提交或回滾全局事務。 RM:Resource Manager 資源管理器,管理分支事務處理的資源,與TC交談以注冊分支事務和報告分支事務的狀態,并驅動分支事務提交或回滾。 ## AT 模式 * 基于支持本地 ACID 事務的關系型數據庫。 * Java 應用,通過 JDBC 訪問數據庫。 ### 整體機制 兩階段提交協議的演變: * 一階段:業務數據和回滾日志記錄在同一個本地事務中提交,釋放本地鎖和連接資源。 * 二階段: * 提交異步化,非常快速地完成。 * 回滾通過一階段的回滾日志進行反向補償。 ### Seata的執行流程如下: 1.A服務的TM向TC申請開啟一個全局事務,TC就會創建一個全局事務并返回一個唯一的XID 2.A服務的RM向TC注冊分支事務,并及其納入XID對應全局事務的管轄 3.A服務執行分支事務,向數據庫做操作 4.A服務開始遠程調用B服務,此時XID會在微服務的調用鏈上傳播 5.B服務的RM向TC注冊分支事務,并將其納入XID對應的全局事務的管轄 6.B服務執行分支事務,向數據庫做操作 7.全局事務調用鏈處理完畢,TM根據有無異常向TC發起全局事務的提交或者回滾 8.TC協調其管轄之下的所有分支事務, 決定是否回滾 ## seata運行流程分析 ![](https://img.kancloud.cn/5b/f2/5bf2c46ab2b41c0b6cc8b0a71b2b7101_830x697.png) 要點說明: 1.每個RM使用DataSourceProxy連接數據庫,其目的是使用ConnectionProxy,使用數據源和數據連接代理的目的就是在第一階段將undo_log和業務數據放在一個本地事務提交,這樣就保存了只要有業務操作就一定有undo_log。 2.在第一階段undo_log中存放了數據修改前和修改后的值,為事務回滾作好準備,所以第一階段完成就已經將分支事務提交,也就釋放了鎖資源。 3.TM開啟全局事務開始,將XID全局事務id放在事務上下文中,通過feign調用也將XID傳入下游分支事務,每個分支事務將自己的Branch ID分支事務ID與XID關聯。 4.第二階段全局事務提交,TC會通知各各分支參與者提交分支事務,在第一階段就已經提交了分支事務,這里各各參與者只需要刪除undo_log即可,并且可以異步執行,第二階段很快可以成。 5.第二階段全局事務回滾,TC會通知各各分支參與者回滾分支事務,通過 XID 和 Branch ID 找到相應的回滾日志,通過回滾日志生成反向的 SQL 并執行,以完成分支事務回滾到之前的狀態,如果回滾失敗則會重試回滾操作。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看