分布式中介軟體設計篇

2021-10-08 09:25:18 字數 2130 閱讀 3379

利用高效可靠訊息傳遞機制進行平台無關的資料交流;

並基於資料通訊來進行分布式系統的繼承;

通過提供訊息傳遞和訊息排隊模型,它可以在分布式環境下擴充套件程序間的通訊;

跨系統資料傳遞、高併發流程削峰、資料非同步處理…等等

activemq rabbitmq kafka rocketmq

一種具備接受請求、儲存資料、傳送資料等功能的網路應用。

和一般網路應用程式的區別是它主要負責資料的接受和傳遞,所以效能一般都高於普通程式。

協議、持久化機制、訊息分發機制、高可用設計、高可靠設計

協議是計算機之間通訊時共同遵從的一組約定,都遵守相同的約定,計算機之間才能相互交流。

是對資料格式和計算機之間交換資料時必須遵守的規則的正式描述。

訊息中介軟體常用的協議:openwire amqp mqtt kafka openmessage

① amqp協議

amqp(advanced message queuing protocol)是高階訊息佇列協議04年jpmorgan chase(摩根大通集團)聯合其他公司共同設計。

② mqtt協議

mqtt(message queuing telemetry transport)訊息佇列遙測傳輸是ibm開發的乙個即時通訊協議,物聯網系統架構中的重要組成部分。

③ openmessage協議

openmessage是近一兩年內由阿里發起,與雅虎、滴滴出行、streamlio等公司共同參與創立的分布式訊息中介軟體、流處理領域的應用開發標準。

是國內首個在全球範圍內發起的分布式訊息領域國際標準。

④ kafka協議

kafka協議基於tcp的二進位制協議。訊息內部是通過長度來分隔,由一些基本資料型別組成。

簡單來說就是將資料存入磁碟,而不是存在記憶體中隨服務重啟而訊息,使資料能夠永久保留,叫做持久化。

常用持久化方式

中介軟體activemq

rabbitmq

kafka

rocketmq

檔案系統

支援支援

支援支援

資料庫支援//

/業務場景一:乙個訊息中介軟體有多個子系統連線,前台系統傳送訊息時,通過分發策略,確定將訊息**給哪個子系統。

業務場景二:出現問題的時候,支援重發。

中介軟體activemq

rabbitmq

kafka

rocketmq

發布訂閱

支援支援

支援支援

輪詢分發

支援支援支援/

公平分發/支援

支援/重發支援支援/

支援訊息拉取/支援

支援支援

高可用性是指產品在規定的條件和規定的時刻或時間區域內處於可執行規定功能狀態的能力。

當業務量大時,一台訊息中介軟體伺服器可能無法滿足需求,所以需要訊息中介軟體能夠集群部署,來達到高可用的目的。

高可靠性是指系統可以無障礙地持續執行。比如乙個系統從來不崩潰、報錯,或者崩潰的機率較低,那就是高可靠。

在高併發業務場景下,如果不能保證系統的高可靠,那麼造成的損失將會非常嚴重。

中介軟體高可靠性,考慮因素:

訊息傳輸可靠:通過協議來保證系統間資料解析的正確性。

訊息儲存可靠:通過持久化來保證訊息的儲存可靠性。

分布式訊息中介軟體

一 分布式訊息中介軟體入門 訊息中介軟體主要實現分布式系統中解耦 非同步訊息 流量銷鋒 日誌處理等場景。現在生產中用得最多的訊息佇列有 activemq,rabbitmq,kafka,rocketmq 等。jms 規範 類似於 jdbc 的一套介面規範,但不同的是他是面向的訊息服務,提供一套標準 a...

網易雲課堂學習 分布式中介軟體設計篇

單體架構 所有 都在乙個專案中,耦合度太高,公升級乙個模組需要將所有模組都公升級一遍。分布式系統架構 乙個請求需要多個系統協調處理 基於訊息中介軟體的分布式系統 訊息中介軟體概述 什麼是訊息中介軟體 利用高效可靠的訊息傳遞機制,進行平台無關的資料交流 並基於資料通訊來進行分布式系統的整合 通過提供訊...

分布式訊息中介軟體 kafka

在我們大量使用分布式資料庫 分布式計算集群的時候,是否會遇到這樣的一些問題 這個時候,我們就可以用到分布式訊息系統了。雖然上面的描述更偏向於乙個日誌系統,但確實kafka在實際應用中被大量的用於日誌系統。首先我們要明白什麼是訊息系統,在kafka官網上對kafka的定義叫 a distributed...