消息中間件
1.採用異步處理模式
消息發送者能夠發送一個消息並且不用等待相應。
消息接收者訂閱或監聽該通道。
一條消息最終能夠轉發給一個或多個消息接收者。
2.應用按程序和應用程序調用關係爲鬆耦合關係
發送者和接收者沒必要了解對方,只須要確認消息。
發送者和接收者沒必要同時在線。
1 點對點模型 PTP
每一個消息只有一個消費者
發送者和接收者沒有時間依賴
接收者確認消息接收和處理成功
![](http://static.javashuo.com/static/loading.gif)
2 發佈-訂閱模型 Pub/Sub
多個消費者能夠得到消息。
發佈者和訂閱者之間存在時間依賴性。
發佈者須要創建一個訂閱(subscription),以便消費者訂閱。
訂閱者必須保持持續的活動狀態接收消息,除非訂閱者創建了持久的訂閱。
訂閱者未鏈接時發佈的消息將在訂閱者從新鏈接時從新發布。
(1)每一個消息能夠有多個訂閱者
(2)客戶端只有訂閱後才能接收到消息
(3)持久訂閱和非持久訂閱
![](http://static.javashuo.com/static/loading.gif)
消息中間件的使用情景。
一、網站用戶註冊,註冊成功後會過一會發送郵件確認或者短信。
![](http://static.javashuo.com/static/loading.gif)
這種場景是發佈訂閱模式的。
二、日誌進行集中收集,用於計算pv,用戶行爲分析。
![](http://static.javashuo.com/static/loading.gif)
小流量測試,版本a 98%流量,版本a.1 2%流量,最後根據集中日誌收集,經過日誌判斷版本效果。
三、數據複製案例
將數據從源頭複製到多個目的地,通常要求順序或者保證因果。而且保證數據的完整性。
用於跨機房數據傳輸,搜索,離線數據計算等。
![](http://static.javashuo.com/static/loading.gif)
四、延遲消息發送和暫存
(1)把消息中間件當成可靠的消息暫存地。
(2)定時進行消息投遞,好比模擬用戶秒殺訪問,進行系統壓力測試。
![](http://static.javashuo.com/static/loading.gif)
點對點模式
5 消息廣播
![](http://static.javashuo.com/static/loading.gif)
好比電商,商品價格用cache,當數據變動以後因爲網絡緣由,某個cache沒有被更新到,就會出現問題。
這個數據不一致的問題就能夠經過消息中間件來解決。
如今分佈式通常都用租約的方式。
發佈訂閱模式
消息中間件分類:
1 (push)推送消息模型:消息生產者將消息發送給消息傳遞服務,消息傳遞服務又
將消息推送給消息消費者。
消息存儲到消息中間件中,保存推送記錄,保存訂閱關係,消費者負載均衡就是均衡推送給消費者。
2(pull)拉消息模型:消費者請求消息服務接收消息,消息生產者從消息中間件拉該消息。
![](http://static.javashuo.com/static/loading.gif)
RabbitMQ網絡
關鍵字:負載均衡
ExchangeType類型
直接交互式
廣播式路由鍵
主題式交換器
RabbitMQ經常使用配置
![](http://static.javashuo.com/static/loading.gif)
RabbitMQ.config配置例子:異步
Rabbitmq經常使用命令分佈式
reload就是不中止服務的時候對配置更改生效。測試
未完待續網站