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

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

本文轉自:悟空問答

分散式

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

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

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

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

這個就是分散式。

這裡寫圖片描述

中介軟體

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

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

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

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

訊息佇列

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

這裡寫圖片描述

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

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

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

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

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

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

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

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

相關推薦

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

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

Kafka-API中介軟體MQ訊息佇列在Maven專案中的配置使用操作 (分散式釋出訂閱訊息系統)

一、 Maven依賴 <dependency> <groupId>com.foriseland.fjf.mq</groupId> <artifactId>fjf-mq-kafka</artifactId> &

中介軟體訊息佇列

一、簡介 訊息佇列中介軟體是分散式系統中重要的元件,主要解決應用耦合,非同步訊息,流量削鋒等問題。實現高效能、高可用、可伸縮和最終一致性架構。使用較多的訊息佇列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。 二、訊息佇列應

常用訊息佇列對比選擇參考訊息佇列認知

目錄: 1、訊息佇列之常用協議 1.1、AMQP 1.2、MQTT協議 1.3、STOMP協議 1.4、XMPP協議 2、訊息佇列之模型 3、訊息佇列的組成模組 4、常用訊息佇列介紹 4.1、RabbitMQ 4.2、ActiveMQ 4.3、Rocket

中介軟體(2)訊息佇列

原文: 中介軟體(2)訊息佇列   訊息佇列也是構建大型網站架構過程中非常重要的一箇中間件。 訊息佇列 使用過訊息佇列的同學都知道,訊息佇列最常用的兩個場景是: 1,解耦,一般用在大的網站進行業務拆分的時候,用於各應用之間進行訊息通訊。 2,非同步,針對那些不需要同步執行,可以晚點執行的操作都可以使

華為雲分散式資料庫中介軟體DDM開源MyCAT對比

前言 華為雲分散式資料庫中介軟體(Distributed Database Middleware)是解決資料庫容量、效能瓶頸和分散式擴充套件問題的中介軟體服務,提供分庫分表、讀寫分離、彈性擴容等能力,應對海量資料的高併發訪問場景,有效提升資料庫讀寫效能。 圖1:DDM產品介紹   DDM

web伺服器Web中介軟體Web容器的區別

目錄 Web伺服器 中介軟體 容器 總結 Web開發的選擇 我們經常會被Web伺服器、Web容器和Web中介軟體這三個概念搞混。因為我們常見的很多網站要麼是由IIS搭建,要麼是由Apache、Tomcat、Ngnix搭建。所以,我們會把他們都叫成是Web伺服器,因為他們都

從零開發分散式資料庫中介軟體 讀寫分離的資料庫中介軟體

  在傳統的單機體系中,我們在操作資料庫時,只需要直接得到資料庫的連線,然後操作資料庫即可,可是在現在的資料爆炸時代,只靠單機是無法承載如此大的使用者量的,即我們不能縱向擴充套件,那麼我們就只能水平進行擴充套件,即使用讀寫分離的主從資料庫來緩解資料庫的壓力,而在讀寫分離之後

開源的分散式資料庫中介軟體系統Mycat阿里巴巴Cobar的對比

1,愕然回首,它在燈火闌珊處關於mysql叢集中介軟體,以前寫在應用程式裡面,由開發人員實現,在配置檔案裡面寫多個數據源,寫庫一個數據源,讀庫一個數據源,笨拙不高效,由於程式設計師的差異化,效果並不是特別理想。後來,組織了開發人員寫了一個自動識別讀寫的功能模組介面,讓開發人員呼叫,這樣能滿足特定場景的業務需求

分散式資料庫中介軟體產品——sharding-jdbcmycatdrds

        一般對於業務記錄類隨時間會不斷增加的資料,當資料量增加到一定量(一般認為整型值為主的表達到千萬級,字串為主的表達到五百萬)的時候,效能將遇到瓶頸,同時調整表結構也會變得非常困難。為了避免生產遇到這樣的問題,在做系統設計時需要預估可能產生的資料量:預估記錄主體個

訊息中介軟體JMS介紹()

在一個公司創立初期,他可能只有幾個應用,系統之間的關聯也不是那麼大,A系統呼叫B系統就直接呼叫B提供的API介面;後來這個公司做大了,他一步步發展有了幾十個系統,這時候A系統要呼叫B系統的介面,但是B系統前幾天剛改了一下介面A並不知情。所以A發現調不通於是給B系

MyCat:開源分散式資料庫中介軟體

為什麼需要MyCat? 雖然雲端計算時代,傳統資料庫存在著先天性的弊端,但是NoSQL資料庫又無法將其替代。如果傳統資料易於擴充套件,可切分,就可以避免單機(單庫)的效能缺陷。 MyCat的目標就是:低成本地將現有的單機資料庫和應用平滑遷移到“雲”端,解決資料儲存和業務規模迅速

大型網站架構系列:分散式訊息佇列)(轉)

以下是訊息佇列以下的大綱,本文主要介紹訊息佇列概述,訊息佇列應用場景和訊息中介軟體示例(電商,日誌系統)。 本次分享大綱 訊息佇列概述 訊息佇列應用場景 訊息中介軟體示例 JMS訊息服務(見第二篇:大型網站架構系列:分散式訊息佇列(二)) 常用訊息佇列(見第二篇:大型網站架構系列:分

Rabbitmq交換器Exchange訊息佇列

通常我們談到佇列服務, 會有三個概念: 發訊息者、佇列、收訊息者,RabbitMQ 在這個基本概念之上, 多做了一層抽象, 在發訊息者和 佇列之間, 加入了交換器 (Exchange). 這樣發訊息者和佇列就沒有直接聯絡, 轉而變成發訊息者把訊息給交換器, 交換器根據排程策略再把訊息再給佇列。 交換器的功能

總結:JavaScript非同步事件迴圈與訊息佇列微任務與巨集任務

本人正在努力學習前端,內容僅供參考。由於各種原因(不喜歡部落格園的UI),大家可以移步我的github閱讀體驗更佳:傳送門,喜歡就點個star咯,或者我的部落格:https://blog.tangzhengwei.me 掘金:傳送門,segmentfault:傳送門 前言 Phili

(轉)總結:JavaScript非同步事件迴圈與訊息佇列微任務與巨集任務

前言 Philip Roberts 在演講 great talk at JSConf on the event loop 中說:要是用一句話來形容 JavaScript,我可能會這樣: “JavaScript 是單執行緒、非同步、非阻塞、解釋型指令碼語言。”

activeMQ的訂閱者訊息佇列的應用

1.PTP模型 PTP(Point-to-Point)模型是基於佇列(Queue)的,對於PTP訊息模型而言,它的訊息目的是一個訊息佇列(Queue),訊息生產者每次傳送訊息總是把訊息送入訊息佇列中,訊息消費者總是從訊息佇列中讀取訊息.先進佇列的訊息將先被訊息消費者讀取. 傳送方發訊息到佇列

淺談架構框架模式模組元件外掛控制元件中介軟體

軟體開發中,你常常會聽到技術架構、開發框架、設計模式、程式碼模組、中間層(件)、可插拔元件等等計算機行業的專有名詞。這些名詞和我們的開發工作息息相關,如果你想要在開發領域做的更好、走的更遠,你必須要對這些專有名詞有一個大概的瞭解。 1、架構 架構也成稱為軟體體系結構。簡單地說就是一種設計

DAY85-Django框架(十五) 中介軟體CSRF跨站偽裝請求

一、中介軟體 1.定義 ​ 中介軟體顧名思義,是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出。因為改變的是全域性,所以需要謹慎實用,用不好會影響到效能。 ​ 每次請求到檢視之前,或者響應到瀏覽器之前都會經過中介軟體的篩選 2

分散式事務中介軟體 TCC-Transaction 原始碼分析 —— Dubbo 支援

1. 概述 本文分享 Dubbo 支援。 TCC-Transaction 通過 Dubbo 隱式傳參的功能,避免自己對業務程式碼的入侵。可能有同學不太理解為什麼說 TCC-Transaction 對業務程式碼有一定的入侵性,一起來看個程式碼例子: 程式碼來自 t