內容簡介
絕大多數應用程式的核心都有一個
虛擬交換機,用於在伺服器、程式和服務之間快速傳遞訊息。RabbitMQ是一個高效且易於部署的
訊息佇列伺服器,它可以輕而易舉地處理各種情形下的訊息通信,不論是網路初創公司還是大型企業系統。
本書能夠教會你如何使用RabbitMQ訊息通信伺服器,構建和管理用不同語言編寫的可伸縮套用。這很容易上手。你將學習訊息佇列的工作原理以及RabbitMQ是如何適用的。然後,你將通過許多案例來探索實踐當中的可擴展性和互操作性問題。最後,你將學習如何將Rabbit打造成一部運作良好的機器,以應對24×7×365的無間斷工作環境。
本書包以下內容
□ 學習基本訊息通信設計模式
□ 使用模式來滿足按需擴展
□ 整合PHP編寫的前端和用任何語言編寫的後端
□ 在30分鐘內實現發布/訂閱的告警服務
□ 配置RabbitMQ內建集群
□ 監控、管理、擴展並調試RabbitMQ
目錄
第1章 天降奇兵1
1.1 住在別人的地下城堡 3
1.2 救世主AMQP 5
1.3 RabbitMQ簡史 5
1.4 百里挑一 8
1.5 在UNIX系統上安裝RabbitMQ 8
1.5.1 為什麼環境很重要——生活在Erlang 的世界裡 9
1.5.2 獲取安裝包 9
1.5.3 設定資料夾結構 9
1.5.4 首次運行Rabbit 10
1.6 總結 12
第2章 理解訊息通信13
2.1 消費者和生產者(這可不是經濟學課程喔) 14
2.2 從底部開始構造:佇列 17
2.3 聯合起來:交換器和綁定 22
2.4 多租戶模式:虛擬主機和隔離 27
2.5 我的訊息去哪兒了呢?持久化和你的策略 28
2.6 把所有內容結合起來:一條訊息的一生 32
2.7 使用傳送方確認模式來確認投遞 37
2.8 總結 40
第3章 運行和管理Rabbit 42
3.1 伺服器管理 43
3.1.1 啟動節點 43
3.1.2 停止節點 45
3.1.3 關閉和重啟應用程式:有何差別 46
3.1.4 Rabbit 配置檔案 46
3.2 請求許可 48
3.2.1 管理用戶 49
3.2.2 Rabbit 的許可權系統 50
3.3 檢查 54
3.3.1 查看數據統計 54
3.3.2 理解RabbitMQ 日誌 59
3.4 修復Rabbit:疑難解答 63
由badrpc、nodedown 和其他Erlang 引起的問題 63
3.5 總結 68
第4章 解決Rabbit相關問題:編碼與模式69
4.1 解耦風雨路:誰將我們推向訊息通信 70
4.1.1 異步狀態思維(分離請求和動作) 70
4.1.2 提供擴展性:沒有負載均衡器的世界 73
4.1.3 零成本API :語言不應成為枷鎖 73
4.2 發後即忘模型 74
4.2.1 傳送告警 75
4.2.2 並行處理 84
4.3 別忘了:用RabbitMQ實現RPC並等待回響 92
4.3.1 私有佇列和傳送確認 93
4.3.2 使用reply_to 來實現簡單的JSON RPC 93
4.4 總結 98
第5章 集群並處理失敗99
5.1 開足馬力:RabbitMQ集群 100
5.2 集群架構 101
5.2.1 集群中的佇列 101
5.2.2 分布交換器 103
5.2.3 是記憶體節點還是磁碟節點 104
5.3 在你的筆記本電腦上設定集群 106
5.4 將節點分布到更多的機器上 110
5.5 升級集群節點 114
5.6 鏡像佇列和保留訊息 115
5.6.1 聲明並使用鏡像佇列 115
5.6.2 鏡像佇列工作原理 118
5.7 總結 120
第6章 從故障中恢復121
6.1 為Rabbit做負載均衡 122
6.1.1 安裝HAProxy 124
6.1.2 配置HAProxy 125
6.2 連線丟失和故障轉移 127
6.3 總結 134
第7章 warren和Shovel:故障轉移和複製 135
7.1 warren:另一種集群方式 136
7.2 設定
負載均衡器——基於主/從的集群 138
7.3 遠距離通信和複製 142
7.3.1 給Rabbit 裝備Shovel :Shovel 外掛程式介紹 142
7.3.2 安裝Shovel 145
7.3.3 配置並運行Shovel 146
7.4 總結 152
第8章 從Web端管理RabbitMQ 154
8.1 超越rabbitmqctl:RabbitMQ Management外掛程式 155
8.1.1 為何需要Management 外掛程式 155
8.1.2 Management 外掛程式功能 155
8.1.3 啟用Management 外掛程式 156
8.2 從Web控制台來管理RabbitMQ 158
8.2.1 監控Erlang VM 158
8.2.2 從JSON 檔案導入配置 159
8.3 從Web控制台管理用戶 160
8.3.1 創建用戶 161
8.3.2 管理用戶的許可權 162
8.4 從Web控制台管理交換器和佇列 163
8.4.1 列出佇列信息 165
8.4.2 創建佇列 166
8.5 回到命令行 168
8.5.1 為什麼需要另一個CLI 168
8.5.2 CLI 管理:一種更簡單的方式 170
8.5.3 安裝rabbitmqadmin 腳本 170
8.5.4 清空佇列、創建交換器等 171
8.6 總結 172
第9章 使用REST API控制Rabbit 173
9.1 能用RabbitMQ REST API做什麼 175
9.2 對客戶端授權訪問 177
9.3 訪問數據統計 178
9.4 自動化vhost和用戶配置 181
9.5 總結 .186
第10章 監控187
10.1 監控RabbitMQ:密切關注你的warren 188
10.1.1 為Nagios 編寫健康檢測 188
10.1.2 使用AMQP 模擬檢測來確認RabbitMQ 是否運行 190
10.1.3 使用REST API 來檢測 193
10.1.4 監控配置檔案修改 196
10.1.5 監控集群狀態 201
10.2 確保消費者正常工作 206
10.2.1 通過AMQP 監控佇列等級 208
10.2.2 使用REST API 來監控佇列級別 212
10.2.3 建立佇列的訊息計數基準經驗法則 215
10.3 總結216
第11章 提升性能,保障安全217
11.1 對速度的需求 218
11.1.1 訊息持久化 218
11.1.2 訊息確認 219
11.1.3 路由算法和綁定規則 219
11.1.4 投遞訊息 221
11.2 記憶體使用率和進程限制 223
11.2.1 記憶體使用率 223
11.2.2 Erlang 進程計數 226
11.3.1 SSL 證書.228
11.3.2 設定證書頒發機構 ..229
11.3.3 生成根證書 233
11.3.4 生成伺服器端證書 234
11.3.5 生成客戶端證書 235
11.3.6 啟用RabbitMQ 的SSL 監聽器 236
11.3.7 測試你的RabbitMQ SSL 設定 237
11.4 總結 239
第12章 聰明的Rabbit:擴展RabbitMQ241
12.1 RabbitMQ外掛程式 242
12.1.1 你可以用外掛程式做什麼 242
12.1.2 在哪裡可以找到外掛程式 244
12.1.3 安裝外掛程式 244
12.1.4 移除外掛程式 245
12.2 製作你自己的外掛程式 247
12.2.1 獲取RabbitMQ Public Umbrella 248
12.2.2 設定資料夾結構 249
12.2.3 包含外掛程式構建系統 250
12.2.4 創建Erlang 套用檔案 250
12.3 創建自定義交換器模組 252
12.3.1 將交換器註冊到RabbitMQ 254
12.3.2 實現交換器behaviour 257
12.3.3 編譯自定義交換器 264
12.3.4 測試你的外掛程式 267
12.4 總結 271
附錄A 在Java和.NET上使用Rabbit 273
附錄B 線上資源302
附錄C 在Windows上安裝RabbitMQ 307