分布式通訊方式 分布式訊息傳遞

2021-07-05 23:29:11 字數 2139 閱讀 8696

談到系統間的協作,目前常用兩種方式:

1、基於http協議

通過客戶端發起的get、post請求,服務端接收request請求,處理請求,得到響應內容,通過網路傳送到客戶端,由瀏覽器解析出乙個視覺化的頁面。

這種互動最大的優勢是實時性,通過http請求連線各個子系統,從而跨伺服器來完成乙個完整的業務流程。缺點協議請求頭的資訊較少,一般都是關鍵引數,完整資料由下乙個子系統從資料庫、檔案系統來獲取,從來保證前後的業務資料銜接。

2、基於訊息的模式。

這種模式乙個很重要前提是對實時性要求不高。優點可以有效降低模組的耦合性,減輕主幹業務流程,將大量的業務交由後台任務來處理,有效縮短系統響應時間,提高系統tps。

比如使用者下單成功後傳送郵件功能,屬於非主幹功能,完全可以從下單的主幹業務邏輯剝離出來,從來提高下單的響應速度。而傳送郵件的功能則由郵件伺服器接收非同步訊息來跟蹤處理,帶有點分布式集群的感覺,

將乙個任務有效拆分到多台伺服器來完成。

所謂訊息本質上是一種資料結構(當然,物件也可以看做是一種特殊的訊息),它包含生產者與消費者雙方都能識別的資料,這些資料需要在不同的伺服器之間進行傳遞,並可能會被多個完全不同的客戶端消費。

訊息佇列降低了生產者和消費者之間的耦合性,他們不會存在直接的**依賴,方便各自的擴充套件,比如生產者因為業務下線,導致**下線,而消費端不用同時跟進處理,只是佇列不會有訊息,這樣方便於更加靈活的協調開發資源,而不必一方下線,所有的依賴全部受影響,產生較高維護成本。另外我們也可以隨意對生產者和消費者擴充套件,引入多個訊息佇列,他們之間的依賴可以配置在xml檔案中,通過jndi來獲取訊息佇列queue,每次載入時,通過lookup服務首先通過讀取配置檔案來獲取通道。

常見的訊息模型分為:點對點模型;發布-訂閱模型

點對點模型:point to point,訊息被生產者放到乙個佇列中,消費者從訊息佇列中取走訊息。訊息一旦被乙個消費者取走後,訊息就從佇列中移除。這意味著即使有多個消費觀察乙個佇列,但乙個訊息只能被乙個消費者取走。

發布-訂閱模型:publish/subscribe,發布者發布一條訊息可以傳送給所有的訂閱使用者,所有的訂閱使用者都有處理某一條訊息的機會。

對於訂閱者而言,有兩種處理訊息的方式。一種是廣播機制,這時訊息通道中的訊息在出列的同時,還需要複製訊息物件,將訊息傳遞給多個訂閱者。例如,有多個子系統都需要獲取從crm系統傳來的客戶資訊,並根據傳遞過來的客戶資訊,進行相應的處理。此時的訊息通道又被稱為propagation通道。另一種方式則屬於搶占機制,它遵循同步方式,在同一時間只能有乙個訂閱者能夠處理該訊息。實現publisher-subscriber模式的訊息通道會選擇當前空閒的唯一訂閱者,並將訊息出列,並傳遞給訂閱者的訊息處理方法。

目前使用較多的是廣播機制的訊息處理方式,且將topic與queue有效組合

乙個生產訊息的事件對應乙個topic,topic下面可以掛多個queue,當然乙個queue也可以掛在多個topic下面,每個queue都對應乙個訊息的消費端,唯一消費,保證消費的準確性。

如下圖所示,當下單時,會將下單的相關資訊封裝到訊息體中,傳送到下單事件關聯的那個topic1中,然後topic會將訊息複製傳送到掛載在其下面的所有佇列上,將message複製到快照佇列、成交記錄統計佇列中,訊息端會監聽佇列,

如果有訊息 ,則啟動任務執行緒,來進行相關的業務處理。

在引入訊息佇列時重點要注意以下幾點:

目前市場上有很多成熟的訊息框架:如active mq,ibm 的mq,jboss mq,msmq等,各有各的優勢,在使用前一定要充分衡量是否可以滿足自己的業務需求

分布式 分布式鎖

本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式訊息佇列

以下是訊息佇列以下的大綱,本文主要介紹訊息佇列概述,訊息佇列應用場景和訊息中介軟體示例 電商,日誌系統 訊息佇列概述 訊息佇列應用場景 訊息中介軟體示例 jms訊息服務 見第二篇 大型 架構系列 分布式訊息佇列 二 常用訊息佇列 見第二篇 大型 架構系列 分布式訊息佇列 二 參考 推薦 資料 見第二...