RabbitMQ系列(一)架構解析

RabbitMQ 架構解析

RabbitMQ 是一個基于 AMQP 協議的開源消息中間件,其核心架構通過多組件協作實現高效、可靠的消息傳遞。以下是其核心組件與協作流程的詳細說明:


一、核心組件與功能
  1. Broker(消息代理服務器)
    • RabbitMQ 服務端核心,負責接收、存儲和轉發消息,可單機或集群部署。
    • 包含虛擬主機(Virtual Host)、交換機(Exchange)、隊列(Queue)等邏輯單元。
  2. Virtual Host(虛擬主機)
    • 作用:邏輯隔離資源,每個 Virtual Host 擁有獨立的交換機、隊列和權限。
    • 類比:類似數據庫中的“庫”,默認使用?/?作為根虛擬主機。
  3. Producer/Publisher(生產者)
    • 消息發送方,把消息發送給Exchange,然后通過 Exchange 將消息路由到隊列。消息包含?Routing Key(路由鍵)和?Headers(頭信息)。
  4. Exchange(交換機)
    • 功能:接收生產者消息,按類型規則轉發到隊列。
    • 類型
      • Direct:精確匹配 Routing Key 與 Binding Key。
      • Fanout:廣播到所有綁定隊列。
      • Topic:通配符匹配Routing Key。
      • Headers:基于消息頭鍵值對匹配(很少使用)。
  5. Queue(隊列)
    • 存儲消息的容器,消費者從中獲取消息。存儲方式分為支持持久化(存儲到磁盤)和非持久化(內存存儲)兩種。
  6. Binding(綁定關系)
    • 定義 Exchange 與 Queue 的連接規則,Binding Key(綁定鍵)用于匹配路由邏輯。
  7. Consumer(消費者)
    • 就是消息的使用者。訂閱隊列并處理消息,支持手動確認(ACK)或自動確認兩種方式。
  8. Connection & Channel(連接與信道)
    • Connection:TCP 長連接,客戶端與 Broker 的通信基礎。
    • Channel:復用 Connection 的邏輯通道,輕量級且支持多線程。

二、消息流轉流程
  1. 生產者發送消息:Publisher 通過 Channel 將消息發送到 Exchange,并指定Routing Key。
  2. 交換機路由:Exchange 根據類型和 Binding 規則,將消息轉發到匹配的隊列。
  3. 隊列存儲:消息暫存于隊列,等待消費者拉取。
  4. 消費者處理:Consumer 從隊列獲取消息,處理后發送 ACK 確認。

?


三、架構特點與優勢
  1. 解耦與異步:生產者與消費者無需直接通信,提升系統擴展性。
  2. 靈活路由:通過多種 Exchange 類型支持復雜消息分發場景。
  3. 高可用性:支持集群部署與鏡像隊列,避免單點故障。
  4. 資源隔離:Virtual Host 實現多租戶環境隔離,避免資源沖突。

四、典型應用場景
場景適用組件或模式
訂單異步處理Direct Exchange + ACK 機制
日志廣播Fanout Exchange
多維度事件通知Topic Exchange
多團隊環境隔離Virtual Host + 權限控制

五、引用擴展
  • 部署優化:可通過集群鏡像模式或 Kubernetes 部署提升可靠性。
  • 性能調優:調整 Channel 并發數、消息持久化策略等

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

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

相關文章

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_list_init

ngx_list_init 定義在 src\core\ngx_list.h static ngx_inline ngx_int_t ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size) {list->part.elts ngx_palloc(pool, n * size);if (list->part.elts NULL) {return NGX_ERROR;}list->par…

Linux切換Python版本

1、更新apt sudo apt update2、查詢python安裝路徑 which python 或者which python33、查詢安裝版本 # 查看所有以 "python" 開頭的命令(包括版本號) ls -l 安裝路徑* 例如 ls -l /usr/bin/python*4、修改軟連接 udo unlink /usr/bin/pyt…

Spring Cloud之注冊中心之Nacos的使用

目錄 Naacos 服務注冊/服務發現 引?Spring Cloud Alibaba依賴 引入Nacos依賴 引入Load Balance依賴 配置Nacos地址 服務端調用 啟動服務 Naacos Nacos是Spring Cloud Alibaba的組件, Spring Cloud Alibaba遵循Spring Cloud中定義的服務注冊, 服務發現規范. 因此使?Na…

使用通義萬相Wan2.1進行視頻生成

使用通義萬相Wan2.1進行視頻生成 源代碼準備運行環境準備創建Python虛擬環境并激活安裝依賴包 模型下載生成視頻官網的視頻生成例子簡單描述場景視頻生成示例詳細描述場景視頻生成示例 最近通義萬相開源了其視頻生成模型。模型有兩個版本,一個是1.3B的,一…

鴻蒙HarmonyOS 開發簡介

鴻蒙開發入門教程 一、技術簡介 鴻蒙操作系統(HarmonyOS)是面向萬物互聯時代的全場景分布式操作系統,具備分布式軟總線、分布式數據管理、分布式任務調度等核心能力,能讓設備間實現無縫連接與協同,為用戶提供統一、流…

docker和containerd從TLS harbor拉取鏡像

私有鏡像倉庫配置了自簽名證書,https訪問,好處是不需要處理免費證書和付費證書帶來的證書文件變更,證書文件變更后需要重啟服務,自簽名證書需要將一套客戶端證書存放在/etc/docker/cert.d目錄下,或者/etc/containerd/c…

linux ununtu通過nginx-1.6.2.tar.gz安裝nginx并安裝在自定義目錄XXX下 的步驟

Ubuntu 下通過源碼安裝 Nginx 1.6.2 到自定義目錄 /home/aot/nginx 的步驟 以下是將 Nginx 1.6.2 源碼包離線安裝到自定義目錄的詳細流程,包含依賴管理、編譯配置和服務管理: 一、準備工作 1. 下載源碼包和依賴(需聯網環境準備)…

C++ 變量的輸入輸出教程

一、變量的基本概念 在 C 中,變量是用于存儲數據的命名內存位置。在使用變量之前,需要先聲明它的類型和名稱,這樣編譯器才能為其分配適當大小的內存空間。例如: int age; // 聲明一個整型變量 age double salary; // 聲明一個…

React底層常見的設計模式

在React中,常見的設計模式為開發者提供了結構化和可重用的解決方案,有助于提高代碼的可維護性和可擴展性。以下是對React中幾種常見設計模式的詳細解析,并附上示例代碼和注釋: 1. 容器組件與展示組件模式(Container/P…

【MATLAB例程】三維下的IMM(交互式多模型),模型使用CV(勻速)和CA(勻加速)

給出三維下的交互式多模型(IMM)matlab例程,模型使用勻速運動CV和勻加速運動CA,濾波使用EKF(擴展卡爾曼濾波) 文章目錄 代碼運行結果程序結構 代碼講解模型定義:軌跡生成:IMM核心流程…

物理內存組織與分配的核心概念

在 Linux 內核內存管理(尤其是 Buddy System 伙伴系統)中,node、zone、type 和 order 是描述物理內存組織與分配的核心概念。以下是它們的詳細解釋: 1. Node(NUMA 節點) 定義: 在 NUMA&#xf…

智科技賦能寵物關懷新時代

在科技日新月異的今天,智能寵物監控技術正悄然引領寵物護理領域的新變革。借助尖端的傳感器技術、高清攝像頭以及強大的數據分析能力,這些智能系統為寵物主人開辟了前所未有的寵物關懷途徑,讓愛與關懷跨越時空限制。 智能寵物監控系統的核心…

SOME/IP 教程知識點總結

總結關于SOME/IP的教程,首先通讀整個文件,理解各個部分的內容。看起來這個教程從介紹開始,講到了為什么在車輛中使用以太網,然后詳細講解了SOME/IP的概念、序列化、消息傳遞、服務發現(SOME/IP-SD)、發布/訂閱機制以及支持情況。 首先,我需要確認每個章節的主要知識點。…

playbin之autoplug_factories源碼剖析

一、autoplug_factories_cb /* Called when we must provide a list of factories to plug to pad with caps.* We first check if we have a sink that can handle the format and if we do, we* return NULL, to expose the pad. If we have no sink (or the sink does not…

58區間和+44開發商購買土地(前綴和)

58. 區間和(第九期模擬筆試) 題目描述 給定一個整數數組 Array,請計算該數組在每個指定區間內元素的總和。 輸入描述 第一行輸入為整數數組 Array 的長度 n,接下來 n 行,每行一個整數,表示數組的元素。…

laravel11設置中文語言包

安裝中文語言包 Laravel 11 默認沒有內置完整中文語言包,推薦使用第三方維護的完整翻譯: # 通過 Composer 安裝語言包 composer require laravel-lang/common --dev# 發布中文語言文件到項目 php artisan lang:add zh_CN這會自動將中文語言文件生成到 l…

智能文檔解析與語義分割:LlamaIndex 節點解析器模塊全解

節點解析器模塊 - LlamaIndex 文件內容的節點解析器 有幾種基于文件的節點解析器,它們會根據解析的內容類型(JSON、Markdown 等)創建節點。 最簡單的流程是將 FlatFileReader 與 SimpleFileNodeParser 結合使用,自動為每種內容類型選擇最佳節點解析器。然后,可以將基于…

實現遍歷Windows所有字體的基本屬性

參考podofo #include <windows.h> #include <string> #include <memory> #include <set> #include <unordered_map> #include <vector> #include <algorithm> #include <iostream> #include <iomanip> #include <fst…

postman--接口測試工具安裝和使用教程

postman–接口測試工具 postman是一款支持http協議的接口調試與測試工具&#xff0c;其主要特點就是功能強大&#xff0c;使用簡單且易用性好 。 無論是開發人員進行接口調試&#xff0c;還是測試人員做接口測試&#xff0c;postman都是我們的首選工具之一 。 下面先通過一張…

綜合練習 —— 遞歸、搜索與回溯算法

目錄 一、1863. 找出所有子集的異或總和再求和 - 力扣&#xff08;LeetCode&#xff09; 算法代碼&#xff1a; 代碼思路 問題分析 核心思想 實現細節 代碼解析 初始化 DFS 函數 時間復雜度 空間復雜度 示例運行 輸入 運行過程 總結 二、 47. 全排列 II - 力扣&a…