參考**:
訊息佇列的四種應用場景
[訊息佇列設計思路](
(1)非同步處理
使用者註冊時,可以同時將 傳送郵件 和 傳送簡訊 功能放到訊息佇列中實現。可以提高使用者響應時間,提高系統吞吐量。
(2)應用解耦
使用者下單和庫存扣賬中使用訊息,可以防止庫存系統出問題後,導致使用者下單失敗。
(3)流量削峰
秒殺活動中,由於瞬間吞吐量很大,那麼可以在客戶端和業務處理中間加入訊息佇列,限制人數,丟棄掉過多的使用者請求。這樣可以防止流量暴增導致伺服器掛掉。
(4)日誌處理
日誌採集客戶端,負責日誌資料採集,定時寫受寫入kafka佇列
kafka訊息佇列,負責日誌資料的接收,儲存和**
日誌處理應用:訂閱並消費kafka佇列中的日誌資料
elk stack 日誌分析。(elasticsearch, logstash, kafka)
(5)訊息通訊
點對點通訊
聊天室參考**:rocketmq 解決訊息有序和重複的思路
mq之如何做到訊息冪等
冪等性mq訊息可達性+冪等性+延時性架構設計
處理訊息堆積的方法就是把它存下來。只是這個儲存可以做成很多方式。比如儲存在記憶體裡,儲存在分布式kv裡,儲存在磁碟裡,儲存在資料庫裡等等。但歸結起來,主要有持久化和非持久化兩種。
持久化的形式能更大程度地保證訊息的可靠性(如斷電等不可抗外力),並且理論上能承載更大限度的訊息堆積(外存的空間遠大於記憶體)。
但並不是每種訊息都需要持久化儲存。很多訊息對於投遞效能的要求大於可靠性的要求,且數量極大(如日誌)。這時候,訊息不落地直接暫存記憶體,嘗試幾次failover,最終投遞出去也未嘗不可。
市面上的訊息佇列普遍兩種形式都支援。當然具體的場景還要具體結合公司的業務來看。
訊息佇列設計精要
分布式訊息佇列實現概要
原文:
中介軟體之訊息佇列
訊息佇列本質上就是乙個中轉站,如下圖,生產者將訊息傳送到乙個叫訊息佇列的容器中,然後消費者從容器中去取自己需要的訊息。有沒有覺得和分布式系統的註冊中心有點像啊。這就是最原始最簡單的訊息佇列 佇列模型,允許多個生產者往同乙個佇列中傳送訊息,但同一時刻只能有乙個消費者獲取訊息,消費完後訊息被刪除。由於佇...
訊息中介軟體 訊息匯流排 訊息佇列
一 總論 訊息中介軟體的三大作用 系統解耦 非同步處理 流量削峰。1 非同步處理 解決序列和單純並行,但是這樣做也有弊端,比如註冊實際是失敗了,但是已經顯示註冊完成!2 系統解耦 寫死介面導致的問題不用多說吧,並且導致分布式系統無法解決高併發 不準確 3 流量消峰 也稱限流,在秒殺等業務中為防止流量...
訊息中介軟體
1.訊息的優先順序 2.訊息排序 3.訊息過濾 4.訊息持久化 5.訊息重試 6.事務的支援 7.broker滿 生產者,佇列,消費者 訊息佇列的優點 1 解耦2 非同步訊息,系統響應 在jms中,有兩種訊息模型 點對點模式和發布訂閱模式。1.在點對點模式中 有三種角色 1 訊息佇列,傳送者,接受者...