1.訊息佇列的作用
解耦:各代碼塊或者系統通信都可能存在強耦合的關系,可以通過訊息佇列處理強耦合,
消峰:消減高并發峰值,防止請求達到系統處理上限以及超過上限時不丟失不拒絕請求,
2.rabbitmq介紹
rabbimtq實作了sun公司定義的AMQP(advanced message queue protocal)高級訊息佇列協議,默認埠15672,
RabbitMQ服務端結構:連接組件、交換機組件(exchange)、佇列組件(queue),客戶端通過獲取連接通道和服務端進行訊息的邏輯處理的溝通,
長連接:基于TCP/ip封裝的,創建和銷毀都占用大量資源不易頻繁創建銷毀,
短連接:基于長連接創建的短連接,可以頻繁創建銷毀速度很快適合用來通信管理,
RabbitMQ交換機:在客戶端使用rabbitmq時很有可能會通過一次訊息傳遞并發發送到多個后端佇列中,對于客戶端并發能力就有穩定的高性能的要求,如果這種并發發送訊息交給客戶端,由于客戶端語言不同性能不同并發不同,導致rabbitmq技術使用不穩定,引入交換機,只允許生產端發送訊息時交給交換機由交換機來處理后續發送佇列并發邏輯,
消費端的確認機制邏輯:佇列保存訊息資訊,消費端監聽佇列獲取訊息,佇列將訊息轉化為unacked未確認狀態如果消費端回傳ack確認佇列洗掉訊息,如果消費端沒有回傳ack確認,狀態一直保持在unacked,直到消費端斷開連接,訊息回復ready,確認機制的目的是為了提供一個確保訊息正常消費的邏輯,消費端不一定所有業務場景都必須保證訊息的正確消費,可以丟失一部分資料保證處理速度,
autoAck:false//可以保證每條訊息正確處理的,成功率高效率低,
autoAck:true//只要消費端拿到訊息,就確認回傳,成功率低效率高,
2.1 交換機的分類和運行機制
交換機的運行機制:生產端要發送訊息,永遠不會將訊息發送給佇列,而是發送給交換機,訊息本身除了資料以外,攜帶一個路由key值,交換機根據自身的型別不同,采用不同的方式處理這些訊息,
2.1.1 簡單模式
一個佇列queue只被一個消費者監聽消費,生產者生成訊息發送到交換機,交換機根據訊息屬性,將訊息發送給佇列,消費者監聽這個佇列,發現訊息后獲取訊息執行消費邏輯,
2.1.2 爭搶模式
生產者發送訊息到交換機,交換機根據訊息屬性將訊息發送給佇列,多個消費者同時系結監聽一個佇列,之間形成了爭搶訊息的效果,
2.1.3 發布訂閱(fanout)
生產端發送訊息到交換機,交換機由于是發布訂閱模式會將這個訊息發送同步到后端所有與其系結的佇列,應用場景:郵件的群發,廣告的群發,
2.1.4 路由模式(direct)
生產端發送的訊息攜帶具體的路由key值,交換機接收路由key值,判斷和當前交換機系結后端佇列哪個滿足路由的匹配將訊息發送給這個佇列,應用場景:處理一些特殊的訊息邏輯,可以經過路由的篩選,
2.1.5 主題模式(topic)
類似于路由模式的結構,區別在于佇列系結交換機使用的路由key,交換機系結佇列不再使用具體路由key,可以使用符號代替路由key,應用場景:實作多級傳遞的路由篩選作業,
#:任意級的任意長度的字串,*:任意長度字串,但是只有一級,
例如IP為中國.北京.朝陽.望京.葫蘆村
可以匹配到 中國.*.*.*.*
不可以匹配到 中國.*.懷柔.#
可以匹配到 *.*.朝陽.#
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423566.html
標籤:其他
上一篇:機器學習分類演算法之支持向量機
