1. 程式人生 > >分散式、中介軟體和訊息佇列到底是怎麼的一種工作模式?

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

本文轉自:悟空問答

分散式

相對於以前單一系統,所有的功能,服務都部署在一臺伺服器上,一掛全掛!分散式採用了把系統提供的服務分佈在不同的伺服器上的策略,這樣的架構就叫做分散式架構!

我有一個系統A,提供一個很簡單的介面,根據員工編號查詢員工姓名和他的考勤記錄。

我拆開兩個系統:人員管理系統B和考勤系統C,分別部署在兩臺伺服器上。

這個需求,需要呼叫一下系統B,再呼叫一下系統C,最後得到需要的結果。

這個就是分散式。

這裡寫圖片描述

中介軟體

將具體業務和底層邏輯解耦的軟體。

之前看過一個很生動例子:

我要開一家炸雞店(業務端),需要雞肉,有很多養雞場(底層),我需要一個一個比較價錢,然後找一家價效比高的養雞場合作(適配不同底層邏輯)。可能一段時間後,我需要重新選一家養雞場合作,進貨方式、交易方式等要重新制定(重新適配)。

這一套事情太複雜了,於是我找到了一個專門整合養雞場的第三方代理(中介軟體),跟他談好價格和質量後(統一介面),以後我就只需要給代理錢,然後拿肉就行。具體這個第三方代理怎麼操作,我不用管。

訊息佇列

訊息佇列可以看做記憶體中的佇列,有人往裡放訊息,有人從裡取訊息。

這裡寫圖片描述

  • Producer:訊息生產者。
  • Broker:訊息處理中心,負責訊息儲存、確認、重試等。
  • Consumer:訊息消費者。

訊息佇列的特點是:非同步、解耦、可靠性(訊息佇列一般會把接收到的訊息持久化到本地硬碟上)

用較多的訊息佇列有ActiveMQ,RabbitMQ,Kafka,RocketMQ,它們又可以被稱作是訊息中介軟體

,訊息中介軟體解決的就是分散式系統之間訊息傳遞的問題。

比如我是做網上商城的,有一個簡訊系統,當客戶下了一個訂單之後,通知客戶你下單成功。

當訂單量比較小的時候,只需要呼叫傳送簡訊的介面就可以了。

但是如果訂單量大了之後呢,並且簡訊傳送晚個一兩分鐘也沒有什麼問題,那麼就可以使用訊息中介軟體:把待發送的簡訊傳送到訊息佇列裡面,簡訊系統從訊息佇列中取出簡訊進行傳送就可以了。

而且還有一個好處:如果簡訊系統掛掉了,簡訊訊息儲存在訊息中介軟體裡面不會丟失,等簡訊系統恢復了之後,繼續簡訊傳送即可。

相關推薦

no