国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 編程技術 - 阿里分布式中間件 Seata 從入門到精通

阿里分布式中間件 Seata 從入門到精通

2021-11-15 22:05程序員jinjunzhujinjunzhu 編程技術

最近在寫一本關于阿里巴巴分布式事務中間件 Seata 的電子書,Seata可以說是分布式事務中間件中最完善的了,包括了 AT、TCC、Saga、XA 四種模式,目前 Seata 已經更新到了 1.4.2 版本。

阿里分布式中間件 Seata 從入門到精通

最近在寫一本關于阿里巴巴分布式事務中間件 Seata 的電子書,Seata可以說是分布式事務中間件中最完善的了,包括了 AT、TCC、Saga、XA 四種模式,目前 Seata 已經更新到了 1.4.2 版本。

這本電子書主要分成兩部分,第一部分是入門學習,目前已經更新完成,第二部分是源碼解讀,Seata 的源代碼寫的還可以,值得閱讀。

整本書目前的目錄結構如下:

阿里分布式中間件 Seata 從入門到精通

阿里分布式中間件 Seata 從入門到精通

喜歡的朋友歡迎下載學習。獲取方式:關注公眾號,后臺回復:Seata。

下面簡要介紹 Seata 的四種模式。

AT 模式

AT 模式參考了單數據庫的事務原理,我們可以把分布式事務中每個數據庫看做是單數據庫的表。首先每個事務有一個全局的事務 id,叫做 xid。有了這個 xid 后,我們就可以記錄undo_log 了,undo_log 中記錄了這個 xid 對應回滾數據,每次提交事務前都要先寫 undo_log,后提交事務,這參考了 mysql 中的 WAL 機制。而rollback_info 字段記錄了要回滾的表的記錄中的每個字段和對應值,這樣就可以方便的回滾了。

AT模式的兩階段提交體現如下:

  • 一階段:業務數據和回滾日志記錄在同一個本地事務中提交,釋放本地鎖和連接資源。
  • 二階段:異步 commit,非常快速地完成。rollback 則通過一階段的回滾日志進行反向補償

AT 模式讀寫都有隔離性,這里簡單描述。

寫隔離

一階段本地事務提交前,需要確保先拿到**全局鎖* 。

拿不到全局鎖 ,不能提交本地事務。

拿全局鎖的嘗試會有超時時間限制,超出范圍將放棄,并回滾本地事務,釋放本地鎖。

上面是官網的描述,非常容易理解,如果獲取不到全局鎖,就不能提交本地事務,只能等待全局鎖直到超時。

讀隔離

AT模式的讀隔離需要本地事務隔離級別在讀已提交或以上,AT 模式默認的全局隔離級別是讀未提交 。

如果應用在特定場景下,必需要求全局的讀已提交 ,Seata 需要通過 SELECT FOR UPDATE 語句代理來實現。

SELECT FOR UPDATE 語句的執行會申請全局鎖 ,如果全局鎖被其他事務持有,則釋放本地鎖并重試。這個過程中,查詢是被 block 住的,直到全局鎖拿到。

TCC 模式

簡單來講,TCC模式就是將整個事務分成兩個階段來提交,try階段進行預留資源,如果所有分支都預留成功,則進入commit階段提交所有分支事務,否則執行cancel取消所有分支事務。

以電商系統為例,假如有訂單、庫存和賬戶3個服務,客戶購買一件商品,訂單服務增加訂單,庫存服務扣減庫存,賬戶服務扣減金額,這三個操作必須是原子性的,要么全部成功,要么全部失敗。

try階段

如下圖:

阿里分布式中間件 Seata 從入門到精通

訂單服務增加一個訂單,庫存服務凍結訂單上的庫存,賬戶服務凍結訂單上的金額。這個階段數據進入中間態。

commit階段

如下圖:

阿里分布式中間件 Seata 從入門到精通

commit階段,數據從中間態轉入終態,比如訂單金額從中間賬戶轉到最終賬戶。

cancel階段跟commit階段類似,比如訂單金額從中間賬戶退回到客戶賬戶。

Saga 模式

Saga 模式適用于長流程的業務場景,用狀態機來控制整個事務的執行。它使用狀態圖定義服務調用流程并生成 Json 狀態語言定義文件,狀態圖的節點可以是一個服務,也可以是補償節點。

下面這張圖定義了電商系統的業務流程,根據這個流程圖可以定義出 Json 文件中供狀態機使用。

阿里分布式中間件 Seata 從入門到精通

XA 模式

XA 模式需要分支事務數據庫支持 XA 原語,看一下官方這張圖:

阿里分布式中間件 Seata 從入門到精通

XA 模式的兩階段提交跟 TCC 模式的兩階段提交類似,都是由 TM 開啟全局事務,RM 向 TC注冊分支事務并且報告分支事務狀態,TC 根據全局事務的狀態來提交或回滾分支事務。

而在代碼實現上,XA 模式使用的是數據源代理來實現的。跟 TCC 模式不同的是,XA 模式只要有 prepare 方法即可。

Seata 對XA做了優化,把 Start | SQL | Prepare 合成了一個階段。這對 MySQL 數據庫是支持的,但是對 Oracle 數據庫不支持。

原文鏈接:https://mp.weixin.qq.com/s/RV9kteeox5KGjg2QVGYzfA

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产视频久久 | 久久九 | 免费观看黄色av网站 | 国产精品视频播放 | 五月婷婷综合激情网 | 国产精品原创巨作av | 国产成人精品综合 | 国产精品免费久久 | 在线观看国产 | 久草新免费 | 亚洲狼人 | 日韩中文字幕在线 | 欧美日韩精品在线观看 | 色视频在线免费观看 | 免费观看日韩一级片 | 日韩成人欧美 | 久久国产精品免费一区二区三区 | 国产精品99久久久久久宅男 | 黄色小视频在线观看 | 婷婷国产 | 国产欧美日韩一区 | 午夜久久久久 | 特黄一级 | 久久久久久国产精品 | 欧美日韩高清在线 | 精品自拍视频 | 色性视频| 国产欧美日韩精品一区 | 2023国产精品久久久精品双 | 免费成人在线观看视频 | 精品国产999 | 天天干在线影院 | 超碰日韩 | 色综合天天综合网国产成人综合天 | 久久久久久国产精品 | 国产精品18久久久久久久久久久久 | 国产成人网 | 日日爱视频 | 日韩一区二区三区福利视频 | 成版人性视频 | 欧美日韩亚洲成人 |