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