《RocketMQ實戰與原理解析》是2018年機械工業出版社出版的圖書,作者是楊開元。
基本介紹
- 書名:RocketMQ實戰與原理解析
- 作者:楊開元
- 出版社:機械工業出版社
- 出版時間:2018年6月
- 頁數:153 頁
- 定價:59 元
- 開本:16 開
- 裝幀:平裝
- ISBN:978-7-111-60025-1
內容簡介,作者簡介,圖書目錄,
內容簡介
本書由雲棲社區官方出品。
全書共13章,在邏輯上分為兩大部分:
第一部分(第1~8章):RocketMQ實戰
第1~2章詳細講解了RocketMQ如何快速入門,以及在生產環境下的配置和使用;
第3~4章具體講解了不同類型生產者和消費者的特點,以及分散式訊息佇列的協調者NameServer;
第5章從訊息的存儲、傳送、複製和高可用等多個維度講解了RocketMQ的內部機制;
第6章討論了訊息的可靠性,如何讓訊息佇列在滿足業務邏輯需求的同時穩定、可靠地長期運行;
第7章討論了在大流量場景下,吞吐量優先時RocketMQ的使用方法;
第8章介紹RocketMQ與SpringBoot、Spark、Flink以及自定義的運維工具等其它系統的對接方法;
第二部分(第9~13章):RocketMQ原理
首先對RocketMQ的源碼結構進行了整體介紹,然後深入地分析了NameServer、各種常用消費類、主從同步機制,以及基於Netty的通信的源碼實現。掌握這些原始碼以後,讀者可以快速定製屬於自己的具有特殊功能的訊息中間件。
作者簡介
楊開元
阿里巴巴數據專家,畢業於北京大學,有10年IT行業研發經驗。對RocketMQ有深入的研究,是RocketMQ源碼貢獻者。曾就職於甲骨文和獵豹移動,專注於大數據和實時計算。在大量的工作實踐中,對MySQL、J2EE、JVM、Spring、Hadoop、Kafka、Storm、Flink都有深入研究。喜歡剖析源碼,分析原理,為開源項目貢獻代碼。
圖書目錄
推薦序
前言
第1章 快速入門1
1.1 訊息佇列功能介紹1
1.1.1 套用解耦1
1.1.2 流量消峰2
1.1.3 訊息分發3
1.2 RocketMQ簡介4
1.3 快速上手RocketMQ4
1.3.1 RocketMQ的下載、安裝和配置 5
1.3.2 啟動訊息佇列服務6
1.3.3 用命令行傳送和接收訊息6
1.3.4 關閉訊息佇列6
1.4 本章小結7
第2章 生產環境下的配置和使用8
2.1 RocketMQ各部分角色演員介紹8
2.2 多機集群配置和部署9
2.2.1 啟動多個NameServer和Broker10
2.2.2 配置參數介紹11
2.3 傳送/接收訊息示例13
2.4 常用管理命令15
2.5 通過圖形界面管理集群21
2.6 本章小結22
第3章 用適合的方式傳送和接收訊息23
3.1 不同類型的消費者23
3.1.1 DefaultMQPushConsumer的使用23
3.1.2 DefaultMQPushConsumer的處理流程25
3.1.3 DefaultMQPushConsumer的流量控制28
3.1.4 DefaultMQPullConsumer30
3.1.5 Consumer的啟動、關閉流程32
3.2 不同類型的生產者33
3.2.1 DefaultMQProducer 34
3.2.2 傳送延遲訊息36
3.2.3 自定義訊息傳送規則36
3.2.4 對事務的支持37
3.3 如何存儲佇列位置信息38
3.4 自定義日誌輸出42
3.5 本章小結44
第4章 分散式訊息佇列的協調者45
4.1 NameServer的功能45
4.1.1 集群狀態的存儲結構46
4.1.2 狀態維護邏輯47
4.2 各個角色間的互動流程48
4.2.1 互動流程源碼分析48
4.2.2 為何不用ZooKeeper50
4.3 底層通信機制50
4.3.1 Remoting模組51
4.3.2 協定設計和編解碼54
4.3.3 Netty庫56
4.4 本章小結56
第5章 訊息佇列的核心機制57
5.1 訊息存儲和傳送57
5.2 訊息存儲結構58
5.3 高可用性機制60
5.4 同步刷盤和異步刷盤61
5.5 同步複製和異步複製62
5.6 本章小結63
第6章 可靠性優先的使用場景64
6.1 順序訊息64
6.1.1 全局順序訊息64
6.1.2 部分順序訊息65
6.2 訊息重複問題67
6.3 動態增減機器67
6.3.1 動態增減NameServer67
6.3.2 動態增減Broker69
6.4 各種故障對訊息的影響70
6.5 訊息優先權72
6.6 本章小結73
第7章 吞吐量優先的使用場景74
7.1 在Broker端進行訊息過濾74
7.1.1 訊息的Tag和Key74
7.1.2 通過Tag進行過濾75
7.1.3 用SQL表達式的方式進行過濾75
7.1.4 Filter Server方式過濾77
7.2 提高Consumer處理能力78
7.3 Consumer的負載均衡80
7.3.1 DefaultMQPushConsumer的負載均衡80
7.3.2 DefaultMQPullConsumer的負載均衡81
7.4 提高Producer的傳送速度83
7.5 系統性能調優的一般流程85
7.6 本章小結87
第8章 和其他系統互動88
8.1 在SpringBoot中使用RocketMQ88
8.1.1 直接使用88
8.1.2 通過Spring Messaging方式使用90
8.2 直接使用雲上RocketMQ91
8.3 RocketMQ與Spark、Flink對接93
8.4 自定義開發運維工具93
8.4.1 開源版本運維工具功能介紹94
8.4.2 基於Tools模組開發自定義運維工具95
8.5 本章小結96
第9章 首個Apache中間件頂級項目97
9.1 RocketMQ的前世今生97
9.2 Apache頂級項目(TLP)之路98
9.3 源碼結構99
9.4 不斷疊代的代碼100
9.5 本章小結102
第10章 NameServer源碼解析103
10.1 模組入口代碼的功能103
10.1.1 入口函式103
10.1.2 解析命令行參數104
10.1.3 初始化NameServer的Controller105
10.2 NameServer的總控邏輯106
10.3 核心業務邏輯處理107
10.4 集群狀態存儲109
10.5 本章小結111
第11章 最常用的消費類112
11.1 整體流程112
11.1.1 上層接口類112
11.1.2 DefaultMQPushConsumer的實現者114
11.1.3 獲取訊息邏輯116
11.2 訊息的並發處理118
11.2.1 並發處理過程118
11.2.2 ProcessQueue對象121
11.3 生產者消費者的底層類122
11.3.1 MQClientInstance類的創建規則122
11.3.2 MQClientInstance類的功能124
11.4 本章小結127
第12章 主從同步機制128
12.1 同步屬性信息128
12.2 同步訊息體130
12.3 sync_master和async_master132
12.4 本章小結134
第13章 基於Netty的通信實現135
13.1 Netty介紹135
13.2 Netty架構總覽136
13.2.1 重新實現ByteBuffer136
13.2.2 統一的異步 I/O接口137
13.2.3 基於攔截鏈模式的事件模型138
13.2.4 高級組件139
13.3 Netty用法示例140
13.3.1 Discard伺服器140
13.3.2 查看收到的數據144
13.4 RocketMQ基於Netty的通信功能實現145
13.4.1 頂層抽象類145
13.4.2 自定義協定148
13.4.3 基於Netty的Server和Client151
13.5 本章小結152