RocketMQ分布式消息中間件:核心原理與最佳實踐
定 價:79 元
- 作者:李偉
- 出版時間:2020/7/1
- ISBN:9787121392672
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP393.07
- 頁碼:276
- 紙張:
- 版次:01
- 開本:16開
本書源碼以RocketMQ 4.2.0和RocketMQ 4.3.0為基礎,從RocketMQ的實際使用到RocketMQ的源碼分析,再到RocketMQ企業(yè)落地實踐方案,逐步講解。使讀者由淺入深地了解RocketMQ。本書在源碼分析過程中,先講整體流程,再按模塊、步驟進行詳細講解,希望讀者在閱讀時能舉一反三,能知其然且知其所以然。本書總共九章,分為五部分,第一部分講解消息隊列入門和RocketMQ生產、消費原理與最佳實踐;第二部分從整體角度講解RocketMQ架構;第三部分講解RocketMQ各個組件的基本原理;第四部分深入RocketMQ,講解如何閱讀源代碼、如何進行企業(yè)實踐;第五部分是附錄,包含Namesrv、Broker的核心參數(shù)配置說明和Exporter監(jiān)控指標注釋。希望讀者在平時的工作中能熟悉、借鑒、參考RocketMQ的優(yōu)秀設計理念,在技術能力上更進一步,在工作中更好地服務公司。希望讀者在平時的工作中能熟悉、借鑒、參考RocketMQ的優(yōu)秀設計理念,在技術能力上更進一步,在工作中更好地服務公司。
李偉Apache RocketMQ北京社區(qū)聯(lián)合發(fā)起人,RocketMQ項目Commiter,RocketMQ社區(qū)Python客戶端項目負責人。目前就職于北京某在線教育公司,擔任數(shù)據(jù)中間件架構師,負責公司內部消息和數(shù)據(jù)流平臺,對分布式存儲系統(tǒng)設計和研發(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的生產者原理和最佳實踐 14
2.1 生產者原理 15
2.1.1 生產者概述 15
2.1.2 消息結構和消息類型 16
2.1.3 生產者高可用 17
2.2 生產者啟動流程 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ā)送事務消息 38
2.4.5 發(fā)送單向消息 40
2.4.6 批量消息發(fā)送 41
2.5 生產者最佳實踐總結 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 為什么要設計過濾功能 86
3.6.2 RocketMQ支持消息過濾 86
3.7 消費者最佳實踐總結 91
第4章 RocketMQ架構和部署最佳實踐 94
4.1 RocketMQ架構 95
4.2 常用的部署拓撲和部署實踐 96
4.2.1 常用的拓撲圖 96
4.2.2 同步復制、異步復制和同步刷盤、異步刷盤 97
4.2.3 部署實踐 98
第5章 Namesrv 102
5.1 Namesrv概述 103
5.1.1 什么是Namesrv 103
5.1.2 Namesrv核心數(shù)據(jù)結構和API 103
5.1.3 Namesrv和Zookeeper 105
5.2 Namesrv架構 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存儲目錄結構 116
6.1.3 Broker啟動和停止流程 117
6.2 Broker存儲機制 125
6.2.1 Broker消息存儲結構 126
6.2.2 Broker消息存儲機制 130
6.2.3 Broker讀寫分離機制 150
6.3 Broker CommitLog索引機制 155
6.3.1 索引的數(shù)據(jù)結構 155
6.3.2 索引的構建過程 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的關機恢復機制 174
6.6.1 Broker關機恢復概述 174
6.6.2 Broker關機恢復流程 177
第7章 RocketMQ特性——事務消息與延遲消息機制 182
7.1 事務消息概述 183
7.2 事務消息機制 184
7.2.1 生產者發(fā)送事務消息和執(zhí)行本地事務 184
7.2.2 Broker存儲事務消息 188
7.2.3 Broker回查事務消息 191
7.2.4 Broker提交或回滾事務消息 197
7.3 延遲消息概述 201
7.4 延遲消息機制 203
7.4.1 延遲消息存儲機制 203
7.4.2 延遲消息投遞機制 205
第8章 RocketMQ源代碼閱讀 208
8.1 RocketMQ源代碼結構概述 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)控和報警架構 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