Apache RocketMQ 進(jìn)階之路 林俊杰
定 價(jià):119 元
本書以Apache RocketMQ 4.9.5(編寫本書時(shí)最新的4.x版本)為基礎(chǔ),從Apache RocketMQ 的實(shí)際使用、原理剖析,大規(guī)模消息集群下企業(yè)級(jí)落地的實(shí)踐以及所面臨的挑戰(zhàn),逐一由淺入深地進(jìn)行講解。全書分3篇,共16章;A(chǔ)篇包含第1~4章,主要講解Apache RocketMQ 入門以及如何掌握Apache RocketMQ 的基礎(chǔ)使用。原理篇包含第5~12章,主要講解了消費(fèi)原理、負(fù)載均衡原理、順序消息原理等核心的RocketMQ部分。進(jìn)階篇包含第13~16章,主要講解消息冪等、雙活設(shè)計(jì)等進(jìn)階為架構(gòu)師必須掌握的內(nèi)容。講解過程中拋棄了傳統(tǒng)的源碼解析這種較枯燥的手段,而是更多地利用以下方式幫助讀者更快、更輕松地接受Apache RocketMQ的原理:通過近百?gòu)堅(jiān)瓌?chuàng)的手繪圖,形象地描述Apache RocketMQ 的運(yùn)作過程、原理;通過與Kafka、RabbitMQ等成熟的消息中間件產(chǎn)品做對(duì)比的方式,有助于讀者對(duì)相關(guān)知識(shí)觸類旁通,舉一反三;每章都有思考題,以便于讀者總結(jié)思考所學(xué)內(nèi)容,進(jìn)行靈活運(yùn)用。隨書附贈(zèng)示意代碼,獲取方式見封底。本書適合對(duì)Apache RocketMQ感興趣的讀者閱讀。本書的內(nèi)容能幫助讀者快速地從入門到精通,并借助書中所總結(jié)的實(shí)踐經(jīng)驗(yàn),在工作中更好地設(shè)計(jì)出高并發(fā)、高可用的后臺(tái)系統(tǒng),支撐互聯(lián)網(wǎng)業(yè)務(wù)的高速發(fā)展。
本書告別枯燥的源碼解讀,以生動(dòng)的案例、上百?gòu)埵掷L圖逐層揭秘RocketMQ的原理,真正意義上做到了深入淺出;如果只推薦一本書去學(xué)習(xí)RocketMQ,本書將是最合適的一本。10年大廠實(shí)戰(zhàn)經(jīng)驗(yàn)沉淀、業(yè)內(nèi)大咖傾情推薦
隨著移動(dòng)互聯(lián)網(wǎng)的充分發(fā)展,各種新技術(shù)層出不窮,只有優(yōu)秀的技術(shù)才能經(jīng)得起行業(yè)的考驗(yàn)。而消息中間件是后臺(tái)技術(shù)棧中繞不開的一個(gè)技術(shù)組件,其是應(yīng)對(duì)海量用戶、高并發(fā)、高可靠的架構(gòu)挑戰(zhàn)的超級(jí)利器。Apache RocketMQ正是這樣一款足夠優(yōu)秀的消息中間件產(chǎn)品。Apache RocketMQ 脫胎于阿里巴巴的雙十一,經(jīng)過多年雙十一洪峰流量的考驗(yàn),其性能、穩(wěn)定性已經(jīng)得到證明,而后廣泛應(yīng)用于多個(gè)大型的互聯(lián)網(wǎng)公司,如滴滴、微眾銀行等,已經(jīng)成為國(guó)內(nèi)最優(yōu)秀、最受歡迎的消息中間件之一。經(jīng)過多年的發(fā)展,介紹RocketMQ的書籍、文章已不少。讀者可以借助這些優(yōu)秀的書籍、文章去學(xué)習(xí)RocketMQ的使用,去了解源碼的實(shí)現(xiàn)。然而一些書籍或者博客文章大多基于源碼解讀的方式展開,這種方式對(duì)于深入學(xué)習(xí)確實(shí)很有益處,但是學(xué)習(xí)難度較大且較為枯燥,使初學(xué)者產(chǎn)生畏難情緒。筆者于 2016年因公司項(xiàng)目需要,開始學(xué)習(xí)并使用Apache RocketMQ,之后有幸認(rèn)識(shí)了社區(qū)中多位優(yōu)秀的貢獻(xiàn)者,從而也成為Apache RocketMQ的貢獻(xiàn)者之一。之后在知乎、博客等平臺(tái)撰寫了多篇介紹RocketMQ原理的文章,因文章的風(fēng)格深入淺出、圖文并茂,得到Apache RocketMQ作者的贊賞。本著希望優(yōu)秀的Apache RocketMQ的原理能被更多人認(rèn)識(shí)與學(xué)習(xí),遂產(chǎn)生了系統(tǒng)地撰寫一本介紹Apache RocketMQ原理的書籍的想法。之后有幸結(jié)識(shí)到機(jī)械工業(yè)出版社的編輯,在他們的幫助和鼓勵(lì)下,歷時(shí)兩年完成了本書的撰寫。本書的宗旨是讓讀者能輕松掌握Apache RocketMQ的原理、最佳實(shí)踐,所以放棄了貼源碼、貼示意代碼的傳統(tǒng)方式。而是大量采取圖表說明的方式進(jìn)行展開。希望通過這種方式能幫助讀者利用地鐵上、睡覺前等碎片時(shí)間輕松理解Apache RocketMQ的原理并掌握其優(yōu)秀的實(shí)踐。同時(shí),本書的結(jié)構(gòu)采取由淺入深的方式。全書分基礎(chǔ)篇、原理篇、進(jìn)階篇;A(chǔ)篇講解Apache RocketMQ 的基礎(chǔ)使用及一些最佳實(shí)踐的總結(jié)。原理篇按模塊點(diǎn)深入講解Apache RocketMQ的核心設(shè)計(jì),是Apache RocketMQ 設(shè)計(jì)中最精華的部分,通過此部分的學(xué)習(xí),讀者將深入掌握別人需要閱讀源碼才能掌握的優(yōu)秀設(shè)計(jì)。進(jìn)階篇?jiǎng)t是筆者在多年大型互聯(lián)網(wǎng)項(xiàng)目的實(shí)踐中遇到的一些高級(jí)話題、難題,能幫助不少開發(fā)人員成為優(yōu)秀架構(gòu)師。Apache RocketMQ進(jìn)階之路在內(nèi)容上,本書采取類比講解的方式去展開一些知識(shí)點(diǎn)。例如講解順序消息的章節(jié)同時(shí)也會(huì)介紹Kafka 的實(shí)現(xiàn)、在講解事務(wù)消息的章節(jié)也會(huì)介紹分布式事務(wù)的通用解決方案,通過這種方式很容易引導(dǎo)讀者思考和聯(lián)想,使得知識(shí)的掌握更為輕松。類似課堂的學(xué)習(xí)一樣,每一章的結(jié)束都會(huì)留一道或數(shù)道思考題,以便進(jìn)一步加深對(duì)知識(shí)的掌握與理解。希望學(xué)習(xí)Apache RocketMQ的人員。已經(jīng)有Apache RocketMQ的使用經(jīng)驗(yàn),希望能進(jìn)一步了解其原理、掌握最佳實(shí)踐的人員。從事消息中間件或者分布式系統(tǒng)研發(fā)的開發(fā)人員。企業(yè)消息中間件的維護(hù)、運(yùn)維人員。Apache RocketMQ 社區(qū)貢獻(xiàn)者。本書內(nèi)容雖然已深入到Apache RocketMQ的核心原理部分,但是內(nèi)容的展開會(huì)采取循序漸進(jìn)的方式進(jìn)行。本書分三大部分。第1部分是基礎(chǔ)篇,包含第 1~4 章,主要講解Apache RocketMQ入門及其基礎(chǔ)使用。第2部分是原理篇,包含第 5 ~12 章,主要講解如消費(fèi)原理、負(fù)載均衡原理、順序消息原理等核心的RocketMQ部分。第3部分是進(jìn)階篇,包含第 13~16 章,主要講解如消息冪等、雙活設(shè)計(jì)等進(jìn)階為架構(gòu)師必須掌握的內(nèi)容。對(duì)于大部分讀者,均可以按順序閱讀本書。而對(duì)于對(duì)RocketMQ已經(jīng)有一定了解的研發(fā)人員,可以跳過基礎(chǔ)篇的部分從原理篇開始閱讀。同時(shí),讀者也可以對(duì)感興趣的話題在進(jìn)階篇及原理篇中尋找對(duì)應(yīng)的章節(jié)進(jìn)行閱讀。由于筆者水平有限,編撰倉(cāng)促,書中難免會(huì)出現(xiàn)錯(cuò)誤,懇請(qǐng)讀者的批評(píng)、指正。若您有更多寶貴的建議或者意見,也歡迎發(fā)送郵件到linjunjie@apache.org。筆者期待和您交流更多關(guān)于Apache RocketMQ、消息中間件、系統(tǒng)設(shè)計(jì)的話題。首先感謝這些年來筆者公司的同事及領(lǐng)導(dǎo)。通過和他們的交流以及給予的指導(dǎo),筆者才能有幸深入地了解Apache RocketMQ中優(yōu)秀的設(shè)計(jì)原理,同時(shí)有機(jī)會(huì)參與到高并發(fā)、高可用的項(xiàng)目設(shè)計(jì)中。其次感謝Apache RocketMQ社區(qū)的維護(hù)者,正因?yàn)樗麄兊呐,一款如此?yōu)秀的開源軟件才能讓更多的人了解、使用。最后,筆者要誠(chéng)摯感謝機(jī)械工業(yè)出版社的編輯及其他工作人員,有了大家的幕后努力及默默貢獻(xiàn),本書才得以順利出版。
Apache RocketMQ Committer、架構(gòu)師。從2017年起開始參與RocketMQ社區(qū)的工作。曾任職甲骨文、OPPO,現(xiàn)為某頭部上市公司后臺(tái)架構(gòu)師,擁有11年中間件產(chǎn)品和大型業(yè)務(wù)后臺(tái)的雙背景研發(fā)經(jīng)歷。對(duì)海量用戶、高并發(fā)、多地域容災(zāi)等架構(gòu)設(shè)計(jì)擁有豐富經(jīng)驗(yàn),熱衷于技術(shù)總結(jié)與知識(shí)分享。
基礎(chǔ)篇第1章 Apache RocketMQ 綜述/1.1為什么高并發(fā)系統(tǒng)都繞不開消息中間件/1.1.1初識(shí)互聯(lián)網(wǎng)的架構(gòu)/1.1.2大型互聯(lián)網(wǎng)系統(tǒng)遇到的共性挑戰(zhàn)/1.1.3為什么要選擇 Apache RocketMQ/1.2了解 Apache RocketMQ/1.2.1RocketMQ簡(jiǎn)介/1.2.2RocketMQ發(fā)展史/1.2.3RocketMQ在雙十一的表現(xiàn)/1.3RocketMQ 核心概念與特性/1.3.1RocketMQ組件/1.3.2術(shù)語/1.3.3RocketMQ重要特性/1.4RocketMQ初體驗(yàn)/1.4.1安裝RocketMQ/1.4.2啟動(dòng)Name Server/1.4.3啟動(dòng)Broker/1.4.4關(guān)閉Broker和Name Server/1.4.5驗(yàn)證收發(fā)消息/1.5本章小結(jié)/1.6思考題/第2章 RocketMQ 消息生產(chǎn)/2.1生產(chǎn)者概述/2.1.1生產(chǎn)者實(shí)例/2.1.2生產(chǎn)者組/2.2認(rèn)識(shí)RocketMQ消息/2.2.1消息結(jié)構(gòu)/2.2.2消息類型/2.3消息發(fā)送實(shí)戰(zhàn)/2.3.1發(fā)送普通消息/2.3.2發(fā)送批量消息/2.3.3發(fā)送順序消息/2.3.4發(fā)送延時(shí)消息/2.3.5發(fā)送事務(wù)消息/2.4消息的三種發(fā)送模型/2.4.1發(fā)送同步消息/2.4.2發(fā)送異步消息/2.4.3發(fā)送單向消息/2.5生產(chǎn)者最佳實(shí)踐/2.5.1不同消息類型的選擇/2.5.2不同消息發(fā)送模型的選擇/2.5.3發(fā)送消息的實(shí)戰(zhàn)建議/2.6本章小結(jié)/2.7思考題/第3章 RocketMQ消息消費(fèi)/3.1消費(fèi)者概述/3.1.1消費(fèi)者實(shí)例/3.1.2消費(fèi)者組/3.2初探消費(fèi)流程/3.2.1消息存儲(chǔ)與消息隊(duì)列的關(guān)系/3.2.2消息消費(fèi)與消息隊(duì)列的關(guān)系/3.3消費(fèi)實(shí)戰(zhàn)/3.3.1Push并發(fā)消費(fèi)/3.3.2Push順序消費(fèi)/3.3.3Pull Subscribe消費(fèi)/3.3.4Pull Assign消費(fèi)/3.3.5集群模式與廣播模式/3.3.6標(biāo)簽過濾 /3.3.7SQL92過濾 /3.3.8消息重試和死信隊(duì)列/3.4消息消費(fèi)最佳實(shí)踐/3.4.1消費(fèi)日志/3.4.2消費(fèi)冪等/3.4.3提高消費(fèi)并行度/3.4.4批量消費(fèi)方式/3.4.5大量堆積時(shí)跳過歷史消息/3.4.6規(guī)范消費(fèi)者組名/3.4.7訂閱關(guān)系保持一致/3.4.8并發(fā)消費(fèi)和順序消費(fèi)的選擇/3.4.9起始消費(fèi)位點(diǎn)的設(shè)置/3.4.10關(guān)于異步消費(fèi)/3.4.11消費(fèi)狀態(tài)處理/3.5本章小結(jié)/3.6思考題/第4章 RocketMQ運(yùn)維與管理/4.1RocketMQ Admin Tool/4.1.1認(rèn)識(shí)RocketMQ管理工具/4.1.2使用RocketMQ管理工具/4.2RocketMQ Dashboard/4.2.1Docker方式安裝 RocketMQ Dashboard/4.2.2源碼方式安裝 RocketMQ Dashboard/4.2.3使用 RocketMQ Dashboard/4.3主題管理實(shí)踐/4.3.1主題分類/4.3.2主題命名/4.3.3隊(duì)列數(shù)管理/4.4測(cè)試環(huán)境實(shí)踐/4.4.1獨(dú)立集群模式/4.4.2獨(dú)立主題模式/4.4.3Tag路由模式/4.4.4三種模式的優(yōu)劣對(duì)比/4.5生產(chǎn)環(huán)境運(yùn)維實(shí)踐/4.5.1集群擴(kuò)容/4.5.2集群遷移/4.6RocketMQ 常見部署架構(gòu)/4.6.1單主模式/4.6.2主備模式的架構(gòu)/4.6.3多主模式的架構(gòu)/4.6.4同城災(zāi)備模式/4.7本章小結(jié)/4.8思考題/原理篇第5章 RocketMQ消費(fèi)原理/5.1理解RocketMQ的推模式/5.1.1Push 模式/5.1.2Pull 模式/5.1.3Push模式與Pull模式的優(yōu)劣對(duì)比/5.2了解長(zhǎng)輪詢/5.2.1短輪詢/5.2.2長(zhǎng)輪詢/5.3RocketMQ長(zhǎng)輪詢實(shí)現(xiàn)/5.3.1客戶端增大超時(shí)時(shí)間/5.3.2服務(wù)端Hold住無數(shù)據(jù)的請(qǐng)求/5.3.3RocketMQ長(zhǎng)輪詢小結(jié)/5.4RocketMQ的消息拉取優(yōu)化細(xì)節(jié)/5.4.1客戶端請(qǐng)求異步化/5.4.2服務(wù)端超時(shí)處理細(xì)節(jié)/5.4.3服務(wù)端多線程交互/5.4.4合并多個(gè) Pull 請(qǐng)求/5.5消費(fèi)者線程模型/5.5.1消費(fèi)流程涉及的關(guān)鍵線程/5.5.2消費(fèi)線程池/5.6消費(fèi)進(jìn)度管理/5.6.1消費(fèi)進(jìn)度存儲(chǔ)/5.6.2初次啟動(dòng)從哪里消費(fèi)/5.7消息ACK機(jī)制/5.7.1AT LEAST ONCE保證/5.7.2消息消費(fèi)失敗進(jìn)度管理/5.8消息失敗重試設(shè)計(jì)/5.8.1重試主題/5.8.2延遲重試/5.9消息消費(fèi)異常處理/5.9.1消費(fèi)超時(shí)/5.9.2卡進(jìn)度的保護(hù)處理/5.9.3消息重發(fā)與順序性的矛盾/5.10本章小結(jié)/5.11思考題/第6章 RocketMQ負(fù)載均衡與消費(fèi)模式/6.1負(fù)載均衡綜述/6.2消息生產(chǎn)負(fù)載均衡/6.2.1消息生產(chǎn)負(fù)載均衡概述/6.2.2消息生成負(fù)載均衡的原理/6.3消息消費(fèi)負(fù)載均衡/6.3.1無中心的隊(duì)列負(fù)載均衡/6.3.2無中心負(fù)載均衡的核心源碼/6.3.3消費(fèi)者負(fù)載均衡策略/6.4無中心負(fù)載均衡帶來的弊端/6.5RocketMQ廣播消息原理/6.5.1JMS的消息類型/6.5.2主流消息中間件對(duì)發(fā)布/訂閱模式的支持/6.5.3RocketMQ對(duì)發(fā)布/訂閱模式的支持/6.5.4廣播模式下的可靠性及順序性處理/6.6本章小結(jié)/6.7思考題/第7章 RocketMQ存儲(chǔ)設(shè)計(jì)/7.1RocketMQ消息存儲(chǔ)概覽/7.1.1文件構(gòu)成/7.1.2消息存儲(chǔ)過程/7.2RocketMQ存儲(chǔ)與檢索/7.2.1RocketMQ存儲(chǔ)對(duì)比Kafka存儲(chǔ)/7.2.2RocketMQ存儲(chǔ)設(shè)計(jì)對(duì)比Kafka的優(yōu)勢(shì)/7.3CommitLog文件/7.3.1CommitLog文件結(jié)構(gòu)/7.3.2CommitLog抽象模型/7.3.3CommitLog文件組成/7.4ConsumeQueue文件/7.4.1ConsumeQueue文件結(jié)構(gòu)/7.4.2ConsumeQueue文件組成/7.5IndexFile文件/7.5.1IndexFile概覽/7.5.2IndexFile文件結(jié)構(gòu)/7.5.3IndexFile文件組成/7.6本章小結(jié)/7.7思考題/第8章 RocketMQ消息高可靠的設(shè)計(jì)/8.