基本信息
作者: 楊開元
叢書名: 雲棲社區係列
齣版社:機械工業齣版社
ISBN:9787111600251
上架時間:2018-6-11
齣版日期:2018 年6月
開本:16開
版次:1-1
所屬分類:計算機
目錄
推薦序
前言
第1章 快速入門1
1.1 消息隊列功能介紹1
1.1.1 應用解耦1
1.1.2 流量消峰2
1.1.3 消息分發3
1.2 RocketMQ簡介4
1.3 快速上手RocketMQ4
1.3.1 RocketMQ的下載、安裝和配置 5
1.3.2 啓動消息隊列服務6
1.3.3 用命令行發送和接收消息6
1.3.4 關閉消息隊列6
1.4 本章小結7
第2章 生産環境下的配置和使用8
2.1 RocketMQ各部分角色介紹8
2.2 多機集群配置和部署9
2.2.1 啓動多個NameServer和Broker10
2.2.2 配置參數介紹11
2.3 發送/接收消息示例13
2.4 常用管理命令15
2.5 通過圖形界麵管理集群21
2.6 本章小結22
第3章 用適閤的方式發送和接收消息23
3.1 不同類型的消費者23
3.1.1 DefaultMQPushConsumer的使用23
3.1.2 DefaultMQPushConsumer的處理流程25
3.1.3 DefaultMQPushConsumer的流量控製28
3.1.4 DefaultMQPullConsumer30
3.1.5 Consumer的啓動、關閉流程32
3.2 不同類型的生産者33
3.2.1 DefaultMQProducer 34
3.2.2 發送延遲消息36
3.2.3 自定義消息發送規則36
3.2.4 對事務的支持37
3.3 如何存儲隊列位置信息38
3.4 自定義日誌輸齣42
3.5 本章小結44
第4章 分布式消息隊列的協調者45
4.1 NameServer的功能45
4.1.1 集群狀態的存儲結構46
4.1.2 狀態維護邏輯47
4.2 各個角色間的交互流程48
4.2.1 交互流程源碼分析48
4.2.2 為何不用ZooKeeper50
4.3 底層通信機製50
4.3.1 Remoting模塊51
4.3.2 協議設計和編解碼54
4.3.3 Netty庫56
4.4 本章小結56
第5章 消息隊列的核心機製57
5.1 消息存儲和發送57
5.2 消息存儲結構58
5.3 高可用性機製60
5.4 同步刷盤和異步刷盤61
5.5 同步復製和異步復製62
5.6 本章小結63
第6章 可靠性優先的使用場景64
6.1 順序消息64
6.1.1 全局順序消息64
6.1.2 部分順序消息65
6.2 消息重復問題67
6.3 動態增減機器67
6.3.1 動態增減NameServer67
6.3.2 動態增減Broker69
6.4 各種故障對消息的影響70
6.5 消息優先級72
6.6 本章小結73
第7章 吞吐量優先的使用場景74
7.1 在Broker端進行消息過濾74
7.1.1 消息的Tag和Key74
7.1.2 通過Tag進行過濾75
7.1.3 用SQL錶達式的方式進行過濾75
7.1.4 Filter Server方式過濾77
7.2 提高Consumer處理能力78
7.3 Consumer的負載均衡80
7.3.1 DefaultMQPushConsumer的負載均衡80
7.3.2 DefaultMQPullConsumer的負載均衡81
7.4 提高Producer的發送速度83
7.5 係統性能調優的一般流程85
7.6 本章小結87
第8章 和其他係統交互88
8.1 在SpringBoot中使用RocketMQ88
8.1.1 直接使用88
8.1.2 通過Spring Messaging方式使用90
8.2 直接使用雲上RocketMQ91
8.3 RocketMQ與Spark、Flink對接93
8.4 自定義開發運維工具93
8.4.1 開源版本運維工具功能介紹94
8.4.2 基於Tools模塊開發自定義運維工具95
8.5 本章小結96
第9章 首個Apache中間件頂級項目97
9.1 RocketMQ的前世今生97
9.2 Apache頂級項目(TLP)之路98
9.3 源碼結構99
9.4 不斷迭代的代碼100
9.5 本章小結102
第10章 NameServer源碼解析103
10.1 模塊入口代碼的功能103
10.1.1 入口函數103
10.1.2 解析命令行參數104
10.1.3 初始化NameServer的Controller105
10.2 NameServer的總控邏輯106
10.3 核心業務邏輯處理107
10.4 集群狀態存儲109
10.5 本章小結111
第11章 最常用的消費類112
11.1 整體流程112
11.1.1 上層接口類112
11.1.2 DefaultMQPushConsumer的實現者114
11.1.3 獲取消息邏輯116
11.2 消息的並發處理118
11.2.1 並發處理過程118
11.2.2 ProcessQueue對象121
11.3 生産者消費者的底層類122
11.3.1 MQClientInstance類的創建規則122
11.3.2 MQClientInstance類的功能124
11.4 本章小結127
第12章 主從同步機製128
12.1 同步屬性信息128
12.2 同步消息體130
12.3 sync_master和async_master132
12.4 本章小結134
第13章 基於Netty的通信實現135
13.1 Netty介紹135
13.2 Netty架構總覽136
13.2.1 重新實現ByteBuffer136
13.2.2 統一的異步 I/O接口137
13.2.3 基於攔截鏈模式的事件模型138
13.2.4 高級組件139
13.3 Netty用法示例140
13.3.1 Discard服務器140
13.3.2 查看收到的數據144
13.4 RocketMQ基於Netty的通信功能實現145
13.4.1 頂層抽象類145
13.4.2 自定義協議148
13.4.3 基於Netty的Server和Client151
13.5 本章小結152
↑摺 疊
著 者:(美)Gavin M. Roy(加文·羅伊)
作 譯 者:汪佳南,鄭天民
齣版時間:2018-06 韆 字 數:302
版 次:01-01 頁 數:252
開 本:16開
裝 幀:
I S B N :9787121341809
換 版:
所屬分類:科技 >> 計算機 >> 網絡與互聯網
紙質書定價:¥79.0
本書對 RabbitMQ 這一業界主流的消息中間件做瞭全麵介紹,給齣瞭如何使用 RabbitMQ 構建消息通信係統的方法和實踐。本書從 AMQP 協議齣發,深入介紹各種消息屬性,給齣 RabbitMQ 在發送和消費消息上的特性和最佳實踐,並闡述基於 RabbitMQ 所特有的交換器組件實現靈活的消息路由機製。同時,本書也討論瞭如何利用 RabbitMQ 強大的集群機製實現分布式環境下的消息通信,並展示瞭如何在 RabbitMQ中,使用其他傳輸協議以及數據庫集成等功能來實現各種定製化需求。本書的讀者對象為從事互聯網行業中各種分布式和服務化係統開發的研究人員、高等院校計算機相關專業的研究生和本科生,以及廣大的 IT 愛好者。
目 錄
第一篇 RabbitMQ和應用程序體係結構
第1章 RabbitMQ基礎 ...........................................................................3
1.1 RabbitMQ特性以及好處 ........................................................................................ 4
1.1.1 RabbitMQ與Erlang ....................................................................... 5
1.1.2 RabbitMQ與AMQP ............................................................................... 6
1.2 誰在使用RabbitMQ,在怎麼用 ....................................................................... 7
1.3 鬆耦閤架構的優勢 ................................................................................................. 8
1.3.1 解耦你的應用 ........................................................ 10
1.3.2 解耦數據庫寫入 ........................................................................11
1.3.3 無縫添加新功能 ............................................................................... 12
1.3.4 復製數據與事件 ....................................................................... 12
1.3.5 多主(Multi-Master)互聯化數據與事件 ......................................... 13
1.3.6 高級消息隊列模型 ............................................................................ 14
1.4 小結 ................................................................................................. 16
第2章 使用AMQ協議與Rabbit進行交互 .................................................18
2.1 AMQP作為一種RPC傳輸機製 ...................................................................... 19
2.1.1 啓動會話 .............................................................................................. 20
2.1.2 調整正確的信道 ............................................................................ 20
2.2 AMQP RPC幀結構 ...................................................................... 21
2.2.1 AMQP幀組件 ............................................................................. 21
2.2.2 幀類型 .................................................................................. 22
2.2.3 將消息編組成幀 .................................................................... 23
2.2.4 方法幀結構 ..................................................................................... 24
2.2.5 內容頭幀 ........................................................................................... 26
2.2.6 消息體幀 ...................................................................................... 26
2.3 使用協議 ............................................................................................... 27
2.3.1 聲明交換器 ............................................................................................. 27
2.3.2 聲明隊列 .................................................................................... 28
2.3.3 綁定隊列到交換器 ............................................................................................... 29
2.3.4 發布消息到RabbitMQ .......................................................................................... 29
2.3.5 從RabbitMQ中消費消息 ...................................................................................... 30
2.4 用Python編寫消息發布者 ........................................................................... 32
2.5 從RabbitMQ中獲取消息 .............................................................................. 36
2.6 小結 ........................................................................................................ 37
第3章 消息屬性詳解 ...........................................................................38
3.1 閤理使用屬性 ................................................................................................ 39
3.2 使用content-type屬性創建顯式的消息契約 .......................................................... 41
3.3 通過gzip和content-encoding屬性壓縮消息大小 .................................................. 43
3.4 使用message-id和correlation-id引用消息 ..................................................... 45
3.4.1 Message-id........................................................................................................ 45
3.4.2 Correlation-id............................................................................................... 45
3.5 創建時間:timestamp屬性 .................................................................................. 46
3.6 消息自動過期 ..................................................................................... 47
3.7 使用delivery-mode平衡速度和安全性 .................................................................... 48
3.8 使用app-id和user-id驗證消息來源 ........................................................................ 49
3.8.1 app-id.................................................................................................................. 50
3.8.2 user-id................................................................................................................ 51
3.9 使用type屬性獲取明細 ............................................................................. 51
3.10 使用reply-to屬性實現動態工作流 ........................................................ 52
3.11 使用消息頭自定義屬性 .......................................................................... 53
3.12 優先級屬性 ........................................................................................ 54
3.13 不能使用的屬性:cluster-id/reserved ............................................................ 54
3.14 小結 ....................................................................... 55
第4章 消息發布的性能權衡 ..........................................................58
4.1 平衡投遞速度與可靠投遞 .......................................................................... 59
4.1.1 如果沒有保證機製我們能期待什麼 ................................................................... 60
4.1.2 使用mandatory設置,RabbitMQ將不接受不可路由消息 ............................... 62
4.1.3 發布者確認作為事務的輕量級替代方法 ........................................................... 64
4.1.4 使用備用交換器處理無法路由的消息 ............................................................... 66
4.1.5 基於事務的批量處理 ........................................................................................... 68
4.1.6 使用HA隊列避免節點故障 .................................................................................. 70
4.1.7 HA隊列與事務 ........................................................................... 72
4.1.8 通過設置delivery-mode為2將消息持久化到磁盤 ...................................... 72
4.2 RabbitMQ迴推 ......................................................................................... 75
4.2.1 使用rabbitpy來檢測連接狀態 .............................................................................. 77
4.2.2 使用管理API管理連接狀態 ................................................................................. 77
4.3 小結 ............................................................................................................ 78
第5章 消費消息,避免拉取 ..............................................................79
5.1 對比Basic.Get 和Basic.Consume ........................................................................ 80
5.1.1 Basic.Get .......................................................................................................... 80
5.1.2 Basic.Consume ................................................................................................ 82
5.2 優化消費者性能 ............................................................................................ 84
5.2.1 使用no-ack模式實現更快的吞吐量 ................................................................. 85
5.2.2 通過服務質量設置控製消費者預取 ................................................................... 86
5.2.3 消費者使用事務 ............................................................................. 89
5.3 拒絕消息 ...................................................................................................... 90
5.3.1 Basic.Reject.................................................................................................... 90
5.3.2 Basic.Nack........................................................................................................ 91
5.3.3 死信交換器 ............................................................................ 92
5.4 控製隊列 ................................................................................................. 94
5.4.1 臨時隊列 ........................................................................................... 94
5.4.2 永久隊列 ............................................................................................. 97
5.4.3 任意隊列設置 ........................................................................... 99
5.5 小結 ................................................................................................... 99
第6章 消息路由模式 .....................................................................101
6.1 通過direct交換器路由消息 ............................................................................. 102
6.1.1 創建應用架構 ................................................................ 103
6.1.2 創建RPC工作者 ........................................................................... 107
6.1.3 編寫簡單的RPC發布者 ......................................................................................110
6.2 通過fanout交換器廣播消息 ......................................................................115
6.2.1 修改麵部檢測消費者 ..........................................................................................116
6.2.2 創建一個簡單的圖片哈希消費者 ......................................................................117
6.3 使用topic交換器有選擇地路由消息 ...............................................................119
6.4 使用headers交換器有選擇地路由消息 ......................................................... 122
6.5 交換器性能基準 .................................................................. 124
6.6 交換器間路由 ......................................................................................... 125
6.7 使用一緻性哈希交換器路由消息 ........................................................... 127
6.8 小結 ......................................................................................................... 131
第二篇 管理數據中心或雲中的RabbitMQ
第7章 RabbitMQ集群 ................................................................135
7.1 集群簡介 ..................................................................................................... 136
7.1.1 集群和管理界麵 ........................................................................... 137
7.1.2 集群節點類型 ....................................................................................... 138
7.1.3 集群和隊列行為 ................................................................................. 139
7.2 集群設置 ......................................................................................... 142
7.2.1 虛擬機設置 ............................................................................ 143
7.2.2 嚮集群中添加節點 ................................................................ 144
7.3 小結 ......................................................................................................... 147
第8章 跨集群的消息分發 ...........................................................148
8.1 聯閤交換器和聯閤隊列 ........................................................................ 149
8.1.1 聯閤交換器 ............................................................................. 149
8.1.2 聯閤隊列 ................................................................................................ 152
8.2 創建RabbitMQ虛擬機 ................................................................................ 153
8.2.1 創建首個實例 ................................................................................... 153
8.2.2 復製EC2實例 ........................................................................................ 159
8.3 連接上遊節點 ...................................................................................................... 162
8.3.1 定義聯閤中的上遊節點 ..................................................................................... 162
8.3.2 定義策略 ................................................................................. 164
8.3.3 利用上遊集閤 .................................................................................... 167
8.3.4 雙嚮聯閤交換器 .............................................................................. 170
8.3.5 使用聯閤來升級集群 ..................................................................... 171
8.4 小結 ...................................................................................................... 173
第三篇 集成與定製
第9章 使用替代協議 ............................................................177
9.1 MQTT和RabbitMQ .................................................................................. 178
9.1.1 MQTT協議 .................................................................................... 178
9.1.2 通過MQTT發送消息 .......................................................................................... 182
9.1.3 MQTT訂閱者 .............................................................................. 184
9.1.4 MQTT插件配置 .......................................................................... 187
9.2 STOMP和RabbitMQ ............................................................................. 189
9.2.1 STOMP協議 ............................................................................... 190
9.2.2 發布消息 ................................................................................. 191
9.2.3 消費消息 .......................................................................................... 195
9.2.4 配置STOMP插件 ............................................................................... 198
9.2.5 在Web瀏覽器中使用STOMP ............................................................................. 199
9.3 通過HTTP進行無狀態發布 ................................................................ 200
9.3.1 statelessd的由來 ................................................................... 200
9.3.2 使用statelessd ............................................................................. 201
9.3.3 運營架構 ................................................................................ 202
9.3.4 通過statelessd來發布消息 ............................................................. 203
9.4 小結 ............................................................................................................... 203
第10章 數據庫集成 ..........................................................................205
10.1 PostgreSQL擴展:pg_amqp ................................................................. 206
10.1.1 安裝pg_amqp擴展................................................................................... 207
10.1.2 配置pg_amqp擴展................................................................................... 209
10.1.3 通過pg_amqp發送消息..................................................................................... 210
10.2 監聽PostgreSQL通知.......................................................................................... 212
10.2.1 安裝PostgreSQL LISTEN交換器 .............................................................. 213
10.2.2 基於策略的配置 .......................................................................... 215
10.2.3 創建交換器 .................................................................................. 217
10.2.4 創建並綁定測試隊列 ....................................................................................... 217
10.2.5 通過NOTIFY發送消息 ..................................................................................... 218
10.3 將消息存入InfluxDB中 ................................................................................ 219
10.3.1 InfluxDB的安裝與設置 .................................................................................... 220
10.3.2 安裝InfluxDB存儲交換器 ................................................................................ 222
10.3.3 創建測試交換器 ......................................................................... 223
10.3.4 測試交換器 .......................................................................................... 224
10.4 小結 ......................................................................................................... 227
附錄 準備就緒 .......................................................................228
A.1 安裝VirtualBox .............................................................................................................. 228
A.2 安裝Vagrant .................................................................................................... 230
A.3 設置Vagrant虛擬機 ............................................................................ 233
A.4 確認安裝 .................................................................................................... 234
A.5 小結 .......................................................................................................... 236
评分
评分
评分
评分
评分
评分
评分
评分
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有