一、訊息佇列概述
訊息佇列中介軟體是分布式系統的重要組建,主要解決:應用耦合,非同步訊息,流量削峰、訊息通訊等問題。
目前在生產環境,使用較多的訊息佇列有:activemq、rabbitmq、zeromq、kafka、metamq、rocketmq
二、訊息佇列應用場景
1.非同步處理
如,使用者註冊後,序列傳送註冊郵件和簡訊,會浪費時間。但是使用訊息佇列,註冊資訊寫入資料庫——寫入訊息佇列——非同步讀取——傳送註冊郵件(註冊簡訊),可提高系統吞吐量。
2.應用解耦
場景:使用者下單後,訂單系統需要通知庫存系統,傳統方法是呼叫庫存系統的介面,但假如庫存系統無法訪問,則訂單失敗,訂單系統與庫存系統耦合。
解決方案:
3.流量削峰
應用場景:秒殺活動,一般會因為流量過大而導致應用掛掉。應用訊息佇列,可控制活動人數,緩解短時間內高流量
解決方案:伺服器接受使用者請求後,首先寫入訊息佇列,如果訊息佇列長度超過最大數量,則直接拋棄使用者請求或跳轉到錯誤頁面。
4.日誌處理
如kafka的應用,解決大量日誌傳輸的問題。
日誌採集客戶端:負責日誌資料採集,定時寫入kafka佇列。
kafka佇列:負責日誌資料的接受、儲存和**
注:elasticsearch:實時日誌分析服務的核心技術,乙個schemaless,實時資料儲存服務,通過index組織資料,兼具強大的搜尋和統計功能。kibana是基於elasticsearch的資料視覺化元件。
三、jms訊息服務
有兩種訊息模型,p2p和 publish/subscribe
1.點對點
每個訊息 只有乙個消費者,傳送者傳送訊息後,不會管是否接收成功
2.發布/訂閱模式
三個角色:主題、發布者、訂閱者。多個發布者傳送訊息到多個訂閱者。
3.訊息消費:
同步:訂閱者通過receive方法接收訊息,接收到訊息前將一直阻塞
非同步:可註冊乙個訊息***,小氣到達之後,自動呼叫***的onmessage方法
分布式訊息佇列
以下是訊息佇列以下的大綱,本文主要介紹訊息佇列概述,訊息佇列應用場景和訊息中介軟體示例 電商,日誌系統 訊息佇列概述 訊息佇列應用場景 訊息中介軟體示例 jms訊息服務 見第二篇 大型 架構系列 分布式訊息佇列 二 常用訊息佇列 見第二篇 大型 架構系列 分布式訊息佇列 二 參考 推薦 資料 見第二...
分布式訊息佇列
訊息佇列中介軟體是分布式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能,高可用,可伸縮和最終一致性架構。是大型分布式系統不可缺少的中介軟體。目前在生產環境,使用較多的訊息佇列有activemq,rabbitmq,zeromq,kafka,metamq,rocketmq等。...
Redis 應用01 分布式鎖
在處理分布式應用併發的時候,常常會使用鎖。比如我們有個 num 3,應用對num操作 去資料庫取值 取完值,在記憶體中,進行邏輯運算後重新賦值 存回資料庫 當多個應用同時對num操作的時候 比如 a和b 都對num進行操作 取值 a1 b1 賦值 b1 b3 在資料庫操作中,如果執行順序是a1 a3...