RocketMQ 實戰

丁威 梁勇

  • 出版商: 人民郵電
  • 出版日期: 2022-08-01
  • 定價: $599
  • 售價: 8.5$509
  • 語言: 簡體中文
  • 頁數: 293
  • ISBN: 7115596859
  • ISBN-13: 9787115596857
  • 下單後立即進貨 (約4週~6週)

  • RocketMQ 實戰-preview-1
  • RocketMQ 實戰-preview-2
RocketMQ 實戰-preview-1

買這商品的人也買了...

商品描述

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

作者簡介

丁威,《RocketMQ技术内幕》联合作者,热衷于中间件领域的技术分享,维护“中间件兴趣圈”公众号,荣获RocketMQ官方社区优秀布道师、CSDN2020博客执之星Top2等荣誉称号。目前担任中通快递技术平台部资深架构师,主要负责全链路压测、消息中间件、数据同步等产品的研发与落地,拥有千亿级消息集群的运维经验,不仅实践经验丰富,而且对其源代码有深入且系统的研究。

 

梁勇,哈啰出行高级技术专家,负责服务框架和消息平台,参与了《RocketMQ技术内幕》审稿工作。专注后端中间件方向,公众号“瓜农老梁”维护者。

目錄大綱

第 1章 認識Apache RocketMQ 1

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 調試RocketMQ 4

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