RocketMQ 技術內幕 : RocketMQ 架構設計與實現原理

丁威, 周繼鋒

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

商品描述

內容簡介
本書由RocketMQ社區早期的佈道者和技術專家撰寫,Apache RocketMQ創始人/Linux OpenMessaging創始人兼主席/Alibaba Messaging開源技術負責人馮嘉的高度評價並作序推薦。
源碼角度,本書對RocketMQ的核心技術架構,以及消息發送、消息存儲、消息消費、消息過濾、順序消息、主從同步(HA)、事務消息等主要功能模塊的實現原理進行了深入分析,同時展示了源碼閱讀的相關技巧;應用層面,本書總結了大量RocketMQ的使用技巧。通過本書,讀者將深入理解消息中間件和底層網絡通訊機制的核心知識點。
全書共10章,分三個部分:
第一部分 準備篇(第1章)
首先介紹了RocketMQ源代碼的獲取、結構和調試,然後介紹了RocketMQ的設計理念和目標。
第二部分 實現篇(第2~8章)
這是本書的核心部分,從源代碼的角度詳細分析了消息發送、消息存儲、消息消費、消息過濾、順序消息、主從同步(HA)、事務消息等主要功能模塊的架構設計和實現原理。
第三部分 實例篇(第9-10章)
通過示例展示RocketMQ的使用技巧,並著重講解了RocketMQ的監控命令與監控管理界面。

作者簡介

丁威
Java、分佈式服務架構、中間件等多個領域的技術專家,擅長高並發編程、Netty網絡編程、RocketMQ等技術,國內知名開源數據庫中間件MyCAT的志願者和技術顧問。目前擔任上海優速物流的技術專家和經營支撐部門的架構師。對RocketMQ有非常深入的研究,是RocketMQ社區的佈道師,不僅實踐經驗豐富,而且對其源代碼有深入且系統的研究。
周繼鋒
擁有10餘年大型項目架構設計及實戰經驗,曾主導過眾多分佈式系統、微服務及大數據項目。在高並發、高可用、高可擴展性、高可維護性等領域有豐富經驗,對Hadoop、Spark源碼進行過深度分析並具有豐富的實戰經驗。曾在ERP、醫學、互聯網行業擔任工程師、架構師、技術總監等職務,煉數成金高級講師及國內知名的開源分佈式數據庫中間件Mycat負責人,也是《分佈式數據庫架構及企業實踐:基於Mycat中間件》書籍的作者。
 

目錄大綱

推薦序
前言
第1章閱讀源代碼前的準備1 
1.1獲取和調試RocketMQ的源代碼1 
1.1.1 Eclipse獲取RocketMQ源碼2 
1.1.2 Eclipse調試RocketMQ源碼9 
1.1.3 IntelliJ IDEA獲取RocketMQ源碼15 
1.1.4 IntelliJ IDEA調試RocketMQ源碼20 
1.2 RocketMQ源代碼的目錄結構27 
1.3 RocketMQ的設計理念和目標28 
1.3.1設計理念28 
1.3.2設計目標28 
第2章RocketMQ路由中心NameServer 31 
2.1 NameServer架構設計31 
2.2 NameServer啟動流程32 
2.3 NameServer路由註冊、故障剔除36 
2.3.1路由元信息36 
2.3.2路由註冊38 
2.3.3路由刪除43 
2.3.4路由發現46 
2.4本章小結47 
第3章RocketMQ消息發送49 
3.1漫談RocketMQ消息發送49 
3.2認識RocketMQ消息50 
3.3生產者啟動流程51
3.3.1初識DefaultMQProducer消息發送者51 
3.3.2消息生產者啟動流程54 
3.4消息發送基本流程56 
3.4.1消息長度驗證56 
3.4.2查找主題路由信息56 
3.4.3選擇消息隊列60 
3.4.4消息發送65 
3.5批量消息發送71 
3.6本章小結74 
第4章RocketMQ消息存儲75 
4.1存儲概要設計75 
4.2初識消息存儲76 
4.3消息發送存儲流程78 
4.4存儲文件組織與內存映射83 
4.4.1 MappedFileQueue映射文件隊列84 
4.4.2 MappedFile內存映射文件87 
4.4.3 TransientStorePool 93 
4.5 RocketMQ存儲文件94 
4.5.1 Commitlog文件95 
4.5.2 ConsumeQueue文件97 
4.5.3 Index索引文件100 
4.5.4 checkpoint文件104 
4.6實時更新消息消費隊列與索引文件105 
4.6.1根據消息更新ConumeQueue 107 
4.6.2根據消息更新Index索引文件108
4.7消息隊列與索引文件恢復109 
4.7.1 Broker正常停止文件恢復112 
4.7.2 Broker異常停止文件恢復114 
4.8文件刷盤機制115 
4.8.1 Broker同步刷盤116 
4.8.2 Broker異步刷盤119 
4.9過期文件刪除機制122 
4.10本章小結126 
第5章RocketMQ消息消費127 
5.1 RocketMQ消息消費概述127 
5.2消息消費者初探128 
5.3消費者啟動流程130 
5.4消息拉取133 
5.4.1 PullMessageService實現機制133 
5.4.2 ProcessQueue實現機制136 
5.4.3消息拉取基本流程138 
5.5消息隊列負載與重新分佈機制154 
5.6消息消費過程162 
5.6.1消息消費163 
5.6.2消息確認(ACK) 167 
5.6.3消費進度管理171 
5.7定時消息機制176 
5.7.1 load方法177 
5.7.2 start方法178 
5.7.3定時調度邏輯179 
5.8消息過濾機制181
5.9順序消息186 
5.9.1消息隊列負載187 
5.9.2消息拉取187 
5.9.3消息消費188 
5.9.4消息隊列鎖實現195 
5.10本章小結196 
第6章消息過濾FilterServer 198 
6.1 ClassFilter運行機制198 
6.2 FilterServer註冊剖析199 
6.3類過濾模式訂閱機制202 
6.4消息拉取205 
6.5本章小結206 
第7章RocketMQ主從同步(HA)機制207 
7.1 RocketMQ主從復制原理207 
7.1.1 HAService整體工作機制208 
7.1.2 AcceptSocketService實現原理208 
7.1.3 GroupTransferService實現原理210 
7.1.4 HAClient實現原理211 
7.1.5 HAConnection實現原理214 
7.2 RocketMQ讀寫分離機制220 
7.3本章小結223 
第8章RocketMQ事務消息225 
8.1事務消息實現思想225 
8.2事務消息發送流程226 
8.3提交或回滾事務232
8.4事務消息回查事務狀態233 
8.5本章小結240 
第9章RocketMQ實戰242 
9.1消息批量發送242 
9.2消息發送隊列自選擇243 
9.3消息過濾243 
9.3.1 TAG模式過濾244 
9.3.2 SQL表達模式過濾244 
9.3 .3類過濾模式245 
9.4事務消息247 
9.5 Spring整合RocketMQ 250 
9.6 Spring Cloud整合RocketMQ 251 
9.7 RocketMQ監控與運維命令258 
9.7.1 RocktetMQ監控平台搭建258 
9.7.2 RocketMQ管理命令261 
9.8應用場景分析280 
9.9本章小結281 
附錄A參數說明282