RabbitMQ實(shí)戰(zhàn)指南(博文視點(diǎn)出品)

2021-04-25 20:19 更新

RabbitMQ實(shí)戰(zhàn)指南(博文視點(diǎn)出品)

朱忠華 著

  • 出版社: 電子工業(yè)出版社
  • ISBN:9787121329913
  • 版次:1
  • 商品編碼:12277834
  • 品牌:博文視點(diǎn)
  • 包裝:平裝
  • 開本:16開
  • 出版時(shí)間:2017-11-01
  • 用紙:膠版紙
  • 頁(yè)數(shù):348
  • 字?jǐn)?shù):417000
  • 正文語(yǔ)種:中文


點(diǎn)此購(gòu)買


內(nèi)容簡(jiǎn)介

《RabbitMQ實(shí)戰(zhàn)指南》從消息中間件的概念和RabbitMQ的歷史切入,主要闡述RabbitMQ的安裝、使用、配置、管理、運(yùn)維、原理、擴(kuò)展等方面的細(xì)節(jié)?!禦abbitMQ實(shí)戰(zhàn)指南》大致可以分為基礎(chǔ)篇、進(jìn)階篇和高階篇三個(gè)部分?;A(chǔ)篇首先介紹RabbitMQ的基本安裝及使用方式,方便零基礎(chǔ)的讀者以最舒適的方式融入到RabbitMQ之中。其次介紹RabbitMQ的基本概念,包括生產(chǎn)者、消費(fèi)者、交換器、隊(duì)列、綁定等。之后通過(guò)Java語(yǔ)言講述了客戶端如何與RabbitMQ建立(關(guān)閉)連接、聲明(刪除)交換器、隊(duì)列、綁定關(guān)系,以及如何發(fā)送和消費(fèi)消息等。進(jìn)階篇講述RabbitMQ的 TTL、死信、延遲隊(duì)列、優(yōu)先級(jí)隊(duì)列、RPC、消息持久化、生產(chǎn)端和消費(fèi)端的消息確認(rèn)機(jī)制等內(nèi)容,以期讀者能夠掌握RabbitMQ的使用精髓?!禦abbitMQ實(shí)戰(zhàn)指南》中間篇幅主要從RabbitMQ 的管理、配置、運(yùn)維這三個(gè)角度來(lái)為讀者提供幫助文檔及解決問(wèn)題的思路。高階篇主要闡述RabbitMQ的存儲(chǔ)機(jī)制、流控及鏡像隊(duì)列的原理,深入地講述RabbitMQ的一些實(shí)現(xiàn)細(xì)節(jié),便于讀者加深對(duì)RabbitMQ的理解?!禦abbitMQ實(shí)戰(zhàn)指南》還涉及網(wǎng)絡(luò)分區(qū)的概念,此內(nèi)容可稱為魔鬼篇,需要掌握前面的所有內(nèi)容才可理解其中的門道。《RabbitMQ實(shí)戰(zhàn)指南》最后講述的是RabbitMQ的一些擴(kuò)展內(nèi)容及附錄,供讀者參考之用。


作者簡(jiǎn)介

計(jì)算機(jī)碩士畢業(yè),在互聯(lián)網(wǎng)公司擔(dān)任高級(jí)開發(fā)工程師,從事消息中間件的研究及開發(fā),主要包括RabbitMQ和Kafka。


目錄

第1章 RabbitMQ簡(jiǎn)介 1
1.1 什么是消息中間件 2
1.2 消息中間件的作用 3
1.3 RabbitMQ的起源 4
1.4 RabbitMQ的安裝及簡(jiǎn)單使用 6
1.4.1 安裝Erlang 7
1.4.2 RabbitMQ的安裝 8
1.4.3 RabbitMQ的運(yùn)行 8
1.4.4 生產(chǎn)和消費(fèi)消息 10
1.5 小結(jié) 14
第2章 RabbitMQ入門 15
2.1 相關(guān)概念介紹 16
2.1.1 生產(chǎn)者和消費(fèi)者 16
2.1.2 隊(duì)列 18
2.1.3 交換器、路由鍵、綁定 19
2.1.4 交換器類型 21
2.1.5 RabbitMQ運(yùn)轉(zhuǎn)流程 23
2.2 AMQP協(xié)議介紹 26
2.2.1 AMQP生產(chǎn)者流轉(zhuǎn)過(guò)程 27
2.2.2 AMQP消費(fèi)者流轉(zhuǎn)過(guò)程 29
2.2.3 AMQP命令概覽 30
2.3 小結(jié) 32
第3章 客戶端開發(fā)向?qū)?33
3.1 連接RabbitMQ 34
3.2 使用交換器和隊(duì)列 36
3.2.1 exchangeDeclare方法詳解 37
3.2.2 queueDeclare方法詳解 39
3.2.3 queueBind方法詳解 41
3.2.4 exchangeBind方法詳解 42
3.2.5 何時(shí)創(chuàng)建 43
3.3 發(fā)送消息 44
3.4 消費(fèi)消息 46
3.4.1 推模式 46
3.4.2 拉模式 49
3.5 消費(fèi)端的確認(rèn)與拒絕 50
3.6 關(guān)閉連接 52
3.7 小結(jié) 54
第4章 RabbitMQ進(jìn)階 55
4.1 消息何去何從 56
4.1.1 mandatory參數(shù) 56
4.1.2 immediate參數(shù) 57
4.1.3 備份交換器 58
4.2 過(guò)期時(shí)間(TTL) 60
4.2.1 設(shè)置消息的TTL 60
4.2.2 設(shè)置隊(duì)列的TTL 62
4.3 死信隊(duì)列 63
4.4 延遲隊(duì)列 65
4.5 優(yōu)先級(jí)隊(duì)列 67
4.6 RPC實(shí)現(xiàn) 68
4.7 持久化 72
4.8 生產(chǎn)者確認(rèn) 74
4.8.1 事務(wù)機(jī)制 74
4.8.2 發(fā)送方確認(rèn)機(jī)制 77
4.9 消費(fèi)端要點(diǎn)介紹 84
4.9.1 消息分發(fā) 85
4.9.2 消息順序性 87
4.9.3 棄用QueueingConsumer 88
4.10 消息傳輸保障 90
4.11 小結(jié) 91
第5章 RabbitMQ管理 92
5.1 多租戶與權(quán)限 93
5.2 用戶管理 97
5.3 Web端管理 99
5.4 應(yīng)用與集群管理 105
5.4.1 應(yīng)用管理 105
5.4.2 集群管理 108
5.5 服務(wù)端狀態(tài) 111
5.6 HTTP API接口管理 121
5.7 小結(jié) 130
第6章 RabbitMQ配置 131
6.1 環(huán)境變量 132
6.2 配置文件 136
6.2.1 配置項(xiàng) 137
6.2.2 配置加密 140
6.2.3 優(yōu)化網(wǎng)絡(luò)配置 142
6.3 參數(shù)及策略 146
6.4 小結(jié) 151
第7章 RabbitMQ運(yùn)維 152
7.1 集群搭建 153
7.1.1 多機(jī)多節(jié)點(diǎn)配置 154
7.1.2 集群節(jié)點(diǎn)類型 158
7.1.3 剔除單個(gè)節(jié)點(diǎn) 160
7.1.4 集群節(jié)點(diǎn)的升級(jí) 162
7.1.5 單機(jī)多節(jié)點(diǎn)配置 163
7.2 查看服務(wù)日志 164
7.3 單節(jié)點(diǎn)故障恢復(fù) 172
7.4 集群遷移 173
7.4.1 元數(shù)據(jù)重建 174
7.4.2 數(shù)據(jù)遷移和客戶端連接的切換 183
7.4.3 自動(dòng)化遷移 185
7.5 集群監(jiān)控 189
7.5.1 通過(guò)HTTP API接口提供監(jiān)控?cái)?shù)據(jù) 189
7.5.2 通過(guò)客戶端提供監(jiān)控?cái)?shù)據(jù) 196
7.5.3 檢測(cè)RabbitMQ服務(wù)是否健康 199
7.5.4 元數(shù)據(jù)管理與監(jiān)控 203
7.6 小結(jié) 205
第8章 跨越集群的界限 206
8.1 Federation 207
8.1.1 聯(lián)邦交換器 207
8.1.2 聯(lián)邦隊(duì)列 214
8.1.3 Federation的使用 216
8.2 Shovel 223
8.2.1 Shovel的原理 224
8.2.2 Shovel的使用 227
8.2.3 案例:消息堆積的治理 233
8.3 小結(jié) 235
第9章 RabbitMQ高階 237
9.1 存儲(chǔ)機(jī)制 238
9.1.1 隊(duì)列的結(jié)構(gòu) 240
9.1.2 惰性隊(duì)列 243
9.2 內(nèi)存及磁盤告警 245
9.2.1 內(nèi)存告警 246
9.2.2 磁盤告警 249
9.3 流控 250
9.3.1 流控的原理 250
9.3.2 案例:打破隊(duì)列的瓶頸 253
9.4 鏡像隊(duì)列 263
9.5 小結(jié) 269
第10章 網(wǎng)絡(luò)分區(qū) 270
10.1 網(wǎng)絡(luò)分區(qū)的意義 271
10.2 網(wǎng)絡(luò)分區(qū)的判定 272
10.3 網(wǎng)絡(luò)分區(qū)的模擬 275
10.4 網(wǎng)絡(luò)分區(qū)的影響 279
10.4.1 未配置鏡像 279
10.4.2 已配置鏡像 282
10.5 手動(dòng)處理網(wǎng)絡(luò)分區(qū) 284
10.6 自動(dòng)處理網(wǎng)絡(luò)分區(qū) 289
10.6.1 pause-minority模式 289
10.6.2 pause-if-all-down模式 290
10.6.3 autoheal模式 291
10.6.4 挑選哪種模式 292
10.7 案例:多分區(qū)情形 293
10.8 小結(jié) 296
第11章 RabbitMQ擴(kuò)展 297
11.1 消息追蹤 298
11.1.1 Firehose 298
11.1.2 rabbitmq_tracing插件 301
11.1.3 案例:可靠性檢測(cè) 305
11.2 負(fù)載均衡 310
11.2.1 客戶端內(nèi)部實(shí)現(xiàn)負(fù)載均衡 312
11.2.2 使用HAProxy實(shí)現(xiàn)負(fù)載均衡 314
11.2.3 使用Keepalived實(shí)現(xiàn)高可靠負(fù)載均衡 318
11.2.4 使用Keepalived+LVS實(shí)現(xiàn)負(fù)載均衡 325
11.3 小結(jié) 330
附錄A 集群元數(shù)據(jù)信息示例 331
附錄B /api/nodes接口詳細(xì)內(nèi)容 333
附錄C 網(wǎng)絡(luò)分區(qū)圖譜 336


前言/序言

初識(shí)RabbitMQ時(shí),我在網(wǎng)上搜尋了大量的相關(guān)資料以求自己能夠快速地理解它,但是這些資料零零散散而又良莠不齊。后來(lái)又寄希望于RabbitMQ的相關(guān)書籍,或許是它們都非出自國(guó)人之手,里面的陳述邏輯和案例描述都不太符合我自己的思維習(xí)慣。最后選擇從頭開始自研RabbitMQ,包括閱讀相關(guān)源碼、翻閱官網(wǎng)的資料以及進(jìn)行大量的實(shí)驗(yàn)等。

平時(shí)我也有寫博客的習(xí)慣,通常在工作中遇到問(wèn)題時(shí)會(huì)結(jié)合所學(xué)的知識(shí)整理成文。隨著一篇篇的積累,也有好幾十篇的內(nèi)容,漸漸地也就有了編撰成書的想法。

本書動(dòng)筆之時(shí)我曾信心滿滿,以為能夠順其自然地完成這本書,但是寫到四分之一時(shí),發(fā)現(xiàn)并沒(méi)有想象中的那么簡(jiǎn)單。怎樣才能讓理解領(lǐng)悟匯聚成通俗易懂的文字表達(dá)?怎樣才能讓書中內(nèi)容前后貫通、由淺入深地闡述?有些時(shí)候可能知道怎樣做、為什么這么做,而沒(méi)有反思其他情形能不能做、怎樣做。為了解決這些問(wèn)題,我會(huì)反復(fù)對(duì)書中的內(nèi)容進(jìn)行迭代,對(duì)某些模糊的知識(shí)點(diǎn)深耕再深耕,對(duì)某些案例場(chǎng)景進(jìn)行反復(fù)的測(cè)試,不斷地完善。

在本書編寫之時(shí),我常常回想當(dāng)初作為小白之時(shí)迫切地希望能夠了解哪些內(nèi)容,這些內(nèi)容又希望以怎樣的形式展現(xiàn)。所以本書前面幾章的內(nèi)容基本上是站在一個(gè)小白的視角來(lái)為讀者做一個(gè)細(xì)膩的講解,相信讀者在閱讀完這些內(nèi)容之后能夠具備合理使用RabbitMQ的能力。在后面的章節(jié)中知識(shí)點(diǎn)會(huì)慢慢地深入,每閱讀一章的內(nèi)容都會(huì)對(duì)RabbitMQ有一個(gè)更加深刻的認(rèn)知。

本書中的所有內(nèi)容都具備理論基礎(chǔ)并全部實(shí)踐過(guò),書中的內(nèi)容也是我在工作中的實(shí)踐積累,希望本書能夠讓初學(xué)者對(duì)RabbitMQ有一個(gè)全面的認(rèn)知,也希望有相關(guān)經(jīng)驗(yàn)的人士可以從本書中得到一些啟發(fā),汲取一些經(jīng)驗(yàn)。

內(nèi)容大綱

本書共11章,前后章節(jié)都有相關(guān)的聯(lián)系,基本上按照由淺入深、由表及里的層次逐層進(jìn)行講解。如果讀者對(duì)其中的某些內(nèi)容已經(jīng)掌握,可以選擇跳過(guò)而翻閱后面的內(nèi)容,不過(guò)還是建議讀者按照先后順序進(jìn)行閱讀。

第1章主要針對(duì)消息中間件做一個(gè)摘要性介紹,包括什么是消息中間件、消息中間件的作用及特點(diǎn)等。之后引入RabbitMQ,對(duì)其歷史和相關(guān)特點(diǎn)做一個(gè)簡(jiǎn)要概述。本章最后介紹RabbitMQ的安裝及生產(chǎn)、消費(fèi)的使用示例。

第2章主要講述RabbitMQ的入門知識(shí),包括生產(chǎn)者、消費(fèi)者、隊(duì)列、交換器、路由鍵、綁定、連接及信道等基本術(shù)語(yǔ)。本章還闡述了RabbitMQ與AMQP協(xié)議的對(duì)應(yīng)關(guān)系。

第3章主要介紹RabbitMQ客戶端開發(fā)的簡(jiǎn)單使用,按照一個(gè)生命周期對(duì)連接、創(chuàng)建、生產(chǎn)、消費(fèi)及關(guān)閉等幾個(gè)方面進(jìn)行宏觀的介紹。

第4章介紹數(shù)據(jù)可靠性的一些細(xì)節(jié),并展示RabbitMQ的幾種已具備或衍生的高級(jí)特性,包括TTL、死信隊(duì)列、延遲隊(duì)列、優(yōu)先級(jí)隊(duì)列、RPC等,這些功能在實(shí)際使用中可以讓某些應(yīng)用的實(shí)現(xiàn)變得事半功倍。

第5章主要圍繞RabbitMQ管理這個(gè)主題展開,包括多租戶、權(quán)限、用戶、應(yīng)用和集群管理、服務(wù)端狀態(tài)等方面,并且從側(cè)面講述rabbitmqctl工具和rabbitmq_management插件的使用。

第6章主要講述RabbitMQ的配置,以此可以通過(guò)環(huán)境變量、配置文件、運(yùn)行時(shí)參數(shù)(和策略)等三種方式來(lái)定制化相應(yīng)的服務(wù)。

第7章主要圍繞運(yùn)維層面展開論述,主要包括集群搭建、日志查看、故障恢復(fù)、集群遷移、集群監(jiān)控這幾個(gè)方面。

第8章主要講述Federation和Shovel這兩個(gè)插件的使用、細(xì)節(jié)及相關(guān)原理。區(qū)別于第7章中集群的部署方式,F(xiàn)ederation和Shovel可以部署在廣域網(wǎng)中,為RabbitMQ提供更廣泛的應(yīng)用空間。

第9章介紹RabbitMQ相關(guān)的一些原理,主要內(nèi)容包括RabbitMQ存儲(chǔ)機(jī)制、磁盤和內(nèi)存告警、流控機(jī)制、鏡像隊(duì)列。了解這些實(shí)現(xiàn)的細(xì)節(jié)及原理十分必要,它們可以讓讀者在遇到問(wèn)題時(shí)能夠透過(guò)現(xiàn)象看本質(zhì)。

第10章主要圍繞網(wǎng)絡(luò)分區(qū)進(jìn)行展開,具體闡述網(wǎng)絡(luò)分區(qū)的意義,如何查看和處理網(wǎng)絡(luò)分區(qū),以及網(wǎng)絡(luò)分區(qū)所帶來(lái)的影響。

第11章主要探討RabbitMQ的兩個(gè)擴(kuò)展內(nèi)容:消息追蹤及負(fù)載均衡。消息追蹤可以有效地定位消息丟失的問(wèn)題。負(fù)載均衡本身屬于運(yùn)維層面,但是負(fù)載均衡一般需要借助第三方的工具——HAProxy、LVS等實(shí)現(xiàn),故本書將其視為擴(kuò)展內(nèi)容。

讀者討論

由于作者水平有限,書中難免有錯(cuò)誤之處。在本書出版后的任何時(shí)間,若你對(duì)本書有任何的疑問(wèn),都可以通過(guò) zhuzhonghua.ideal@qq.com 發(fā)送郵件給作者,也可以到作者的個(gè)人博客http://blog.csdn.net/u013256816留言,向作者闡述你的建議和想法。如若收到相關(guān)信息,作者都會(huì)回復(fù)。

致謝

首先要感謝我身處的平臺(tái),讓我有機(jī)會(huì)深入地接觸RabbitMQ。同時(shí)也要感謝我身邊的同事,正因?yàn)橛辛四銈兊墓膭?lì)和幫助,才讓我能夠迅速成長(zhǎng),本書的問(wèn)世,離不開與你們?cè)诠ぷ髦蟹e累的點(diǎn)點(diǎn)滴滴。

感謝在我博客中提問(wèn)、留言的網(wǎng)友,有了你們的意見(jiàn)和建議才能讓本書更加完善。

感謝博文視點(diǎn)的編輯們,本書能夠順利、迅速地出版,多虧了你們的敬業(yè)精神和一絲不茍的工作態(tài)度。

最后還要感謝我的家人,在我占用絕大部分的業(yè)余時(shí)間進(jìn)行寫作的時(shí)候,能夠給予我極大的寬容、理解和支持,讓我能夠全身心地投入到寫作之中。

朱忠華


點(diǎn)此購(gòu)買


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)