消息隊列的基本概念

文章目錄

    • 為什么需要消息隊列?🤔
      • 🎯 核心價值
      • 📋 使用場景
    • 🏗? 架構層面的基本概念
      • 整體架構圖
      • 📦 核心組件詳解
        • 1. Broker(消息代理)
        • 2. Topic(主題)
        • 3. Partition/Queue(分區/隊列)
        • 4. Producer & Consumer(生產者 & 消費者)
        • 5. ConsumerGroup(消費分組)
        • 6. Message(消息)
        • 7. Offset(位點)
        • 8. ACK(確認機制)
        • 9. Leader/Follower(主從副本)
        • 10. Segment(數據段)
        • 11. StartOffset/EndOffset(起始/結束位點)
        • 12. ACL(訪問控制)
    • ?? 功能層面的基本概念
      • 🎯 消息處理特性
        • 1. 順序消息
        • 2. 延時消息/定時消息
        • 3. 事務消息
      • 🔄 消息處理機制
        • 4. 消息重試
        • 5. 消息回溯
        • 6. 廣播消費
      • 🛠? 高級功能
        • 7. 死信隊列
        • 8. 優先級隊列
        • 9. 消息過濾
        • 10. 消息過期(TTL)
        • 11. 消息軌跡
        • 12. 消息查詢
      • 🚀 性能優化功能
        • 13. 消息壓縮
        • 14. 多租戶
        • 15. 消息持久化
        • 16. 消息流控
    • 🎯 實際應用場景
      • 📈 電商系統
      • 🏦 金融系統
      • 📱 社交系統
    • 💡 最佳實踐建議
      • 1. 選擇合適的產品
      • 2. 設計原則
      • 3. 性能優化
    • 🎉 總結

為什么需要消息隊列?🤔

在系統架構中,消息隊列的定位就是總線和管道,主要起到解耦上下游系統、數據緩存的作用。它不像數據庫,會有很多計算、聚合、查詢的邏輯,它的主要操作就是生產和消費

🎯 核心價值

  • 解耦系統:就像快遞小哥讓商家和買家不需要直接見面一樣
  • 數據緩沖:高峰期時,就像快遞柜一樣暫存包裹
  • 異步處理:讓系統不用等待,提高響應速度

📋 使用場景

我們會在以下情況選擇使用消息隊列:

  • 需要解耦上下游系統
  • 對數據有緩沖緩存需求
  • 需要用到消息隊列的特殊功能(延時消息、優先級消息等)

🏗? 架構層面的基本概念

整體架構圖

Producer生產者
Broker消息代理
Consumer消費者
Topic主題
Partition分區
ConsumerGroup消費組

📦 核心組件詳解

1. Broker(消息代理)

🏪 比喻:就像快遞公司的分揀中心

本質:Broker 本質上是一個進程,比如 RocketMQ 的 Broker 就是指 RocketMQ Server 啟動成功后的一個進程。

實際部署

  • 通常一個物理節點只起一個進程
  • 大部分情況下 Broker = 一個節點
  • 特殊場景:一個物理節點可以起多個進程(多個Broker)
2. Topic(主題)

🏷? 比喻:就像快遞公司的不同業務線(普通快遞、生鮮快遞、大件快遞)

定義:用來組織分區關系的一個邏輯概念

特點

  • 一個 Topic 通常包含多個分區
  • 例外:RabbitMQ 中 Topic 指具體的主題模式
3. Partition/Queue(分區/隊列)

📦 比喻:就像快遞分揀中心的不同傳送帶

統一概念:分區、分片、Partition、Queue、MessageQueue 都是一個概念

作用

  • 數據存儲的最小單位
  • 可以直接寫入分區或通過Topic分發
  • 一個Topic通常包含一個或多個分區
4. Producer & Consumer(生產者 & 消費者)

👤 比喻:生產者就像寄快遞的人,消費者就像收快遞的人

Producer(生產者)

  • 消息的發送方
  • 發送消息的客戶端
  • 也叫生產端

Consumer(消費者)

  • 消息的接收方
  • 接收消息的客戶端
  • 也叫消費端
5. ConsumerGroup(消費分組)

👥 比喻:就像同一個辦公室的同事們,大家一起分擔收快遞的工作

作用

  • 組織消費者和分區關系
  • 保存消費進度
  • 實現負載均衡
6. Message(消息)

📝 比喻:就是具體的快遞包裹

定義:指一條真實的業務數據,消息隊列的每條數據都叫做一條消息

7. Offset(位點)

📍 比喻:就像快遞單號,記錄你收到了第幾個包裹

作用

  • 記錄消費者消費分區的進度
  • 避免重復消費
  • 確保消息不丟失
8. ACK(確認機制)

? 比喻:就像簽收快遞時的確認

作用

  • 確認數據消費成功
  • 提交當前消費位點
  • 確保不重復消費
9. Leader/Follower(主從副本)

👑 比喻:就像快遞公司的總部和分部

Leader(主副本)

  • 負責處理讀寫請求
  • 一個分區只有一個Leader

Follower(從副本)

  • 備份數據
  • 可以接替Leader工作
10. Segment(數據段)

📁 比喻:就像快遞公司的不同倉庫

定義:消息數據在底層存儲時,分為多個文件存儲時的文件

特點

  • 比如每超過1G就新起一個文件
  • 所有消息隊列都有段的概念
  • Kafka叫Segment,Pulsar叫Ledger
11. StartOffset/EndOffset(起始/結束位點)

📊 比喻:就像快遞柜的起始和結束編號

StartOffset(起始位點)

  • 當前最早有效消息的位點
  • 會動態變化(過期數據被清理)

EndOffset(結束位點)

  • 最新數據的寫入位置
  • 持續增長
12. ACL(訪問控制)

🔐 比喻:就像快遞公司的權限管理

作用:對集群中的資源進行權限控制

  • 控制分區或Topic的讀寫權限
  • 確保數據安全

?? 功能層面的基本概念

🎯 消息處理特性

1. 順序消息

📋 比喻:就像排隊取快遞,先到先得

定義:生產者按順序寫入的消息,消費者能否按相同順序消費

應用場景

  • 訂單狀態變更
  • 用戶操作日志
  • 金融交易記錄
2. 延時消息/定時消息

? 比喻:就像設置快遞的送達時間

延時消息

  • 以Broker收到消息時間為準
  • 例:30分鐘后才能被消費

定時消息

  • 指定具體時間點
  • 例:明天20:00才能被消費

技術實現:兩者內核實現相同,客戶端體驗略有差異

3. 事務消息

💼 比喻:就像銀行轉賬,要么成功要么失敗

定義:發送一批消息,要么同時成功,要么同時失敗

應用場景

  • 分布式事務
  • 數據一致性保證

🔄 消息處理機制

4. 消息重試

🔁 比喻:就像快遞送不到時的重試機制

生產者重試

  • 發送失敗后自動重試
  • 可配置重試次數、間隔

消費者重試

  • 消費失敗后自動重試
  • 確保消息最終被處理
5. 消息回溯

? 比喻:就像可以重新查看歷史快遞記錄

定義:消息消費成功后不刪除,可以重復消費

應用場景

  • 數據修復
  • 歷史數據分析
  • 測試環境數據回放
6. 廣播消費

📢 比喻:就像群發短信,所有人都能收到

定義:一條消息能被多個消費者消費

實現方式

  • 不是主動廣播
  • 而是消息能被多個消費者獲取

🛠? 高級功能

7. 死信隊列

🗑? 比喻:就像快遞公司的"問題包裹"處理中心

作用

  • 處理無法正常消費的消息
  • 避免阻塞正常消息處理
  • 便于問題排查

使用場景

  • 消費端:處理失敗的消息
  • 生產端:無法寫入的消息
8. 優先級隊列

🎯 比喻:就像VIP客戶優先處理

定義:給消息設置權重,權重大的優先消費

應用場景

  • 緊急訂單處理
  • 系統告警消息
  • 高優先級業務
9. 消息過濾

🔍 比喻:就像按標簽篩選快遞

功能

  • 給消息打標簽
  • 根據標簽過濾消費
  • 實現精準投遞
10. 消息過期(TTL)

? 比喻:就像快遞的保質期

作用

  • 自動清理過期消息
  • 節省存儲空間
  • 保證數據時效性
11. 消息軌跡

📊 比喻:就像快遞的全程跟蹤

記錄信息

  • 發送時間、狀態
  • 服務端處理情況
  • 消費時間、結果
  • 全生命周期追蹤
12. 消息查詢

🔎 比喻:就像快遞查詢系統

查詢方式

  • 根據消息ID查詢
  • 根據消費位點查詢
  • 類似數據庫的select操作

🚀 性能優化功能

13. 消息壓縮

📦 比喻:就像壓縮文件節省空間

作用

  • 節省網絡帶寬
  • 減少存儲空間
  • 提高傳輸效率

實現位置

  • 客戶端壓縮(推薦)
  • 服務端壓縮
14. 多租戶

🏢 比喻:就像一棟大樓里的不同公司

功能

  • 邏輯隔離
  • 資源隔離
  • 權限管理

實現方式

  • Namespace(命名空間)
  • Tenant(租戶)
15. 消息持久化

💾 比喻:就像重要文件要備份

作用

  • 數據持久化存儲
  • 節點重啟后數據不丟失
  • 保證數據可靠性
16. 消息流控

🚦 比喻:就像交通信號燈控制車流

控制維度

  • Topic級別限流
  • 分區級別限流
  • 消費組級別限流
  • 集群級別限流

🎯 實際應用場景

📈 電商系統

用戶下單 → 訂單服務 → 消息隊列 → 庫存服務↓支付服務↓物流服務

🏦 金融系統

交易請求 → 風控系統 → 消息隊列 → 清算系統↓通知系統

📱 社交系統

用戶發帖 → 內容審核 → 消息隊列 → 推薦系統↓通知系統

💡 最佳實踐建議

1. 選擇合適的產品

  • Kafka:高吞吐、大數據場景
  • RocketMQ:阿里系、事務消息
  • RabbitMQ:輕量級、功能豐富
  • Pulsar:云原生、多租戶

2. 設計原則

  • 消息冪等性設計
  • 合理的分區策略
  • 監控和告警機制
  • 容災備份方案

3. 性能優化

  • 批量發送消息
  • 合理設置分區數
  • 消費者并發度調優
  • 網絡和存儲優化

🎉 總結

消息隊列就像現代系統架構中的"神經系統",它讓各個系統組件能夠高效、可靠地通信。理解這些基本概念,就像掌握了快遞公司的運營規則,能夠更好地設計和使用消息隊列系統。

記住:消息隊列的核心就是"生產"和"消費",其他所有功能都是圍繞這兩個核心操作展開的。


💬 互動討論:你在實際項目中遇到過哪些消息隊列的挑戰?歡迎在評論區分享你的經驗和解決方案!


參考資料:

  • Apache Kafka 官方文檔
  • RocketMQ 官方文檔
  • RabbitMQ 官方文檔

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

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

相關文章

Shell腳本中和||語法解析

https://www.cnblogs.com/liuyuelinfighting/p/16377705.html 在 Shell 腳本中,&& 和 || 是邏輯操作符,用于根據前一個命令的退出狀態(成功或失敗)決定是否執行后續命令。這種語法稱為 命令鏈(Command Chainin…

MySQL中的常見運算符

精選專欄鏈接 🔗 MySQL技術筆記專欄Redis技術筆記專欄大模型搭建專欄Python學習筆記專欄深度學習算法專欄 歡迎訂閱,點贊+關注,每日精進1%,共攀技術高峰 更多內容持續更新中!希望能給大家帶來幫助~ &…

高級IO技術詳解:阻塞/非阻塞IO、多路復用與內存映射

高級IO技術詳解:阻塞/非阻塞IO、多路復用與內存映射 關鍵詞:阻塞IO 非阻塞IO select/poll/epoll mmap 一、阻塞IO vs 非阻塞IO 類型行為特點設置方式阻塞IO- 讀空管道阻塞- 寫滿管道阻塞默認模式非阻塞IO- 讀空文件返回 -1,errnoEAGAIN- 寫滿…

【無標題】拓撲對偶框架的嚴格性補完與哲學突破

拓撲對偶框架的嚴格性補完與哲學突破: 一、數學嚴格性補完:同調類守恒的解決方案 1.1 負系數問題的幾何化修正 **問題本質**:當 $a_i$ 含負數時,曲率分配 $\kappa\frac{2\pi a_i}{A_{\text{max}}}$ 導致偽黎曼流形 **解決方案…

從0開始學習R語言--Day25--A/B測試 vs 多臂老虎機

通常在比較兩個不同的方案對數據的影響時,我們會各拿50%的數據去進行對照試驗,這樣觀測到的結果會最大程度地保留統計學上的特點。但實際上,并不是所有對比不同方案都要這樣做,一來,我們需要等到兩組實驗都完全結束后&…

功耗高?加密弱?愛普特APT32F1023H8S6單片機 2μA待機+AES硬件加密破局

愛普特APT32F1023H8S6單片機深度解析 1. 產品定位 APT32F1023H8S6 是愛普特半導體(APT)推出的 32位高性能單片機,基于 ARM Cortex-M0內核,主打 高集成度、低功耗、高性價比,面向消費電子、工業控制和物聯網領域。 2. …

【MFC】繪制自定義控件-顯示圖片(支持放大操作)

目錄 一、CDC類(二級緩存)二、計算視口三、放大操作代碼中初始化操作(方便以后cv) 一、CDC類(二級緩存) CDC類是設備上下文的核心類,它的作用是抽象化對圖形輸出設備(像屏幕、打印機…

在Proteus新工程中放置基本元器件

視頻教程: [最詳細]Proteus新建第一個工程與快捷鍵設置 操作步驟 1選擇這個黃色的三角,然后點擊旁邊的P,開始找元件。 2點開P后,呈現如下圖界面,我們在Keyword欄中,輸入stm32,然后他會自動出現對應的元件&…

PRUD幣推動健康數據資產化,開啟Web3隱私金融新時代

在全球健康科技與數據主權浪潮下,PRUD幣(Prudential Utility & Data Token)正成為Web3健康金融領域中的重要通證。項目通過鏈上身份綁定、健康行為證明、隱私計算與NFT機制,為用戶打造了“健康數據資產化”的創新路徑&#xf…

Mac 安裝 finalshell

1.下載 地址:FinalShell官網 第一個進入選擇對應的 mac 版本下載。 下一步下一步完成安裝。 2.鏈接虛擬機,點擊圖示文件夾 點擊新建鏈接,新建 SSH 鏈接 3.去 vmware 中查詢 Linux 系統的 IP,使用 ip addr 命令或者 ifconfig 命令皆可。 ip…

Javaweb - 2 HTML

目錄 HTML 入門 1. HTML & CSS & JavaScript 的作用 2. 什么是 HTML 3. 什么是超文本 4. 什么是標記語言 5. HTML 基本結構 6. HTML 概念詞匯解釋 7. HTML 的一些語法規則 8. 開發工具 VsCode 安裝插件: 常見設置: HTML 常見標簽 …

CWGAN-GP 增強型 CAE 在非 IID 數據集中用于 5G-NR 干擾檢測

抽象 在不斷擴大的 5G-NR 無線蜂窩網絡領域中,無線干擾攻擊作為安全攻擊普遍存在,損害了接收信號的質量。我們通過將加性高斯白噪聲 (AWGN) 合并到真實世界的同相和正交 (I/Q) OFDM 數據集中來模擬干擾環境…

JavaEE-Spring-Web-Mvc

Spring Web MVC 是基于 Servlet API 構建的原始 Web 框架,從?開始就包含在 Spring 框架中。它的正式名稱“Spring Web MVC”來?其源模塊的名稱(Spring-webmvc),但它通常被稱為"Spring MVC". Servlet 是?種實現動態??的技術. 準確來講Serv…

Linux從入門到入門

系統教程學習類 Ubuntu 從入門到精通 系統頁面/基本操作類 Ubuntu20.04終端固定終端到左邊的導航欄_ubuntu20.04設置菜單固定-CSDN博客Ubuntu 20.04 系統5分鐘后老是自動鎖屏_修改鎖屏時間-CSDN博客 命令類 拷貝:將 下載 文件夾里的.sh文件 復制到opt目錄下 sudo cp…

AI自動生成Git提交信息-git AI Commit

在現代軟件開發中,編寫清晰且一致的Git提交信息對于維護項目歷史和促進團隊協作至關重要。然而,為每次變更手動撰寫描述性提交信息可能耗時,尤其是處理復雜差異或大型項目時。AI Commit 是一個利用AI分析Git差異并生成符合Conventional Commi…

【三大前端語言之一】樣式:CSS詳解

【三大前端語言之一】樣式:CSS詳解 在了解完HTML的有關知識后,我們應該知道,一個網頁光有框架還不行,必須還得有裝飾它的樣式。就好比房子的結構搭好了,但如果沒有油漆、沒有窗簾、沒有家具,就無法真正展現…

Spring AI 聊天記憶功能實戰(一):從接口設計到生產實踐

Spring AI 聊天記憶功能實戰(一):從接口設計到生產實踐 在構建AI對話應用時,聊天記憶管理及存儲是實現連貫上下文交互的關鍵組件。而大模型(LLM)本質上是無狀態的,這意味著它們不會保留歷史交互…

Element Plus 對話框 el-dialog 和 抽屜 el-drawer 的使用注意項(使用 div 包裹)

總結:使用 div 包裹!!! 詳細說明: 對話框 el-dialog 或 抽屜 el-drawer 樣式的設置說明: 要想有效設置 el-dialog 或 el-drawer 的樣式,需確保 el-dialog 或 el-drawer 的上層不是template&am…

【python】簡單演示 gateway、service、client的工作原理

gateway 看起來主要是做協議轉換的A gateway is a network node that acts as an entrance and exit point, connecting two networks that use different protocols. It allows data to flow between these networks, essentially acting as a translator between different c…

數據倉庫面試題合集⑥

實時指標體系設計 + Flink 優化實戰:面試高頻問題 + 項目答題模板 面試中不僅會問“你做過實時處理嗎?”,更會追問:“實時指標體系是怎么搭建的?”、“你們的 Flink 穩定性怎么保證?” 本篇聚焦實時指標體系設計與 Flink 優化場景,幫你答出架構設計力,也答出調優實戰感…