整體來說,訊息中間件有以下作用:降低耦合、流量消峰、非同步通訊、可靠性傳輸
1.降低耦合:透過發布訂閱的方式鬆散耦合
我們以註冊業務為例,註冊成功會發送簡訊、郵件給用戶來確認,傳統架構模型是這樣:
郵件業務和簡訊業務的程式碼是寫在使用者註冊的流程裡,無論是透過介面的方式來實現,還是遠端呼叫的方式來實現,耦合度都很高,現在,新增一個需求,使用者註冊完成以後不發送郵件了,而是給用戶“增加積分”,我們來分析這幾種情況:第一、都在一個業務系統內通過代碼堆積、接口調用的方式來實現註冊成功後的業務處理,我們需要改變註冊代碼,上線時需要啟動停止應用,這種方式耦合度最高。 第二、透過遠端呼叫的方式,當我們要新增業務處理時,還是要改變主流程程式碼,避免不了啟動停止應用程式。 如果我們引入訊息中間件,如下:透過發布訂閱的方式,用戶註冊成功後,給訊息中間件發送一個訊息,各個業務端訂閱同一個頻道的訊息,接收到註冊成功的訊息後就執行對應業務。新增“增加積分”,就讓積分系統相關處理訂閱這個消息就夠了,不用改動用戶業務代碼,不用啟停應用,就可以實現業務的平滑擴展。 2.非同步通訊還拿上面舉例,傳統架構中當使用者註冊完成,並發送完簡訊郵件後才傳回客戶端通知使用者註冊成功。而使用訊息中間件後用戶提交完註冊資訊處理完成後即可提示用戶註冊成功,後續簡訊服務、郵件服務得到訂閱的頻道中的用戶註冊成功訊息後再去發送簡訊和郵件,業務之間不再相互制約。
3.流量消峰、防浪湧
並發量達到高峰時,後端系統壓力通常會很大,無論是應用伺服器還是資料庫伺服器,這個時候可以將類似請求放到訊息中介軟體的訊息佇列中堆積起來慢慢處理,也可以設定訊息佇列的大小達到控制並發量的目的,商品秒殺的業務場景比較典型。
4.可靠性傳輸基於訊息的通訊是可靠的,訊息不會遺失。大多數訊息中間件都提供將訊息持久化到磁碟的功能。在開篇的第一個場景中,訊息中間件可以將生產者生產的訊息持久化到磁碟,後端應用宕機,但訊息不會遺失,應用重啟繼續處理。 你可能會有這樣的疑問,那訊息中間件宕機了,接收不到訊息怎麼持久化?沒關係,訊息中間件提供了多種訊息複製策略、持久化策略,叢集部署策略等都可以保證訊息的可靠性傳輸。
二、訊息中間件模式
############# ####三、常用訊息中間件###############RabbitMQ#########1.RabbitMQ特性:######RabbitMQ是一個由Erlang語言開發的基於AMQP標準的開源實作。 RabbitMQ最初起源於金融系統,用於在分散式系統中儲存轉發訊息,在易用性、擴展性、高可用性等方面表現不俗。其具體特點包括:######可靠性######靈活的路由###支援訊息群集
高可用性
支援多種協定 (除支援AMQP協定之外,也透過插件的方式支援其他訊息佇列協議,如STOMP、MQTT)
支援多語言客戶端
提供管理介面
提供追蹤機制
提供插件機制 (RabbitMQ提供了許多插件,也可以編寫自己的插件)
總結:
RabbitMQ最大的優勢在於提供了比較靈活的訊息路由策略、高可用性、可靠性以及豐富的插件、多種平台支援和完善的文件。不過,由於AMQP協定本身導致它的實現比較重量,從而使得與其他MQ (例如Kafka) 對比其吞吐量處於下風。
ActiveMQ
1.ActiveMQ 特點:
ActiveMQ是由Apache出品的開源訊息中間件,旨在為應用程式提供高效、可擴展、穩定、安全的企業級訊息通訊。 ActiveMQ實現了JMS 1.1 並提供了許多附加的特性,例如JMX管理、主從管理、訊息群組通訊、訊息優先權、延遲接收訊息、虛擬接收者、訊息持久化、訊息佇列監控等。主要特性如下:
支援Java、C、C 、C#、Ruby、Perl、Python、PHP等多種語言的用戶端和協議,如OpenWire、STOMP、AMQP、MQTT協定。
提供了像是訊息群組通訊、訊息優先權、延遲接收訊息、虛擬接收者、訊息持久化之類的高階特性。
完全支援JMS 1.1 和J2EE 1.4 規範(包括持久化、分散式事務訊息、事務)
支援Spring框架,ActiveMQ 可以透過Spring 的設定檔方式很容易嵌入Spring應用中。
通過了常見的J2EE伺服器測試,例如TomEE、Geronimo、JBoss、GlassFish、WebLogic。
連接方式多樣化,ActiveMQ 提供了多種連接方式,例如 in-VM、TCP、SSL、NIO、UDP、多播、JGroups、JXTA。
支援透過使用JDBC 和 Journal 實作訊息的快速持久化。
為高效能叢集、客戶端-伺服器、點對點通訊等場景而設計。
提供了一個技術和語言中立的REST API 介面。
支援以AJAX 方式呼叫 ActiveMQ。
ActiveMQ 可以輕鬆地與CXF、Axis 等 WebService 技術整合,以提供可靠的訊息傳遞。
可以作為記憶體中的JMS 提供者,非常適合 JMS 單元測試。
Kafka
1.Kafka 特點:
Kafka 最早是由LinkedIn 公司開發的一種分散式的基於發布/訂閱的訊息系統,後來成為Apache 的頂級專案。其主要特點如下:
同時為發布和訂閱提供高吞吐量。 (Kafka 的設計目標是以時間複雜度為O(1) 的方式提供訊息持久化能力的,即使對TB級別以上資料也能保證常數時間的存取性能,即使在非常廉價的商用機器上也能做到單機支援每秒100K 訊息的傳輸)
訊息持久化。 (將訊息持久化到磁碟,因此可用於批量消費,例如 ETL 以及即時應用程式。透過將資料持久化到硬碟以及複製可以防止資料遺失。)
分散式。 (支援伺服器間的訊息分區及分散式消費,同時確保每個Partition 內的訊息順序傳輸。其內部的Producer、Broker 和Consumer 都是分散式架構,這更容易向外擴展。)
消費訊息採用Pull 模式。 (訊息被處理的狀態是在Consumer 端維護的,而不是由伺服器端維護,Broker 無狀態,Consumer 自己保存offet。)
支援Online 和Offline 場景,同時支援離線資料處理和即時數據處理。
RocketMQ
1.RocketMQ 特色:
RocketMQ是阿里巴巴於2012年開源的分散式訊息中介軟體,後來捐贈給Apache軟體基金會,並於2017年9月25日成為Apache的頂級計畫。作為經歷過多次阿里巴巴「雙11」 這種「超級工程」的洗禮並有穩定出色表現的國產中間件,以其高性能、低延遲和高可靠等特性近年來被越來越多的國內企業所使用。其主要特點如下:
具有靈活的可擴展性。 (RocketMQ 天然支援集群,其核心四大元件(NameServer、Broker、Producer、Consumer)的每一個都可以在沒有單點故障的情況下進行水平擴展。)
具有海量訊息堆積能力。 (RocketMQ 採用零拷貝原理實現了超大量消息的堆積能力,據說單機已經可以支持億級消息堆積,而且在堆積了這麼多消息後依然保持寫入低延遲)
支持順序消息。 (RocketMQ 可以保證訊息消費者按照訊息發送的順序對訊息進行消費。順序訊息分為全域有序訊息和局部有序訊息,一般建議使用局部有序訊息,即生產者透過將某一類訊息按順序發送至同一個佇列中來實作。)
支援多種訊息過濾方式。 (訊息過濾分為在伺服器端過濾和在消費端過濾。在伺服器端過濾時可以按照訊息消費者的要求進行過濾,優點是減少了不必要的訊息傳輸,缺點是增加了訊息伺服器的負擔,實現相對複雜。消費端過濾則完全由具體應用自訂實現,這種方式更加靈活,缺點是很多無用的消息會被傳輸給消息消費者。)
#支援事務訊息。 (RocketMQ 除支援普通訊息、順序訊息之外,也支援事務訊息,這個特性對於分散式事務來說提供了另一種解決思路。)
#支援回溯消費。 (回溯消費是指對於消費者已經消費成功的消息,由於業務需求需要重新消費。RocketMQ 支援按照時間回溯消費,時間維度精確到毫秒,可以向前回溯,也可以向後回溯。)
#更多常見問題,敬請造訪PHP中文網。
以上是rpc中間件有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

國產AI黑馬DeepSeek強勢崛起,震撼全球AI界!這家成立僅一年半的中國人工智能公司,憑藉其免費開源的大模型DeepSeek-V3和DeepSeek-R1,在性能上與OpenAI等國際巨頭比肩,甚至在成本控制方面實現了突破性進展,贏得了全球用戶的廣泛讚譽。 DeepSeek-R1現已全面上線,性能媲美OpenAIo1正式版!您可以在網頁端、APP以及API接口體驗其強大的功能。下載方式:支持iOS和安卓系統,用戶可通過應用商店下載;網頁版也已正式開放! DeepSeek網頁版官方入口:ht

DeepSeek:火爆AI遭遇服務器擁堵,如何應對? DeepSeek作為2025年開年爆款AI,免費開源且性能媲美OpenAIo1正式版,其受歡迎程度可見一斑。然而,高並發也帶來了服務器繁忙的問題。本文將分析原因並提供應對策略。 DeepSeek網頁版入口:https://www.deepseek.com/DeepSeek服務器繁忙的原因:高並發訪問:DeepSeek的免費和強大功能吸引了大量用戶同時使用,導致服務器負載過高。網絡攻擊:據悉,DeepSeek對美國金融界造成衝擊,

2025年開年,國產AI“深度求索”(deepseek)驚艷亮相!這款免費開源的AI模型,性能堪比OpenAI的o1正式版,並已在網頁端、APP和API全面上線,支持iOS、安卓和網頁版多端同步使用。深度求索deepseek官網及使用指南:官網地址:https://www.deepseek.com/網頁版使用步驟:點擊上方鏈接進入deepseek官網。點擊首頁的“開始對話”按鈕。首次使用需進行手機驗證碼登錄。登錄後即可進入對話界面。 deepseek功能強大,可進行代碼編寫、文件讀取、創

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版
SublimeText3 Linux最新版

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。