RocketMQ分布式消息中間件:核心原理與最佳實踐
定 價:79 元
- 作者:李偉
- 出版時間:2020/7/1
- ISBN:9787121392672
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP393.07
- 頁碼:276
- 紙張:
- 版次:01
- 開本:16開
本書源碼以RocketMQ 4.2.0和RocketMQ 4.3.0為基礎(chǔ),從RocketMQ的實際使用到RocketMQ的源碼分析,再到RocketMQ企業(yè)落地實踐方案,逐步講解。使讀者由淺入深地了解RocketMQ。本書在源碼分析過程中,先講整體流程,再按模塊、步驟進行詳細講解,希望讀者在閱讀時能舉一反三,能知其然且知其所以然。本書總共九章,分為五部分,第一部分講解消息隊列入門和RocketMQ生產(chǎn)、消費原理與最佳實踐;第二部分從整體角度講解RocketMQ架構(gòu);第三部分講解RocketMQ各個組件的基本原理;第四部分深入RocketMQ,講解如何閱讀源代碼、如何進行企業(yè)實踐;第五部分是附錄,包含Namesrv、Broker的核心參數(shù)配置說明和Exporter監(jiān)控指標注釋。希望讀者在平時的工作中能熟悉、借鑒、參考RocketMQ的優(yōu)秀設(shè)計理念,在技術(shù)能力上更進一步,在工作中更好地服務(wù)公司。希望讀者在平時的工作中能熟悉、借鑒、參考RocketMQ的優(yōu)秀設(shè)計理念,在技術(shù)能力上更進一步,在工作中更好地服務(wù)公司。
李偉Apache RocketMQ北京社區(qū)聯(lián)合發(fā)起人,RocketMQ項目Commiter,RocketMQ社區(qū)Python客戶端項目負責(zé)人。目前就職于北京某在線教育公司,擔(dān)任數(shù)據(jù)中間件架構(gòu)師,負責(zé)公司內(nèi)部消息和數(shù)據(jù)流平臺,對分布式存儲系統(tǒng)設(shè)計和研發(fā)有豐富經(jīng)驗,熱衷于知識分享和社區(qū)活動。座右銘:Programming is not only a way to problems,but also to think!
目 錄
第1章 RoketMQ綜述 1
1.1 什么是消息隊列 2
1.2 為什么需要消息隊列 4
1.2.1 削峰填谷 4
1.2.2 程序間解耦 5
1.2.3 異步處理 6
1.2.4 數(shù)據(jù)的最終一致性 6
1.3 常見消息隊列 7
1.4 RocketMQ的發(fā)展史與未來 9
1.4.1 RocketMQ的發(fā)展史 9
1.4.2 Apache RocketMQ的未來 11
第2章 RocketMQ的生產(chǎn)者原理和最佳實踐 14
2.1 生產(chǎn)者原理 15
2.1.1 生產(chǎn)者概述 15
2.1.2 消息結(jié)構(gòu)和消息類型 16
2.1.3 生產(chǎn)者高可用 17
2.2 生產(chǎn)者啟動流程 22
2.3 消息發(fā)送流程 32
2.4 發(fā)送消息最佳實踐 36
2.4.1 發(fā)送普通消息 36
2.4.2 發(fā)送順序消息 37
2.4.3 發(fā)送延遲消息 37
2.4.4 發(fā)送事務(wù)消息 38
2.4.5 發(fā)送單向消息 40
2.4.6 批量消息發(fā)送 41
2.5 生產(chǎn)者最佳實踐總結(jié) 42
第3章 RocketMQ的消費流程和最佳實踐 44
3.1 消費者概述 45
3.1.1 消費流程 45
3.1.2 消費模式 46
3.1.3 可靠消費 48
3.2 消費者啟動機制 50
3.3 消費者的Rebalance機制 58
3.4 消費進度保存機制 65
3.5 消費方式 70
3.5.1 Pull消費流程 71
3.5.2 Push消費流程 72
3.6 消息過濾 86
3.6.1 為什么要設(shè)計過濾功能 86
3.6.2 RocketMQ支持消息過濾 86
3.7 消費者最佳實踐總結(jié) 91
第4章 RocketMQ架構(gòu)和部署最佳實踐 94
4.1 RocketMQ架構(gòu) 95
4.2 常用的部署拓撲和部署實踐 96
4.2.1 常用的拓撲圖 96
4.2.2 同步復(fù)制、異步復(fù)制和同步刷盤、異步刷盤 97
4.2.3 部署實踐 98
第5章 Namesrv 102
5.1 Namesrv概述 103
5.1.1 什么是Namesrv 103
5.1.2 Namesrv核心數(shù)據(jù)結(jié)構(gòu)和API 103
5.1.3 Namesrv和Zookeeper 105
5.2 Namesrv架構(gòu) 106
5.2.1 Namesrv組件 106
5.2.2 Namesrv啟動流程 108
5.2.3 Namesrv停止流程 110
5.3 RocketMQ的路由原理 111
5.3.1 路由注冊 111
5.3.2 路由剔除 112
第6章 Broker存儲機制 114
6.1 Broker概述 115
6.1.1 什么是Broker 115
6.1.2 Broker存儲目錄結(jié)構(gòu) 116
6.1.3 Broker啟動和停止流程 117
6.2 Broker存儲機制 125
6.2.1 Broker消息存儲結(jié)構(gòu) 126
6.2.2 Broker消息存儲機制 130
6.2.3 Broker讀寫分離機制 150
6.3 Broker CommitLog索引機制 155
6.3.1 索引的數(shù)據(jù)結(jié)構(gòu) 155
6.3.2 索引的構(gòu)建過程 158
6.3.3 索引如何使用 159
6.4 Broker過期文件刪除機制 162
6.4.1 CommitLog文件的刪除過程 162
6.4.2 Consume Queue、Index File文件的刪除過程 166
6.5 Broker主從同步機制 167
6.5.1 主從同步概述 168
6.5.2 主從同步流程 169
6.6 Broker的關(guān)機恢復(fù)機制 174
6.6.1 Broker關(guān)機恢復(fù)概述 174
6.6.2 Broker關(guān)機恢復(fù)流程 177
第7章 RocketMQ特性——事務(wù)消息與延遲消息機制 182
7.1 事務(wù)消息概述 183
7.2 事務(wù)消息機制 184
7.2.1 生產(chǎn)者發(fā)送事務(wù)消息和執(zhí)行本地事務(wù) 184
7.2.2 Broker存儲事務(wù)消息 188
7.2.3 Broker回查事務(wù)消息 191
7.2.4 Broker提交或回滾事務(wù)消息 197
7.3 延遲消息概述 201
7.4 延遲消息機制 203
7.4.1 延遲消息存儲機制 203
7.4.2 延遲消息投遞機制 205
第8章 RocketMQ源代碼閱讀 208
8.1 RocketMQ源代碼結(jié)構(gòu)概述 209
8.2 RocketMQ源代碼編譯 212
8.3 如何閱讀源代碼 214
8.4 源代碼閱讀范例:通過消息id查詢消息 216
第9章 RocketMQ企業(yè)最佳實踐 224
9.1 RocketMQ落地概述 225
9.1.1 為什么選擇RocketMQ 225
9.1.2 如何做RocketMQ的集群管理 226
9.2 RocketMQ集群管理 230
9.2.1 Topic管理 230
9.2.2 消費者管理 235
9.3 RocketMQ集群監(jiān)控和報警 240
9.3.1 監(jiān)控和報警架構(gòu) 240
9.3.2 基于Grafana監(jiān)控 242
9.3.3 基于Prometheus的報警 243
9.4 RocketMQ集群遷移 244
9.5 RocketMQ測試環(huán)境實踐 245
9.6 RocketMQ接入實踐 247
9.6.1 Spring接入RocketMQ 247
9.6.2 Python接入RocketMQ 249
附錄 252