Pub/Sub是什么意思

Pub/Sub(發布/訂閱模式)?? 是一種異步消息通信范式,用于分布式系統中不同組件之間的解耦通信。它的核心思想是將消息的發送方(發布者)?? 和接收方(訂閱者)?? 分離,通過一個中間層(消息代理)進行消息的路由和分發。


核心概念:

  1. ?發布者(Publisher)??

    • 負責產生并發送消息到指定主題(Topic)?,不關心誰接收消息。

    • 例如:傳感器發布溫度數據、用戶行為服務發送日志。

  2. ?訂閱者(Subscriber)??

    • ?主動訂閱感興趣的主題,只接收該主題下的消息。

    • 例如:數據分析服務訂閱日志主題,實時告警服務訂閱異常數據主題。

  3. ?消息代理(Broker)??

    • 中間件組件(如 ?Kafka、RabbitMQ、Google Pub/Sub、Redis Pub/Sub),負責:

      • 接收發布者的消息。

      • 將消息按主題分發給所有訂閱者。

      • 管理訂閱關系、消息持久化(可選)、負載均衡等。


工作流程:

  1. 訂閱者向 Broker ?注冊對某個主題的興趣。

  2. 發布者向 Broker ?發送消息,并指定目標主題。

  3. Broker ?匹配消息的主題,將其復制并推送給所有訂閱該主題的訂閱者。

  4. 訂閱者異步處理收到的消息。


核心特點:

  • ?解耦性?

    發布者和訂閱者無需知道對方存在,添加/移除訂閱者不影響發布者。

  • ?動態伸縮?

    訂閱者數量可動態增減,Broker 自動處理負載分配。

  • ?一對多廣播?

    一條消息可同時送達多個訂閱者(對比點對點隊列的單一消費者)。

  • ?異步通信?

    發布者發送后無需等待,訂閱者按自身節奏消費。


常見應用場景:

  1. ?實時通知系統?

    :用戶注冊后,通知郵件服務、推薦系統、數據分析服務并行處理。

  2. ?分布式系統解耦?

    微服務間通過主題通信,避免直接調用依賴(如訂單服務發布order_created,庫存服務消費)。

  3. ?數據同步?

    數據庫變更通過CDC(Change Data Capture)發布到主題,多個系統同步數據(如緩存更新、搜索索引)。

  4. ?物聯網(IoT)設備監控?

    百萬級設備上報數據至主題,由不同的訂閱者處理實時告警、持久化存儲、批量分析。

  5. ?聊天室/直播互動?

    用戶消息發布到房間主題,所有訂閱該房間的客戶端實時接收。


對比其他消息模式:

?Pub/Sub?

?點對點隊列(P2P Queue)??

消息消費

一條消息發給所有訂閱者

一條消息僅由一個消費者消費

訂閱關系

動態訂閱/取消訂閱主題

隊列固定,消費者需綁定隊列

場景

廣播通知、事件驅動

任務分發、負載均衡(如訂單處理)


優缺點:

? ?優勢?

  • 系統擴展性強,新增消費者無需修改發布者。

  • 容錯性高:單個訂閱者故障不影響整體。

  • 支持高吞吐量場景(如Kafka)。

? ?挑戰?

  • 消息可能重復消費(需冪等設計)。

  • 順序保證需額外配置(如Kafka分區)。

  • 架構復雜度增加(需部署Broker)。


主流實現工具:

  • ?云服務?:Google Cloud Pub/Sub, AWS SNS/SQS, Azure Service Bus

  • ?開源?:Apache Kafka, RabbitMQ(需插件), Redis Pub/Sub, NATS

總結:

Pub/Sub 通過主題廣播+異步解耦的機制,成為構建高擴展性、松耦合分布式系統的基石。適用于需要事件驅動、實時廣播、服務解耦的關鍵場景,是現代云原生架構的核心組件之一。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93951.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redisson3.14.1及之后連接阿里云redis代理模式,使用分布式鎖:ERR unknown command ‘WAIT‘

文章目錄一、問題背景1、問題原因2、阿里云對Redisson的支持二、解決方案1、繼續使用Redisson3.14.0版本2、阿里云redis改為直連模式3、升級Redisson版本到 3.47.0一、問題背景 1、問題原因 阿里云Redis分直連和代理模式,其中代理模式是不支持WAIT命令的。 目前嘗…

Linux: RAID(磁盤冗余陣列)配置全指南

Linux:RAID(磁盤冗余陣列)配置一、RAID 核心概念 RAID(Redundant Array of Independent Disks,磁盤冗余陣列)通過將多個物理磁盤組合為一個邏輯存儲設備,實現提升讀寫性能、增強數據安全性或平衡…

《GPT-OSS 模型全解析:OpenAI 回歸開源的 Mixture-of-Experts 之路》

目錄 一、引言 二、GPT-OSS 模型簡介 1. 版本與定位 2. 架構設計與技術亮點 2.1 Mixture-of-Experts(MoE)架構 2.2 高效推理機制與優化技術 2.3 模型對比 三、模型部署 1. 安裝相關依賴 1.1 uv 安裝 1.2 conda 安裝 1.3 Transformers 運行 g…

【力扣熱題100】雙指針—— 接雨水

題目 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 注意:答案中不可以包含重復的三元組。輸入:height [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋:上面是由…

51單片機拼接板(開發板積木)

一、前言 1.1 背景 讀書那會兒(2013年左右)網上接了很多51單片機的設計。 當時有個痛點: 每張板子都是定制的,畫板子,打樣,寫代碼需要花費很多時間。 希望有一張板子,能夠實現絕大多數單片機的功能&#xf…

使用segment-anything將目標檢測label轉換為語義分割label

使用segment-anything將目標檢測label轉換為語義分割label一、segment-anything簡介二、segment-anything安裝2.1安裝方法2.2預訓練模型下載三、將目標檢測label轉換為語義分割label3.1示例代碼3.2代碼說明一、segment-anything簡介 segment-anything是facebookresearch團隊開…

【unitrix數間混合計算】3.3 無符號整數標記trait(bin_unsigned.rs)

一、源碼 這段代碼是用 Rust 語言實現的一個類型級無符號二進制整數系統,通過類型系統在編譯時表示和操作二進制數字。這是一種典型的"類型級編程"(type-level programming)技術。 use crate::number::{U0, Bin, Bit, BinInt};/// …

Python基本語法總結

1.類(Class)在Python中類(Class)是面向對象編程(OOP)的核心概念。1.1.類的基本定義最簡單的類class Cat:"""這是一個最簡單的類"""pass #創建實例 obj Cat()包含方法的類cl…

數據結構05(Java)-- ( 歸并排序實質,歸并排序擴展問題:小和問題)

前言 本文為本小白🤯學習數據結構的筆記,將以算法題為導向,向大家更清晰的介紹數據結構相關知識(算法題都出自🙌B站馬士兵教育——左老師的課程,講的很好,對于想入門刷題的人很有幫助&#x1f4…

稅務專業人員能力構建與發展路徑指南

CDA數據分析師證書含金量高,適應了未來數字化經濟和AI發展趨勢,難度不高,行業認可度高,對于找工作很有幫助。一、稅務專業人員的核心能力框架能力維度關鍵技能要素專業工具與方法論實踐輸出成果稅務法規應用稅種政策解讀、法規更新…

Linux中rsync使用與inotify實時同步配置指南

Linux中rsync使用與inotify實時同步配置指南 一、rsync 簡介 rsync(Remote Sync)是 Linux 系統下的一款高效數據鏡像和備份工具,用于在本地或遠程同步文件和目錄。 支持本地復制、基于 SSH 的遠程同步,以及使用自有 rsync 協議的同…

Unicode 字符串轉 UTF-8 編碼算法剖析

📊 Unicode 字符串轉 UTF-8 編碼算法剖析 ——從 C# char 到 C wchar_t 的編碼轉換原理 引用:UTF-8 編解碼可視化分析 🔍 1. 算法功能概述 該函數將 Unicode 字符串(C# string)轉換為 UTF-8 編碼的字節數組&#xf…

php的安全性到底怎么樣

PHP作為一種流行的服務器端腳本語言,被廣泛應用于Web開發。然而,由于PHP是一種較為靈活的語言,其安全性議題一直備受爭議。在這篇文章中,我將從多個方面來討論PHP的安全性,包括常見的安全漏洞、防范措施以及最佳實踐。…

mapbox高階,結合threejs(threebox)添加建筑glb模型,添加陰影效果,設置陰影顏色和透明度

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言 1.1 ??mapboxgl.Map 地圖對象 1.2 ??mapboxgl.Map style屬性 1.3 ??threebox loadObj加載模型 二、??…

SSM從入門到實戰:1.6 Spring數據訪問與JDBC模板

👋 大家好,我是 阿問學長!專注于分享優質開源項目解析、畢業設計項目指導支持、幼小初高的教輔資料推薦等,歡迎關注交流!🚀 06-Spring數據訪問與JDBC模板 📖 本文概述 本文是SSM框架系列Spri…

下一代IT服務管理:ITIL5會是什么樣?

ITIL4發布到現在也就5年多時間,按照以往的更新節奏,ITIL5最早也得2027年之后。但現在IT發展的速度,跟以前完全不是一個量級。AI都快把我們的飯碗搶了(開個玩笑),ITIL要是還按部就班,估計真要被時…

最新研究進展:2023-2025年神經機器翻譯突破性成果

文章目錄 一、模型架構創新 1.1 混合架構的崛起 1.2 多模態翻譯的突破 1.3 大語言模型與NMT的深度融合(2023-2024) 1.4 非自回歸翻譯(NAT)的效率革命(2024) 二、數據與訓練策略優化 2.1 低資源語言翻譯的飛躍 2.2 動態數據增強技術 三、效率與部署 3.1 模型壓縮與加速 3.…

OpenTelemetry WebSocket 監控終極方案:打通最后一公里

概述 OpenTelemetry,以下簡稱 OTEL,是由 CNCF 托管的“一站式可觀測性標準”,把指標、鏈路、日志三大信號統一為單一 SDK/API,零侵入地采集從瀏覽器、移動端到后端、容器、云服務的全棧遙測數據,并支持 40 后端一鍵導…

VS Code 出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題解決方案

針對 VS Code 或 Cursor (vscode系)中出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題,以下是永久性解決方案的完整操作指南:解決方案步驟打開命令面板 使用快捷鍵 CtrlShiftP(Windows/Linux)或 CmdShift…

【qml-4】qml與c++交互(類型多例)

背景: 【qml-1】qml與c交互第一次嘗試(實例注入) 【qml-2】嘗試一個有模式的qml彈窗 【qml-3】qml與c交互第二次嘗試(類型注冊) 【qml-4】qml與c交互(類型多例) 【qml-5】qml與c交互&#…