關(guān)于我們
書單推薦
新書推薦
|
深入理解分布式事務(wù):原理與實(shí)戰(zhàn) 本書的廣度與深度兼?zhèn)、理論與實(shí)戰(zhàn)兼顧的分布式事務(wù)專著,它從基礎(chǔ)知識(shí)、解決方案、原理分析、源碼實(shí)現(xiàn)、工程實(shí)戰(zhàn)5個(gè)維度對(duì)分布式事務(wù)做了全面、細(xì)致的講解,試圖解決你在實(shí)踐中遇到的所有關(guān)于分布式事務(wù)的問題。 兩位作者都是分布式事務(wù)領(lǐng)域的資深架構(gòu)專家,是Apache ShenYu(incubating)網(wǎng)關(guān)創(chuàng)始人、Hmily、RainCat、Myth等分布式事務(wù)框架的創(chuàng)始人。本書因?yàn)閮?nèi)容扎實(shí),所以得到了來自、阿里、騰訊、螞蟻金服、滴滴、餓了么、58集團(tuán)、IBM等互聯(lián)網(wǎng)大廠及Apache軟件基金會(huì)的近20位專家的高度評(píng)價(jià)。 基礎(chǔ)知識(shí)維度:首先全面介紹了事務(wù)和分布式事務(wù)的概念和基礎(chǔ)知識(shí),然后詳細(xì)講解了MySQL事務(wù)和Spring事務(wù)的實(shí)現(xiàn)原理; 解決方案維度:詳細(xì)介紹了分布式事務(wù)的各種解決方案,包括強(qiáng)一致性分布式事務(wù)解決方案和Z終一致性分布式事務(wù)解決方案; 原理分析維度:詳細(xì)講解了分布式事務(wù)的原理,包括XA強(qiáng)一致性分布式事務(wù)、TCC分布式事務(wù)、可靠消息Z終一致性分布式事務(wù)和Z大努力通知型分布式事務(wù)的原理。 源碼實(shí)現(xiàn)維度:深入分析了Atomikos,Narayana框架實(shí)現(xiàn)XA強(qiáng)一致性分布式事務(wù)解決方案的源碼,以及Dromara開源社區(qū)的Hmily分布式事務(wù)框架實(shí)現(xiàn)TCC分布式事務(wù)的源碼; 工程實(shí)踐維度:通過多個(gè)在生產(chǎn)環(huán)境中經(jīng)歷了高并發(fā)、大流量考驗(yàn)的綜合案例,講解了XA強(qiáng)一致性分布式事務(wù)、TCC分布式事務(wù)、可靠消息Z終一致性分布式事務(wù)和Z大努力通知型分布式事務(wù)的工程實(shí)踐方法。 全書配有大量流程圖和原理圖,便于讀者閱讀理解;精選了大量來自生產(chǎn)環(huán)境的完整案例及其代碼,便于讀者動(dòng)手實(shí)踐。閱讀本書,你將體驗(yàn)到事半功倍的效果。 (1)作者資歷深厚:作者來自于,資深的分布式事務(wù)架構(gòu)專家,Apache ShenYu(incubating)、Hmily、RainCat、Myth、mykit-data等多個(gè)開源框架的創(chuàng)始人。 (2)作者經(jīng)驗(yàn)豐富:作者有多年的分布式事務(wù)經(jīng)驗(yàn)、微服務(wù)架構(gòu)經(jīng)驗(yàn)、分布式系統(tǒng)架構(gòu)經(jīng)驗(yàn),以及分布式事務(wù)框架的架構(gòu)和開發(fā)經(jīng)驗(yàn)。 (3)廣度深度兼?zhèn)洌簭幕A(chǔ)知識(shí)、解決方案、原理分析、源碼實(shí)現(xiàn)、工程實(shí)戰(zhàn)5個(gè)維度全面、深入講解分布式事務(wù)。 (4)注重工程實(shí)踐:書中有大量經(jīng)過了生產(chǎn)環(huán)境的高并發(fā)、高流量考驗(yàn)的完整案例,并附案例代碼,讀者可以直接復(fù)用。 (5)大廠專家推薦:來自、阿里、騰訊、螞蟻金服、滴滴、餓了么、58集團(tuán)、IBM等互聯(lián)網(wǎng)大廠及Apache軟件基金會(huì)的近20位專家高口碑力薦。 為什么要寫這本書 隨著互聯(lián)網(wǎng)的不斷發(fā)展,互聯(lián)網(wǎng)企業(yè)的業(yè)務(wù)在飛速變化,推動(dòng)著系統(tǒng)架構(gòu)也在不斷地發(fā)生變化?傮w來說,系統(tǒng)架構(gòu)大致經(jīng)歷了單體應(yīng)用架構(gòu)垂直應(yīng)用架構(gòu)分布式架 構(gòu)SOA架構(gòu)微服務(wù)架構(gòu)的演變。如今微服務(wù)技術(shù)越來越成熟,很多企業(yè)都采用微服務(wù)架構(gòu)來支撐內(nèi)部及對(duì)外的業(yè)務(wù),尤其是在高并發(fā)大流量的電商業(yè)務(wù)場景下,微服務(wù)更是企業(yè)的架構(gòu)模式。 微服務(wù)的普及也帶來了新的問題。原本單一的應(yīng)用架構(gòu)只需要連接一臺(tái)數(shù)據(jù)庫實(shí)例即可完成所有業(yè)務(wù)操作,業(yè)務(wù)方法的邏輯在一個(gè)事務(wù)中即可完成,涉及的所有數(shù)據(jù)庫操作要么全部提交,要么全部不提交,很容易實(shí)現(xiàn)數(shù)據(jù)的一致性。而在微服務(wù)架構(gòu)下,原本單一的應(yīng)用被拆分為一個(gè)個(gè)很小的服務(wù),每個(gè)服務(wù)都有其獨(dú)立的業(yè)務(wù)和數(shù)據(jù)庫,服務(wù)與服務(wù)之間的交互通過接口或者遠(yuǎn)程過程調(diào)用(Remote Procedure Call,RPC)的方式進(jìn)行,此時(shí),服務(wù)與服務(wù)之間的數(shù)據(jù)一致性問題就變得棘手了。 因?yàn)槲⒎⻊?wù)這種架構(gòu)模式本質(zhì)上就是多個(gè)應(yīng)用連接多個(gè)數(shù)據(jù)庫共同完成一組業(yè)務(wù)邏輯,所以數(shù)據(jù)一致性問題就凸顯出來了。除此之外,多個(gè)應(yīng)用連接同一個(gè)數(shù)據(jù)庫和單個(gè)應(yīng)用連接多個(gè)數(shù)據(jù)庫也會(huì)產(chǎn)生數(shù)據(jù)一致性問題?梢赃@么說,在互聯(lián)網(wǎng)行業(yè),任何企業(yè)都會(huì)或多或少地遇到數(shù)據(jù)一致性問題。業(yè)界將這種數(shù)據(jù)一致性問題稱為分布式事務(wù)問題。為了解決分布式事務(wù)問題,業(yè)界提出了一些著名的理論,比如CAP理論和Base理論,并針對(duì)這些理論提出了很多解決方案,比如解決強(qiáng)一致性分布式事務(wù)的DTP模型、XA事務(wù)、2PC模型、3PC模型,解決終一致性分布式事務(wù)的TCC、可靠消息終一致性、努力通知型等模型。不少企業(yè)和開源組織,甚至個(gè)人都基于這些模型實(shí)現(xiàn)了比較通用的分布式事務(wù)框架。 深入掌握分布式事務(wù)已然成為互聯(lián)網(wǎng)行業(yè)中每個(gè)中高級(jí)開發(fā)人員和架構(gòu)師必須掌握的技能,而熟練掌握分布式事務(wù)產(chǎn)生的各種場景和解決方案也成為各大互聯(lián)網(wǎng)公司對(duì)應(yīng)聘者的基本要求。 盡管對(duì)于分布式事務(wù)這個(gè)話題,業(yè)界有不少成熟的解決方案,但是縱觀整個(gè)圖書市場,幾乎找不到一本系統(tǒng)深入講解分布式事務(wù)的圖書。本書從實(shí)際需求出發(fā),全面且細(xì)致地介紹了有關(guān)分布式事務(wù)的基礎(chǔ)知識(shí)、解決方案、實(shí)現(xiàn)原理和源碼實(shí)戰(zhàn)。每章根據(jù)需要配有相關(guān)的原理圖和流程圖,并提供完整的實(shí)戰(zhàn)案例源碼。書中的每個(gè)解決方案都經(jīng)過了高并發(fā)大流量生產(chǎn)環(huán)境的考驗(yàn),可以直接拿來解決實(shí)際生產(chǎn)環(huán)境中的分布式事務(wù)問題。通過對(duì)本書的閱讀和學(xué)習(xí),讀者可以更加全面、深入、透徹地理解分布式事務(wù)的基礎(chǔ)、解決方案、原理和應(yīng)用,提高應(yīng)對(duì)分布式事務(wù)問題的處理能力和項(xiàng)目的實(shí)戰(zhàn)能力。 讀者對(duì)象 本書適合以下幾類讀者閱讀: 互聯(lián)網(wǎng)從業(yè)者,如中高級(jí)開發(fā)人員、架構(gòu)師、技術(shù)經(jīng)理、技術(shù)專家; 需要系統(tǒng)學(xué)習(xí)分布式事務(wù)的開發(fā)人員; 需要提高分布式事務(wù)開發(fā)水平的人員; 需要時(shí)常查閱分布式事務(wù)技術(shù)資料和開發(fā)案例的人員。 本書特色 1.大量圖解和開發(fā)案例 為了方便讀者理解,我們?cè)诮榻B分布式事務(wù)的基礎(chǔ)、解決方案、原理、源碼與實(shí)戰(zhàn)章節(jié)中配有大量的圖解和圖表,同時(shí)在源碼與實(shí)戰(zhàn)章節(jié)配有完整的分布式事務(wù)案例,讀者可以參考本書的案例進(jìn)行學(xué)習(xí),并運(yùn)行本書的案例代碼,以更深入地理解和掌握分布式事務(wù)。這些案例代碼和圖解的draw.io源文件收錄于隨書資料里,讀者可以從下面的鏈接獲取相關(guān)內(nèi)容。 GitHub:https://github.com/dromara/distribute-transaction。 Gitee:https://gitee.com/dromara/distribute-transaction。 2.技術(shù)點(diǎn)全面 本書全面且細(xì)致地介紹了分布式事務(wù)的各項(xiàng)知識(shí),包含分布式事務(wù)的基礎(chǔ)、解決方案、原理、源碼與實(shí)戰(zhàn)。通過閱讀本書,讀者能夠全面掌握分布式事務(wù)的原理和應(yīng)用。 3.案例應(yīng)用性強(qiáng),具備較高的實(shí)用價(jià)值 本書關(guān)于分布式事務(wù)的各項(xiàng)技術(shù)點(diǎn)都配有相關(guān)的案例,都是實(shí)現(xiàn)分布式事務(wù)相關(guān)技術(shù)的典型案例,具有很強(qiáng)的實(shí)用性,方便讀者隨時(shí)查閱和參考。 另外,這些實(shí)戰(zhàn)案例大都是我們實(shí)際工作的總結(jié),尤其是書中涉及的分布式事務(wù)框架,均是業(yè)界知名的開源分布式事務(wù)框架,稍加修改與完善便可應(yīng)用于實(shí)際的生產(chǎn)環(huán)境中。 本書內(nèi)容 本書分為如下四個(gè)部分。 部分 分布式事務(wù)基礎(chǔ)(第1~5章) 首先介紹事務(wù)的基本概念,然后介紹MySQL事務(wù)和Spring事務(wù)的實(shí)現(xiàn)原理,后介紹分布式事務(wù)的基本概念和理論知識(shí)。 第二部分 分布式事務(wù)解決方案(第6~7章) 以大量圖解的方式詳細(xì)介紹了分布式事務(wù)的各種解決方案,包括強(qiáng)一致性分布式事務(wù)解決方案和終一致性分布式事務(wù)解決方案。 第三部分 分布式事務(wù)原理(第8~11章) 以大量圖解的方式詳細(xì)講解了分布式事務(wù)的原理,包括XA強(qiáng)一致性分布式事務(wù)、TCC分布式事務(wù)、可靠消息終一致性分布式事務(wù)和努力通知型分布式事務(wù)。 第四部分 分布式事務(wù)源碼與實(shí)戰(zhàn)(第12~17章) 首先詳細(xì)講解了業(yè)界比較知名的ShardingSphere框架實(shí)現(xiàn)XA分布式事務(wù)的源碼,然后詳細(xì)剖析了Dromara開源社區(qū)的Hmily分布式事務(wù)框架實(shí)現(xiàn)TCC分布式事務(wù)的源碼,后分別對(duì)XA強(qiáng)一致性分布式事務(wù)、TCC分布式事務(wù)、可靠消息終一致性分布式事務(wù)和努力通知型分布式事務(wù)進(jìn)行了實(shí)戰(zhàn)案例講解。 如何閱讀本書 對(duì)于沒有接觸過分布式事務(wù)的讀者,建議按照順序從第1章開始閱讀,并實(shí)現(xiàn)每一個(gè)案例。 對(duì)于有一定MySQL和Spring開發(fā)基礎(chǔ)的讀者,可以根據(jù)實(shí)際情況,有選擇性地閱讀分布式事務(wù)的相關(guān)章節(jié)。 對(duì)于書中涉及的每個(gè)分布式事務(wù)案例,讀者可以先自行思考實(shí)現(xiàn)方式,再閱讀相關(guān)的案例講解,了解各技術(shù)對(duì)應(yīng)的原理細(xì)節(jié),以加深理解,達(dá)到事半功倍的學(xué)習(xí)效果。 勘誤和支持 本書是肖宇和冰河(排名不分先后)聯(lián)合撰寫的。由于水平有限,編寫時(shí)間倉促,書中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。為此,我們特意在Dromara社區(qū)的GitHub上創(chuàng)建了一個(gè)單獨(dú)的倉庫用來記錄本書的勘誤信息,倉庫地址為https://github.com/dromara/transaction-book。讀者可以將書中的錯(cuò)誤發(fā)布在Bug勘誤中,如果遇到任何問題,也可以記錄在這個(gè)倉庫中,我們將盡量在線上為讀者提供滿意的解答。如果有更多寶貴的建議或者意見,也可以聯(lián)系我們。 肖宇的聯(lián)系方式如下。 微信:xixy199195。 郵箱:xiaoyu@apache.org。 公眾號(hào):Dromara開源組織。 冰河的聯(lián)系方式如下。 微信:hacker_binghe。 郵箱:1028386804@qq.com。 公眾號(hào):冰河技術(shù)。 如果想獲得更多有關(guān)分布式事務(wù)或者開源框架的動(dòng)態(tài),可以關(guān)注微信公眾號(hào)Dromara開源組織和冰河技術(shù)。 致謝 首先感謝張逸為本書作序。感謝鄭灝、劉啟榮、高新剛、沈建林、付曉巖、史少鋒、劉勛、張亮、代立冬、楊曉峰、于君澤、孫玄、沈劍、曾波、程超、張永倫、于雨、程軍和駱俊武(排名不分先后)等專家為本書撰寫推薦語。 感謝Dromara開源社區(qū)的兄弟姐妹們,感謝你們對(duì)社區(qū)的長期支持和貢獻(xiàn)。你們的支持是我們寫作的動(dòng)力。 感謝機(jī)械工業(yè)出版社華章公司的楊福川老師和董惠芝編輯、韓蕊編輯在這一年多的時(shí)間里始終支持我們寫作,是你們的鼓勵(lì)和幫助引導(dǎo)我們順利完成了全部書稿。 感謝家人在我們寫作期間默默給予我們支持與鼓勵(lì),并時(shí)刻為我們傳遞著信心和力量! 后,感謝所有支持、鼓勵(lì)和幫助過我們的人。謹(jǐn)以此書獻(xiàn)給我們親愛的家人,以及眾多熱愛開源事業(yè)和關(guān)注Dromara開源社區(qū)的朋友們! 肖宇、冰河 肖宇 推薦語 序 前言 部分 分布式事務(wù)基礎(chǔ) 第1章 事務(wù)的基本概念2 1.1 事務(wù)的特性2 1.1.1 原子性3 1.1.2 一致性3 1.1.3 隔離性3 1.1.4 持久性3 1.2 事務(wù)的類型4 1.2.1 扁平事務(wù)4 1.2.2 帶有保存點(diǎn)的扁平事務(wù)4 1.2.3 鏈?zhǔn)绞聞?wù)5 1.2.4 嵌套事務(wù)5 1.2.5 分布式事務(wù)5 1.3 本地事務(wù)5 1.3.1 基本概念6 1.3.2 本地事務(wù)的執(zhí)行流程6 1.3.3 本地事務(wù)的優(yōu)缺點(diǎn)7 1.4 MySQL事務(wù)基礎(chǔ)7 1.4.1 并發(fā)事務(wù)帶來的問題7 1.4.2 MySQL事務(wù)隔離級(jí)別9 1.4.3 MySQL中各種事務(wù)隔離級(jí)別的區(qū)別10 1.4.4 MySQL事務(wù)隔離級(jí)別實(shí)踐11 1.4.5 MySQL中鎖的分類19 1.4.6 死鎖的產(chǎn)生和預(yù)防23 1.4.7 MySQL中的死鎖問題24 1.4.8 InnoDB中的MVCC原理25 1.5 本章小結(jié)28 第2章 MySQL事務(wù)的實(shí)現(xiàn)原理29 2.1 Redo Log29 2.1.1 Redo Log基本概念29 2.1.2 Redo Log基本原理30 2.1.3 Redo Log刷盤規(guī)則30 2.1.4 Redo Log刷盤實(shí)踐32 2.1.5 Redo Log寫入機(jī)制34 2.1.6 Redo Log的LSN機(jī)制35 2.1.7 Redo Log相關(guān)參數(shù)36 2.2 Undo Log36 2.2.1 Undo Log基本概念36 2.2.2 Undo Log存儲(chǔ)方式37 2.2.3 Undo Log基本原理37 2.2.4 Undo Log實(shí)現(xiàn)MVCC機(jī)制37 2.2.5 Undo Log相關(guān)參數(shù)40 2.3 BinLog41 2.3.1 BinLog基本概念41 2.3.2 BinLog記錄模式41 2.3.3 BinLog文件結(jié)構(gòu)42 2.3.4 BinLog寫入機(jī)制43 2.3.5 BinLog組提交機(jī)制43 2.3.6 BinLog與Redo Log的區(qū)別45 2.3.7 BinLog相關(guān)參數(shù)45 2.4 MySQL事務(wù)流程46 2.4.1 MySQL事務(wù)執(zhí)行流程46 2.4.2 MySQL事務(wù)恢復(fù)流程47 2.5 MySQL中的XA事務(wù)48 2.5.1 XA事務(wù)的基本原理48 2.5.2 MySQL XA事務(wù)語法49 2.5.3 JDBC操作MySQL XA事務(wù)52 2.6 本章小結(jié)54 第3章 Spring事務(wù)的實(shí)現(xiàn)原理55 3.1 Spring事務(wù)原理55 3.1.1 JDBC直接操作事務(wù)55 3.1.2 使用Spring管理事務(wù)56 3.1.3 Spring事務(wù)分類57 3.1.4 Spring事務(wù)超時(shí)57 3.1.5 Spring事務(wù)回滾規(guī)則57 3.2 Spring事務(wù)三大接口57 3.2.1 PlatformTransactionManager接口57 3.2.2 TransactionDefinition接口58 3.2.3 TransactionStatus接口60 3.3 Spring事務(wù)隔離級(jí)別61 3.4 Spring事務(wù)傳播機(jī)制62 3.4.1 7種事務(wù)傳播機(jī)制類型62 3.4.2 常用的事務(wù)傳播類型65 3.5 Spring事務(wù)嵌套實(shí)踐65 3.5.1 環(huán)境準(zhǔn)備66 3.5.2 實(shí)踐場景一71 3.5.3 實(shí)踐場景二72 3.5.4 實(shí)踐場景三73 3.5.5 實(shí)踐場景四74 3.5.6 實(shí)踐場景五75 3.5.7 實(shí)踐場景六76 3.5.8 實(shí)踐場景七77 3.6 Spring事務(wù)失效的場景79 3.6.1 數(shù)據(jù)庫不支持事務(wù)79 3.6.2 事務(wù)方法未被Spring管理79 3.6.3 方法沒有被public修飾79 3.6.4 同一類中的方法調(diào)用80 3.6.5 未配置事務(wù)管理器80 3.6.6 方法的事務(wù)傳播類型不支持事務(wù)81 3.6.7 不正確地捕獲異常81 3.6.8 標(biāo)注錯(cuò)誤的異常類型82 3.7 本章小結(jié)83 第4章 分布式事務(wù)的基本概念84 4.1 分布式系統(tǒng)架構(gòu)84 4.1.1 產(chǎn)生的背景84 4.1.2 架構(gòu)目標(biāo)和架構(gòu)原則85 4.2 分布式系統(tǒng)架構(gòu)演進(jìn)86 4.2.1 單體應(yīng)用架構(gòu)86 4.2.2 垂直應(yīng)用架構(gòu)87 4.2.3 分布式架構(gòu)88 4.2.4 SOA架構(gòu)89 4.2.5 微服務(wù)架構(gòu)89 4.3 分布式事務(wù)場景90 4.3.1 跨JVM進(jìn)程90 4.3.2 跨數(shù)據(jù)庫實(shí)例91 4.3.3 多服務(wù)訪問單數(shù)據(jù)庫91 4.4 數(shù)據(jù)一致性92 4.4.1 數(shù)據(jù)的一致性問題92 4.4.2 數(shù)據(jù)一致性解決方案93 4.5 本章小結(jié)93 第5章 分布式事務(wù)的理論知識(shí)94 5.1 CAP理論94 5.1.1 一致性94 5.1.2 可用性95 5.1.3 分區(qū)容忍性95 5.1.4 CAP的組合96 5.2 Base理論97 5.3 本章小結(jié)98 第二部分 分布式事務(wù)解決方案 第6章 強(qiáng)一致性分布式事務(wù)解決方案100 6.1 強(qiáng)一致性事務(wù)概述100 6.1.1 典型方案100 6.1.2 適用場景101 6.1.3 優(yōu)缺點(diǎn)101 6.2 DTP模型101 6.2.1 DTP模型的重要概念101 6.2.2 DTP模型的執(zhí)行流程102 6.3 2PC模型102 6.3.1 2PC模型的執(zhí)行流程103 6.3.2 事務(wù)執(zhí)行成功的流程103 6.3.3 事務(wù)執(zhí)行失敗的流程104 6.3.4 2PC模型存在的問題105 6.4 3PC模型105 6.4.1 事務(wù)執(zhí)行成功的流程105 6.4.2 事務(wù)執(zhí)行失敗的流程106 6.4.3 3PC模型中存在的問題108 6.5 本章小結(jié)108 第7章 終一致性分布式事務(wù)解決方案109 7.1 終一致性分布式事務(wù)概述109 7.1.1 典型方案109 7.1.2 適用場景110 7.1.3 優(yōu)缺點(diǎn)110 7.2 服務(wù)模式110 7.2.1 可查詢操作111 7.2.2 冪等操作111 7.2.3 TCC操作112 7.2.4 可補(bǔ)償操作113 7.3 TCC解決方案113 7.3.1 適用場景114 7.3.2 需要實(shí)現(xiàn)的服務(wù)模式114 7.3.3 方案的執(zhí)行流程114 7.3.4 方案的優(yōu)缺點(diǎn)115 7.3.5 需要注意的問題116 7.4 可靠消息終一致性解決方案117 7.4.1 適用場景117 7.4.2 需要實(shí)現(xiàn)的服務(wù)模式117 7.4.3 方案的執(zhí)行流程118 7.4.4 方案的優(yōu)缺點(diǎn)119 7.4.5 需要注意的問題120 7.5 努力通知型解決方案120 7.5.1 適用場景120 7.5.2 需要實(shí)現(xiàn)的服務(wù)模式121 7.5.3 方案的執(zhí)行流程121 7.5.4 方案的優(yōu)缺點(diǎn)122 7.5.5 需要注意的問題122 7.5.6 努力通知與可靠消息終一致性的區(qū)別123 7.6 本章小結(jié)123 第三部分 分布式事務(wù)原理 第8章 XA強(qiáng)一致性分布式事務(wù)原理126 8.1 X/Open DTP模型與XA規(guī)范126 8.1.1 DTP模型126 8.1.2 XA規(guī)范127 8.1.3 JTA規(guī)范127 8.1.4 XA二階段提交128 8.2 MySQL對(duì)XA規(guī)范的支持129 8.2.1 MySQL XA事務(wù)的語法129 8.2.2 MySQL XID詳解129 8.2.3 MySQL XA事務(wù)的狀態(tài)130 8.2.4 MySQL XA的問題131 8.3 XA規(guī)范的問題思考132 8.3.1 XA規(guī)范的缺陷132 8.3.2 XA流程的優(yōu)化與異常思考133 8.3.3 解決XA數(shù)據(jù)不一致的問題134 8.3.4 解決事務(wù)管理器的單點(diǎn)故障問題135 8.4 主流的解決方案135 8.5 本章小結(jié)136 第9章 TCC分布式事務(wù)原理137 9.1 TCC核心思想137 9.2 TCC實(shí)現(xiàn)原理139 9.2.1 TCC核心組成139 9.2.2 TCC核心原理140 9.3 TCC核心流程142 9.3.1 業(yè)務(wù)場景介紹142 9.3.2 Try階段流程143 9.3.3 Confirm階段流程144 9.3.4 Cancel階段流程145 9.4 TCC關(guān)鍵技術(shù)146 9.5 本章小結(jié)147 第10章 可靠消息終一致性分布式事務(wù)原理148 10.1 基本原理148 10.2 本地消息表149 10.2.1 實(shí)現(xiàn)原理149 10.2.2 優(yōu)缺點(diǎn)150 10.3 獨(dú)立消息服務(wù)151 10.3.1 實(shí)現(xiàn)原理151 10.3.2 優(yōu)缺點(diǎn)152 10.4 RocketMQ事務(wù)消息153 10.4.1 實(shí)現(xiàn)原理153 10.4.2 RocketMQ本地事務(wù)監(jiān)聽接口154 10.5 消息發(fā)送的一致性155 10.5.1 消息發(fā)送與確認(rèn)機(jī)制155 10.5.2 消息發(fā)送的不一致性156 10.5.3 如何保證消息發(fā)送的一致性157 10.6 消息接收的一致性158 10.6.1 消息接收與確認(rèn)機(jī)制158 10.6.2 消息接收的不一致性159 10.6.3 如何保證消息接收的一致性159 10.7 消息的可靠性161 10.7.1 消息發(fā)送的可靠性161 10.7.2 消息存儲(chǔ)的可靠性161 10.7.3 消息消費(fèi)的可靠性162 10.8 本章小結(jié)162 第11章 努力通知型分布式事務(wù)原理163 11.1 適用場景163 11.2 方案特點(diǎn)164 11.3 基本原理164 11.4 異常處理165 11.5 本章小結(jié)166 第四部分 分布式事務(wù)源碼與實(shí)戰(zhàn) 第12章 XA強(qiáng)一致性分布式事務(wù)解決方案源碼解析168 12.1 分布式數(shù)據(jù)一致性場景的搭建168 12.1.1 構(gòu)建環(huán)境168 12.1.2 準(zhǔn)備環(huán)境169 12.1.3 修改配置169 12.1.4 啟動(dòng)171 12.1.5 驗(yàn)證171 12.2 ShardingSphere對(duì)XA分布式事務(wù)方案的整合172 12.2.1 ShardingTransactionManager接口172 12.2.2 XATransactionManager接口174 12.2.3 DataSourceSwapper類174 12.2.4 XAConnectionWrapper接口175 12.2.5 XA事務(wù)初始化175 12.2.6 XA資源注冊(cè)176 12.3 ShardingSphere對(duì)Atomikos方案的實(shí)戰(zhàn)與源碼解析178 12.3.1 Atomikos-XA分布式事務(wù)初始化流程178 12.3.2 Atomikos-XA分布式事務(wù)Begin流程183 12.3.3 Atomikos-XA分布式事務(wù)資源注冊(cè)原理185 12.3.4 Atomikos-XA分布式事務(wù)Commit流程186 12.3.5 Atomikos-XA分布式事務(wù)Rollback流程191 12.3.6 Atomikos-XA分布式事務(wù)恢復(fù)流程193 12.4 ShardingSphere對(duì)Narayana方案的實(shí)戰(zhàn)與源碼解析198 12.4.1 Narayana環(huán)境搭建198 12.4.2 Narayana-XA分布式事務(wù)初始化流程199 12.4.3 Narayana-XA分布式事務(wù)Begin流程206 12.4.4 Narayana-XA分布式事務(wù)資源注冊(cè)208 12.4.5 Narayana-XA分布式事務(wù)Commit流程208 12.4.6 Narayana-XA分布式事務(wù)Rollback流程211 12.4.7 Narayana-XA分布式事務(wù)恢復(fù)流程212 12.5 本章小結(jié)216 第13章 Hmily-TCC分布式事務(wù)解決方案源碼解析217 13.1 Hmily-TCC分布式場景的搭建217 13.1.1 準(zhǔn)備環(huán)境218 13.1.2 下載源碼并編譯220 13.1.3 修改配置220 13.1.4 啟動(dòng)程序222 13.1.5 驗(yàn)證223 13.2 Hmily框架初始流程源碼解析223 13.2.1 加載配置225 13.2.2 初始化事務(wù)日志存儲(chǔ)229 13.2.3 初始化事務(wù)恢復(fù)調(diào)度器234 13.2.4 初始化事件分發(fā)器235 13.2.5 初始化Metrics監(jiān)控信息236 13.3 Hmily-TCC分布式事務(wù)源碼解析238 13.3.1 Try流程源碼解析239 13.3.2 Confirm流程源碼解析253 13.3.3 Cancel流程源碼解析258 13.4 Hmily對(duì)RPC框架的支持261 13.4.1 對(duì)Dubbo框架的支持261 13.4.2 對(duì)Spring Cloud框架的支持263 13.4.3 對(duì)BRPC框架的支持265 13.4.4 對(duì)Motan框架的支持267 13.4.5 對(duì)gRPC框架的支持268 13.4.6 對(duì)Sofa-RPC框架的支持270 13.4.7 對(duì)Tars框架的支持272 13.5 Hmily-TCC事務(wù)恢復(fù)源碼解析273 13.5.1 邏輯處理274 13.5.2 事務(wù)恢復(fù)275 13.6 本章小結(jié)276 第14章 XA強(qiáng)一致性分布式事務(wù)實(shí)戰(zhàn)277 14.1 場景說明277 14.2 程序模塊說明278 14.3 數(shù)據(jù)庫表設(shè)計(jì)278 14.4 程序?qū)崿F(xiàn)279 14.4.1 項(xiàng)目搭建279 14.4.2 持久層的實(shí)現(xiàn)287 14.4.3 業(yè)務(wù)邏輯層的實(shí)現(xiàn)288 14.4.4 接口層的實(shí)現(xiàn)289 14.4.5 項(xiàng)目啟動(dòng)類的實(shí)現(xiàn)290 14.5 測試程序290 14.6 本章小結(jié)292 第15章 TCC分布式事務(wù)實(shí)戰(zhàn)293 15.1 場景說明293 15.2 程序模塊說明294 15.3 數(shù)據(jù)庫表設(shè)計(jì)295 15.4 實(shí)現(xiàn)項(xiàng)目公共模塊297 15.4.1 項(xiàng)目搭建297 15.4.2 持久層的實(shí)現(xiàn)300 15.4.3 Dubbo接口的定義304 15.5 實(shí)現(xiàn)轉(zhuǎn)出銀行微服務(wù)305 15.5.1 項(xiàng)目搭建305 15.5.2 業(yè)務(wù)邏輯層的實(shí)現(xiàn)311 15.5.3 接口層的實(shí)現(xiàn)313 15.5.4 項(xiàng)目啟動(dòng)類的實(shí)現(xiàn)313 15.6 實(shí)現(xiàn)轉(zhuǎn)入銀行微服務(wù)314 15.6.1 業(yè)務(wù)邏輯層的實(shí)現(xiàn)314 15.6.2 項(xiàng)目啟動(dòng)類的實(shí)現(xiàn)315 15.7 測試程序316 15.8 本章小結(jié)318 第16章 可靠消息終一致性分布式事務(wù)實(shí)戰(zhàn)319 16.1 場景說明319 16.2 程序模塊說明321 16.3 RocketMQ環(huán)境搭建與測試321 16.3.1 搭建Java環(huán)境321 16.3.2 搭建RocketMQ環(huán)境322 16.3.3 測試RocketMQ環(huán)境324 16.4 數(shù)據(jù)庫表設(shè)計(jì)326 16.5 實(shí)現(xiàn)訂單微服務(wù)328 16.5.1 項(xiàng)目搭建328 16.5.2 持久層的實(shí)現(xiàn)333 16.5.3 業(yè)務(wù)邏輯層的實(shí)現(xiàn)335 16.5.4 接口層的實(shí)現(xiàn)338 16.5.5 項(xiàng)目啟動(dòng)類的實(shí)現(xiàn)338 16.6 實(shí)現(xiàn)庫存微服務(wù)339 16.6.1 項(xiàng)目搭建339 16.6.2 持久層的實(shí)現(xiàn)339 16.6.3 業(yè)務(wù)邏輯層的實(shí)現(xiàn)341 16.6.4 項(xiàng)目啟動(dòng)類的實(shí)現(xiàn)343 16.7 測試程序343 16.8 本章小結(jié)345 第17章 努力通知型分布式事務(wù)實(shí)戰(zhàn)347 17.1 場景說明347 17.2 程序模塊說明348 17.3 數(shù)據(jù)庫表設(shè)計(jì)348 17.4 實(shí)現(xiàn)賬戶微服務(wù)350 17.4.1 項(xiàng)目搭建350 17.4.2 持久層的實(shí)現(xiàn)355 17.4.3 業(yè)務(wù)邏輯層的實(shí)現(xiàn)358 17.4.4 接口層的實(shí)現(xiàn)360 17.4.5 啟動(dòng)類的實(shí)現(xiàn)360 17.5 實(shí)現(xiàn)充值微服務(wù)361 17.5.1 項(xiàng)目搭建與持久層的實(shí)現(xiàn)361 17.5.2 業(yè)務(wù)邏輯層的實(shí)現(xiàn)361 17.5.3 接口層的實(shí)現(xiàn)362 17.5.4 啟動(dòng)類的實(shí)現(xiàn)363 17.6 測試程序363 17.7 本章小結(jié)365
你還可能感興趣
我要評(píng)論
|