RocketMQ實戰

RocketMQ實戰

《RocketMQ實戰》是2022年人民郵電出版社出版的圖書,作者是丁威、梁勇。

基本介紹

  • 中文名:RocketMQ實戰
  • 作者:丁威、梁勇
  • 出版時間:2022年8月
  • 出版社:人民郵電出版社
  • ISBN:9787115596857
  • 類別:圖書>計算機/網路>程式設計>其他
  • 開本:128 開
  • 裝幀:平裝
  • 叢書名:圖靈原創
內容簡介,圖書目錄,作者簡介,

內容簡介

RocketMQ 是一款高性能、高吞吐量、低延遲的訊息中間件。數年來,RocketMQ 承載了阿里“雙十一”的大部分業務,並憑藉其優秀性能得到了架構師的青睞,成為網際網路行業的訊息中間件。本書從使用場景入手,介紹如何使用RocketMQ,使用過程中會遇到什麼問題,如何解決這些問題,以及為什麼可以這樣解決。本書強調實戰與理論結合,將原理穿插在實戰中講解,旨在讓每一位RocketMQ初學者通過對本書的學習,快速“升級打怪”,成為RocketMQ 領域的佼佼者。

圖書目錄

第 1章 認識Apache RocketMQ1
1.1 RocketMQ 快速入門 1
1.1.1 下載安裝包 1
1.1.2 啟動服務2
1.1.3 創建主題3
1.1.4 創建消費組 3
1.1.5 傳送訊息4
1.1.6 消費訊息4
1.1.7 調試RocketMQ4
1.2 基本術語7
1.2.1 訊息相關術語 7
1.2.2 主題相關術語 8
1.2.3 消費相關術語 9
1.3 RocketMQ 架構設計10
1.3.1 物理部署結構10
1.3.2 高吞吐量與低延遲的權衡 11
1.3.3 高並發讀寫 11
1.3.4 高可用性與伸縮性 12
1.3.5 高可靠存儲 12
1.4 RocketMQ的典型使用場景12
1.4.1 訊息通道 12
1.4.2 削峰填谷 13
1.4.3 順序消費場景13
1.4.4 廣播消費場景13
1.4.5 事務訊息場景13
1.5 本章小結 13
第 2章 RocketMQ訊息傳送 14
2.1 詳解訊息傳送API 14
2.1.1 傳送接口分類15
2.1.2 集群管理接口說明16
2.1.3 客戶端配置說明 17
2.1.4 DefaultMQProducer 參數說明 18
2.2 重要參數與實戰建議18
2.2.1 傳送重試機制18
2.2.2 延遲故障規避19
2.2.3 ClientId的使用陷阱 20
2.2.4 客戶端日誌注意事項 24
2.3 訊息傳送的典型使用方式 25
2.3.1 傳送示例詳解25
2.3.2 傳送佇列選擇26
2.3.3 通過指定訊息Key傳送 28
2.3.4 通過指定訊息tag 傳送 29
2.3.5 訊息msgId 詳解 30
2.4 訊息傳送的常見錯誤 31
2.4.1 找不到主題路由信息 31
2.4.2 訊息傳送逾時34
2.4.3 系統繁忙 36
2.5 本章小結 40
第3章 RocketMQ訊息消費 41
3.1 訊息消費概述 41
3.1.1 消費佇列負載機制與重平衡 42
3.1.2 並發消費模型42
3.1.3 消費進度提交機制 43
3.2 訊息消費API與版本的演變說明 45
3.2.1 訊息消費類圖45
3.2.2 訊息消費API 簡單使用示例 49
3.2.3 訊息消費API版本的演變說明 52
3.3 DefaultMQPushConsumer的核心參數與工作原理 53
3.3.1 DefaultMQPushConsumer核心參數與工作原理 53
3.3.2 訊息消費佇列負載算法 55
3.3.3 PUSH 模型的訊息拉取機制 58
3.3.4 訊息消費進度提交 59
3.4 DefaultMQPushConsumer使用示例與注意事項 60
3.4.1 ConsumeFromWhere的注意事項 60
3.4.2 基於多機房的佇列負載算法62
3.4.3 消費組執行緒數設定注意事項 66
3.4.4 批量消費注意事項 67
3.4.5 訂閱關係不一致導致訊息丟失 70
3.4.6 消費者ClientId 不導致不消費 72
3.4.7 消費重試次數設定 73
3.4.8 分區消費不均衡問題 74
3.5 DefaultLitePullConsumer 核心參數與實戰 75
3.5.1 DefaultLitePullConsumer類圖 75
3.5.2 DefaultLitePullConsumer簡單使用示例80
3.5.3 Lite PULL 與 PUSH模式的對比 80
3.5.4 長輪詢實現原理 81
3.6 結合實際場景再聊DefaultLitePullConsumer 的使用 83
3.6.1 場景描述 83
3.6.2 PUSH 與PULL 模式選型 83
3.6.3 方案設計 83
3.6.4 代碼實現與代碼解讀 84
3.7 結合實際場景順序消費、訊息過濾實戰 91
3.7.1 順序消費 91
3.7.2 訊息過濾實戰95
3.8 訊息消費積壓問題的排查實戰 97
3.8.1 問題描述 97
3.8.2 問題分析與解決方案 98
3.8.3 執行緒棧分析經驗 101
3.8.4 RocketMQ 消費端的限流機制 101
3.8.5 RocketMQ 服務端性能自查技巧 103
3.9 本章小結 104
第4章 rocketmq-spring 框架 105
4.1 rocketmq-spring 框架簡介105
4.2 使用案例 106
4.2.1 引入依賴包 106
4.2.2 如何使用訊息傳送107
4.2.3 訊息消費使用示例112
4.3 本章小結 114
第5章 RocketMQ的設計原理 115
5.1 Name Server的設計理念 115
5.1.1 路由註冊、剔除機制 115
5.1.2 Name Server 設計的“缺陷”117
5.2 訊息傳送 120
5.2.1 訊息傳送高可用機制 120
5.2.2 同步複製 122
5.2.3 事務訊息 124
5.2.4 服務端執行緒模型 126
5.2.5 服務端快速失敗機制 127
5.3 訊息存儲 128
5.3.1 存儲檔案布局 128
5.3.2 順序寫137
5.3.3 記憶體映射與頁快取137
5.3.4 核心級讀寫分離 138
5.3.5 刷盤機制 140
5.3.6 檔案恢復 143
5.3.7 零拷貝147
5.4 訊息消費 147
5.4.1 並發消費拉取模型147
5.4.2 消費進度管理機制150
5.4.3 訊息過濾 151
5.4.4 順序消費 152
5.4.5 延遲訊息 153
5.4.6 消費端限流機制 154
5.4.7 服務端限流機制 155
5.5 集群 156
5.5.1 主從同步 157
5.5.2 主從切換 159
5.5.3 長輪詢機制 165
5.5.4 訊息軌跡 165
5.6 本章小結 168
第6章 RocketMQ 線上環境部署 169
6.1 集群資源規劃169
6.1.1 硬體資源選擇 169
6.1.2 集群架構選擇 170
6.2 Name Server 集群搭建 171
6.2.1 啟動與關閉 171
6.2.2 堆記憶體自定義 172
6.2.3 生產環境建議 172
6.3 Master-Slave主從架構集群搭建 172
6.3.1 Master 節點修改配置 172
6.3.2 Slave 節點修改配置 174
6.3.3 調整日誌路徑 175
6.3.4 JVM 記憶體分配 175
6.3.5 節點啟動與關閉 175
6.4 搭建多副本集群 176
6.4.1 多副本集群搭建 176
6.4.2 重新選主 178
6.4.3 參數說明 178
6.4.4 多副本結語 178
6.5 RocketMQ-Console 安裝 179
6.6 參數調優 180
6.6.1 Broker 參數調優 180
6.6.2 系統參數調優 181
6.7 本章小結 183
第7章 RocketMQ 運維實戰 184
7.1 運維命令匯總184
7.1.1 集群命令匯總 184
7.1.2 主題命令匯總 186
7.1.3 消費組命令匯總 189
7.1.4 Broker 命令匯總 192
7.1.5 訊息命令匯總 198
7.2 集群性能壓力測試202
7.2.1 壓力測試腳本參數說明203
7.2.2 性能壓力測試實戰記錄203
7.3 集群平滑升級與擴縮容 214
7.3.1 優雅摘除節點 214
7.3.2 平滑擴縮容 215
7.3.3 注意事項 217
7.4 查詢死信佇列訊息內容 218
7.5 本章小結 220
第8章 RocketMQ 監控與治理221
8.1 監控設計理念221
8.2 集群核心監控項 222
8.2.1 監控項設計 222
8.2.2 監控開發實戰 224
8.3 主題消費組核心監控項 228
8.3.1 監控項設計 229
8.3.2 監控開發實戰 230
8.4 告警設計與實戰 242
8.4.1 告警項設計 242
8.4.2 告警開發實戰 244
8.5 本章小結 248
第9章 RocketMQ 高並發編程技巧 249
9.1 讀寫鎖使用場景 249
9.2 信號量使用技巧 251
9.3 同步轉異步編程技巧 254
9.4 CompletableFuture 使用技巧 255
9.5 Netty網路編程 258
9.5.1 Netty網路編程要點 262
9.5.2 執行緒隔離機制 271
9.6 本章小結 272
第 10章 訊息方案案例 273
10.1 訊息流量隔離方案273
10.2 任意時間訊息延遲方案 275
10.3 訊息資源容災遷移方案 277
10.3.1 集群同城跨可用區部署 277
10.3.2 資源遷移設計 278
10.4 跨集群複製方案設計 279
10.5 本章小結 280
第 11章 生產環境故障回顧 281
11.1 集群節點進程神秘消失 281
11.1.1 現象描述281
11.1.2 原因分析281
11.1.3 解決方法282
11.2 節點CPU 突刺故障排查282
11.2.1 現象描述282
11.2.2 原因分析295
11.2.3 解決辦法285
11.3 集群頻繁抖動與傳送逾時 285
11.3.1 現象描述285
11.3.2 原因分析287
11.3.3 解決辦法288
11.4 客戶端消費性能低 288
11.4.1 現象描述288
11.4.2 原因分析288
11.4.3 解決辦法289
11.5 消費佇列阻塞應急處理 289
11.5.1 現象描述289
11.5.2 原因分析290
11.5.3 解決辦法292
11.6 本章小結 293

作者簡介

(待更新)丁威,《RocketMQ技術內幕》聯合作者,熱衷於中間件領域的技術分享,維護“中間件興趣圈”公眾號,榮獲RocketMQ官方社區優秀布道師、CSDN2020部落格執之星Top2等榮譽稱號。目前擔任中通快遞技術平台部資深架構師,主要負責全鏈路壓測、訊息中間件、數據同步等產品的研發與落地,擁有千億級訊息集群的運維經驗,不僅實踐經驗豐富,而且對其原始碼有深入且系統的研究。梁勇,哈囉出行高級技術專家,負責服務框架和訊息平台,參與了《RocketMQ技術內幕》審稿工作。專注後端中間件方向,公眾號“瓜農老梁”維護者。

相關詞條

熱門詞條

聯絡我們