晨讀系列 01 分布式架構訊息佇列

2021-08-03 16:07:26 字數 1004 閱讀 7457

一、訊息佇列概述

訊息佇列中介軟體是分布式系統的重要組建,主要解決:應用耦合,非同步訊息,流量削峰、訊息通訊等問題。

目前在生產環境,使用較多的訊息佇列有: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...