1. 程式人生 > >什麼是分散式訊息中介軟體?

什麼是分散式訊息中介軟體?

對於分散式訊息中介軟體,首先要了解兩個基礎的概念,即什麼是分散式系統,什麼又是中介軟體。

分散式系統

“A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messasges.”——《Distributed Systems Concepts and Design》

從上面這個解釋可以得到分散式系統的兩個特點:

  1. 元件分佈在網路計算機上
  2. 元件之間通過訊息來協調行動
  • 中介軟體

Middleware is computer software that provides services to software applications beyond those available from the operating system. It can be described as "software glue". Middleware makes it easier for software developers to implement communication and input/output, so they can focus on the specific purpose of their application.——維基百科

中介軟體被描述為為應用程式提供作業系統所提供的服務之外的服務,簡化應用程式的通訊、輸入輸出的開發,使他們專注於自己的業務邏輯。

從維基百科上對中介軟體的解釋感覺有點繞,其實可以從“空間”的角度去理解中介軟體,即中介軟體是處於“中間層”的元件,是上層的應用程式和底層的服務之間的橋樑(比如DB中介軟體的上層是應用程式,底層是DB服務),也是應用與應用之間的橋樑(比如分散式服務元件)。

  • 分散式訊息中介軟體

“Message-oriented middleware (MOM) is software or hardware infrastructure supporting sending and receiving messages between distributed systems.”——維基百科

維基百科給出的訊息中介軟體的定義是支援在分散式系統中傳送和接受訊息的硬體或軟體基礎設施(對我們這裡討論的範圍來說肯定就是軟體了)。

那麼分散式訊息中介軟體其實就是指訊息中介軟體本身也是一個分散式系統。

訊息中介軟體能做什麼?

任何中介軟體必然都是要去解決特定領域的某個問題,訊息中介軟體解決的就是分散式系統之間訊息傳遞的問題。訊息傳遞是分散式系統必然要面對的一個問題。

假設一個電商交易的場景,使用者下單之後呼叫庫存系統減庫存,然後需要呼叫物流系統進行發貨,如果交易、庫存、物流是屬於一個系統的,那麼就是介面呼叫。但是隨著系統的發展,各個模組越來越龐大、業務邏輯越來越複雜,必然是要做服務化和業務拆分的。這個時候就需要考慮這些系統之間如何互動,第一反應就是RPC(Remote Procedure Call)。系統繼續發展,可能一筆交易後續需要呼叫幾十個介面來執行業務,比如還有風控系統、簡訊服務等等。這個時候就需要訊息中介軟體登場來解決問題了。

筆者認為,RPC和訊息中介軟體的場景的差異很大程度上在於就是“依賴”和“量”。比如簡訊通知服務並不是事交易環節必須的,並不影響下單流程,不是強依賴,所以交易系統不應該依賴簡訊服務。比如一些資料分析程式可能需要在拿到一天的總銷售量,這個就只需要銷售中心提供介面在需要時呼叫即可。

訊息中介軟體出現以後對於交易場景可能是呼叫庫存中心等強依賴系統執行業務,之後釋出一條訊息(這條訊息儲存於訊息中介軟體中)。像是簡訊通知服務、資料統計服務等等都是依賴於訊息中介軟體去消費這條訊息來完成自己的業務邏輯。

從以上的場景可以看出訊息中介軟體其實就是對系統進行了解耦,同時帶來了非同步化等好處。

簡單概括一下訊息中介軟體的應用場景大致如下:

  • 業務解耦:交易系統不需要知道簡訊通知服務的存在,只需要釋出訊息
  • 削峰填谷:比如上游系統的吞吐能力高於下游系統,在流量洪峰時可能會沖垮下游系統,訊息中介軟體可以在峰值時堆積訊息,而在峰值過去後下游系統慢慢消費訊息解決流量洪峰的問題
  • 事件驅動:系統與系統之間可以通過訊息傳遞的形式驅動業務,以流式的模型處理

分散式訊息中介軟體長什麼樣?

一個抽象的對分散式訊息中介軟體的認知大概是這樣:

  • 有一個SDK,提供給業務系統傳送、消費訊息的介面
  • 有一批Server節點用於接受和儲存訊息,並在合適的時候傳送給下游的系統進行消費

關於分散式訊息中介軟體詳細內容:

(阿里雲訊息佇列MQ(Message Queue)是企業級網際網路架構的核心產品,服務於整個阿里巴巴集團已超過8年,經過阿里巴巴交易核心鏈路反覆打磨與歷年雙十一嚴苛考驗,是一個真正具備低延遲、高併發、高可用、高可靠,可支撐萬億級資料洪峰的分散式訊息中介軟體。)

內容介紹:

課時1:MQ 快速入門 02:19

課時2:MQ 介紹 15:02

課時3:MQ 資源報表使用指南 01:00

課時4:MQ 訊息查詢 02:16

更多精品課程:

相關推薦

為什麼你要使用這麼強大的分散式訊息中介軟體——kafka

為什麼是kafka? 在我們大量使用分散式資料庫、分散式計算叢集的時候,是否會遇到這樣的一些問題: 我們想分析下使用者行為(pageviews),以便我們設計出更好的廣告位 我想對使用者的搜尋關鍵詞進行統計,分析出當前的流行趨勢 有些資料,儲存資料庫浪費,直接儲存硬碟效率又低

Java架構-spring+springmvc+kafka分散式訊息中介軟體整合方案

Honghu的訊息服務平臺已經拋棄了之前的ActiveMQ,改用高吞吐量比較大的Kafka分散式訊息中介軟體方案: kafka訊息平臺使用spring+kafka的整合方案,詳情如下: 使用最高版本2.1.0.RELEASE整合jar包:spring-integration

分散式架構】分散式訊息中介軟體MQ開發教程

關於分散式訊息中介軟體MQ的詳細介紹: 【分散式架構】分散式訊息中介軟體MQ開發教程 (阿里雲訊息佇列MQ(Message Queue)是企業級網際網路架構的核心產品,服務於整個阿里巴巴集團已超過8年,經過阿里巴巴交易核心鏈路反覆打磨與歷年雙十一嚴苛考驗,是一個真正具備低延遲、高併發、高可用

分散式訊息中介軟體 RocketMQ:概述與原始碼編譯篇

一、前言 Apache RocketMQ 是一個分散式訊息中介軟體,其具有低延遲、高效能和可靠性、萬億級容量、靈活的可擴充套件性特性;它是阿里巴巴在2012年開源的分散式訊息中介軟體,目前已經捐贈給 Apache 軟體基金會,並於2017年9月25日成為 Apache 的頂級專案。 二、Roc

分散式訊息中介軟體(六)——Kafka核心元件詳解

一、Kafka釋出訂閱訊息系統基礎      Kafka 是分散式釋出-訂閱訊息系統。它最初由 LinkedIn 公司開發,使用 Scala語言編寫,之後成為 Apache 頂級專案框架。Kafka

分散式訊息中介軟體(四)——Flume+Kafka+Storm+Redis生態架構實戰

一、Kafka專案應用架構分析 1、Kafka生態架構        資料收集的速度,跟處理的速度不一定一致,故使用Kafka中介軟體作為資料收集和資料處理的一個Access入口,接收flume收集的資料,並通過kafkaSpout提交給Storm進行處理。 2、kafka

什麼是分散式訊息中介軟體

對於分散式訊息中介軟體,首先要了解兩個基礎的概念,即什麼是分散式系統,什麼又是中介軟體。分散式系統“A distributed system is one in which components located at networked computers communica

分散式架構】阿里免費送你分散式訊息中介軟體MQ開發教程

課程介紹 阿里雲訊息佇列MQ(Message Queue)是企業級網際網路架構的核心產品,服務於整個阿里巴巴集團已超過8年,經過阿里巴巴交易核心鏈路反覆打磨與歷年雙十一嚴苛考驗,是一個真正具備低延遲、高併發、高可用、高可靠,可支撐萬億級資料洪峰的分散式訊息中介軟體。 訊息佇

高效能可伸縮的分散式訊息中介軟體設計

訊息中介軟體基本上是每一個大型網際網路公司的標準基礎技術元件配置,雖然有很多的開源訊息中介軟體,功能也很強大,但是今天我還是想介紹一下怎樣自主架構與設計並實現一套完整的分散式訊息中介軟體。開源的訊息中介軟體或多或少存在一些所謂“坑”,沒有遇到大家用得都很happy,遇到的同學

分散式訊息中介軟體(一)——ActiveMQ點對點訊息模式

一、下載執行 1、官網下載      Windows版:apache-activemq-5.13.3-bin.zipLinux版:apache-activemq-5.13.3-bin.tar.gz 2、Windows下根據作業系統位數,執行activemq.bat檔案,啟動

分散式訊息中介軟體-ActiveMQ

本章知識點: 什麼是訊息中介軟體 訊息中介軟體能做什麼 AciiveMQ簡介 從JMS規範來了解Active

訊息中介軟體(一)分散式系統事務一致性解決方案大對比,誰最好使?(轉)

原文轉載至:https://blog.csdn.net/lovesomnus/article/details/51785108   在分散式系統中,同時滿足“一致性”、“可用性”和“分割槽容錯性”三者是不可能的。分散式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣? 在OLTP系統領域,

分散式事務之——基於訊息中介軟體實現

 環境需求:假如某人有5個女朋友(有點複雜),每天晚上都會給他的女朋友打電話說晚安,那麼每給一個女朋友打電話,其他女朋友都要進入等待狀態。一個一個打下去。。。等打到最後一個已經是凌晨了,對方都睡了。那麼有什麼辦法可以解決呢?此時這個人可以利用微信公眾號將自己甜言蜜語放進公眾號

Dubbo+Zookeeper架構—高階篇16—訊息中介軟體分散式系統中的作用及介紹

一、訊息中介軟體的定義        Message-orientedmiddleware (MOM) is software infrastructure focused on sending and receivingmessages between distribute

【陌上軒客】技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器和自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業規劃:勵志成為一名出色的伺服器端系統架構師。

陌上軒客 技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器和自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業...

訊息中介軟體分散式系統中的作用及介紹

一、訊息中介軟體的定義        Message-orientedmiddleware (MOM) is software infrastructure focused on sending and receivingmess

VIP4.0-MQ訊息中介軟體分散式系統中的作用

1.訊息中介軟體在分散式系統中的作用介紹 訊息中介軟體是在分散式系統中完成訊息的傳送和接收的基礎軟體。 1.1訊息中介軟體可利用高效可靠的訊息傳遞機制進行平臺無關的資料交流, 並基於資料通訊來進行分散式系統的整合。通過提供訊息傳遞和訊息 排隊模型,可以在分散式環境下擴充套件程序間的通訊。 通過訊

訊息中介軟體(一)分散式系統事務一致性解決方案大對比,誰最好使?

在分散式系統中,同時滿足“一致性”、“可用性”和“分割槽容錯性”三者是不可能的。分散式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣? 在OLTP系統領域,我們在很多業務場景下都會面臨事務一致性方面的需求,例如最經典的Bob給Smith轉賬的案例。傳統的企業開發,

分散式中介軟體訊息佇列到底是怎麼的一種工作模式?

本文轉自:悟空問答 分散式 相對於以前單一系統,所有的功能,服務都部署在一臺伺服器上,一掛全掛!分散式採用了把系統提供的服務分佈在不同的伺服器上的策略,這樣的架構就叫做分散式架構! 我有一個系統A,提供一個很簡單的介面,根據員工編號查詢員工姓名和他的考

Dubbo高階篇_01_訊息中介軟體分散式架構的作用和介紹

訊息中介軟體的定義 Message-oriented middleware (MOM) is software infrastructure focused on sending and receiving messages between distributed syst