Kafka 與 RocketMQ 核心概念與架構對比

Kafka 與 RocketMQ 核心概念與架構對比

DeepSeek生成,便于記憶大概邏輯

核心概念對比圖

共同概念
Producers
生產者
Consumers
消費者
Messages
消息
RocketMQ 核心概念
Message Queues
消息隊列
Topic
ConsumeQueue
消費隊列
Message Tags
消息標簽
Consumer Groups
消費者組
Brokers
代理服務器
NameServer
命名服務
Kafka 核心概念
Partitions
分區
Topic
Replicas
副本
Offsets
偏移量
Consumer Groups
消費者組
Brokers
代理服務器

Kafka 架構圖

消費者集群
Kafka 集群
主題與分區
訂閱
訂閱
訂閱
訂閱
Consumer
Consumer
Consumer
Consumer
ZooKeeper集群
元數據管理
ZK Node
ZK Node
ZK Node
Broker 集群
Broker 1
Broker 2
Broker 3
Topic A
Partition 0
Leader:B1
Partition 1
Leader:B2
Partition 2
Leader:B3
Topic B
Partition 0
Leader:B2
Partition 1
Leader:B3
生產者集群
Producer
Producer
Producer

RocketMQ 架構圖

消費者集群
RocketMQ 集群
生產者集群
主題與隊列
發布消息
發布消息
發布消息
訂閱消費
訂閱消費
訂閱消費
訂閱消費
Consumer
Consumer
Consumer
Consumer
NameServer 集群
服務發現
NameServer
NameServer
Broker 集群
Broker Group A
Broker Master
Broker Slave
Broker Group B
Broker Master
Broker Slave
Topic A
Queue 0
Queue 1
Queue 2
Topic B
Queue 0
Queue 1
Producer
Producer
Producer

消息生產消費流程對比

ProducerBrokerConsumerKafka 消息流程1. 發送消息到指定Topic/Partition2. 消息持久化并分配Offset3. 拉取指定Topic/Partition的消息4. 返回消息及Offset5. 提交已消費的OffsetRocketMQ 消息流程1. 發送消息到指定Topic2. 消息持久化到CommitLog3. 異步構建ConsumeQueue4. 拉取指定Topic/Queue的消息5. 返回消息及位置信息6. 返回消費狀態(ACK)ProducerBrokerConsumer

核心概念詳細說明

Kafka 核心概念

  1. Topic(主題):消息的邏輯分類,類似于數據庫中的表
  2. Partition(分區):每個Topic可以分為多個分區,提供并行處理能力
    • 每個分區是一個有序、不可變的消息序列
    • 分區可以分布在不同的Broker上
  3. Offset(偏移量):分區中每條消息的唯一標識符
  4. Producer(生產者):向Kafka主題發布消息的客戶端
  5. Consumer(消費者):訂閱主題并處理消息的客戶端
  6. Consumer Group(消費者組):一組消費者共同消費一個主題
    • 每個分區只能被組內的一個消費者消費
  7. Broker(代理):Kafka集群中的每個服務器節點
  8. Replica(副本):分區的備份,提供高可用性
    • Leader副本處理所有讀寫請求
    • Follower副本從Leader同步數據

RocketMQ 核心概念

  1. Topic(主題):消息的邏輯分類
  2. Message Queue(消息隊列):類似于Kafka的分區,但有一些差異
    • 提供并行處理能力
    • 消息在隊列中先進先出
  3. Producer(生產者):消息發送者
  4. Consumer(消費者):消息接收者
  5. Consumer Group(消費者組):一組消費者共同消費一個主題
  6. Broker(代理):RocketMQ服務器,負責消息存儲和轉發
  7. NameServer(命名服務):輕量級的服務發現組件
    • 管理Broker和Topic的路由信息
  8. Tag(標簽):消息的二級分類,用于更細粒度的消息過濾
  9. CommitLog(提交日志):所有消息的物理存儲文件
  10. ConsumeQueue(消費隊列):邏輯隊列,存儲消息在CommitLog中的位置

關鍵差異總結

特性KafkaRocketMQ
服務發現使用ZooKeeper使用NameServer
消息存儲按分區存儲所有消息存儲在CommitLog,邏輯隊列存儲索引
消息過濾基于分區基于Tag和SQL表達式
消息順序分區內有序隊列內有序
事務消息支持支持更完整的事務機制
延遲消息有限支持支持18個延遲級別
消息重試需要自行實現內置死信隊列和重試機制

這些圖表和說明展示了Kafka和RocketMQ的核心概念和架構差異,幫助理解兩者的設計哲學和適用場景。

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

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

相關文章

30分鐘深度壓測cuBLAS:從FP64到INT8全精度性能剖析

在深度學習和高性能計算領域,GPU的矩陣運算性能是衡量系統算力的核心指標之一。NVIDIA的cuBLAS庫作為CUDA平臺上最基礎的線性代數計算庫,其性能表現直接影響著上層應用的運行效率。本文將詳細介紹如何使用cublasmatmulbench工具對多GPU進行全面的性能基準…

超越模仿:探尋智能的本源

引言:超越模仿,探尋智能的本源近年來,以大語言模型(LLM)為代表的自然語言處理(NLP)技術,在模仿人類語言生成方面取得了令人矚目的成就。從流暢的對話到精煉的文本摘要,機…

ROS/ROS2課程筆記00-大綱-25-26-1

大綱 AI版 以下是基于第四代高校課程核心理念設計的《ROS2機器人程序設計(ROS2 Jazzy版)》課程大綱,突出智能互聯、跨學科融合、終身學習等特征,并融入技術賦能、生態重塑、素養導向等要求: 課程名稱:ROS…

Linux內核進程管理子系統有什么第四十六回 —— 進程主結構詳解(42)

接前一篇文章:Linux內核進程管理子系統有什么第四十五回 —— 進程主結構詳解(41) 本文內容參考: Linux內核進程管理專題報告_linux rseq-CSDN博客 《趣談Linux操作系統 核心原理篇:第三部分 進程管理》—— 劉超 《…

Linux網絡連接不上?NetworkManager提示“device not managed“!

#操作系統 #Linux #NetworkManager適用環境kylin v10Centos 8Redhat 8一、故障現象在CentOS/RHEL(同樣適用于kylin v10)系統中,管理員執行 nmcli connection up ens160 命令嘗試激活名為 ens160 的網絡連接時,遇到以下錯誤:[roo…

【系統分析師】第2章-基礎知識:數學與工程基礎(核心總結)

更多內容請見: 備考系統分析師-專欄介紹和目錄 文章目錄 一、數學統計基礎 1.1 概率論基礎 1.2 數理統計基礎 1.3 常用統計分析方法 二、圖論應用 2.1 基本概念 2.2 核心算法與應用 三、預測與決策 3.1 預測方法 3.2 決策方法 四、數學建模 4.1 建模過程 4.2 常用模型類型 五、…

StrUtil.isBlank()

這段代碼是一個條件判斷,用于檢查變量 shopJson 是否為空或空白,如果是,就直接返回 null。我們來逐句講解:原始代碼: if(StrUtil.isBlank(shopJson)) {// 3.存在,直接返回return null; }逐句解釋&#xff1…

mysql 回表查詢(二次查詢,如何檢查,如何規避)

h5打開以查看 “回表查詢”通常發生在使用二級索引(Secondary Index)的查詢中。當查詢所需的數據列并不全部包含在二級索引中時,即使使用了索引,MySQL 也需要根據索引記錄中的主鍵值,回到聚簇索引(Cluster…

深度學習(二):神經元與神經網絡

在人工智能的浪潮中,神經網絡(Neural Networks)無疑是驅動核心技術的引擎,它賦予了計算機前所未有的學習和識別能力。而這一切的起點,是受到生物大腦中基本單元——神經元(Neurons)的深刻啟發。…

JavaScript 行為型設計模式詳解

1. 觀察者模式1.1. 使用場景觀察者模式用于對象間的一對多依賴關系,當一個對象的狀態發生變化時,所有依賴于它的對象都能收到通知并自動更新。常用于事件處理、通知系統。在前端中,觀察者模式用于實現事件監聽、數據綁定等功能。1.2. 代碼實現…

指令查找表LUT

本文整理自22. FlexSPI—讀寫外部SPI NorFlash — [野火]i.MX RT庫開發實戰指南——基于i.MXRT1052 文檔 用作個人學習和分享 指令查找表LUT 訪問FLASH存儲器通常包含一些讀寫功能的的控制指令,主控設備可通過這些指令訪問FLASH存儲器。 為了適應這種需求&#…

uv使用指南

🚀 Python 打包工具 UV 使用指南 UV 是一個用 Rust 編寫的極速 Python 包管理器和解析器,旨在成為 pip、pip-tools、virtualenv 等工具的單一替代方案。 📋 目錄 核心概念與設計哲學安裝與配置基礎使用方法項目管理與工作流高級功能與技巧…

安卓學習 之 圖片控件和圖片按鈕

今天學習的是ImageView 和 ImageButton這兩個控件還是比較簡單的:先來看看最后的樣式圖片吧:從圖片中可以看到ImageView中的圖片要大很多,這是因為中的ImageView中的圖片跟ImageView控件的大小而自動調整。Imag…

動態規劃-學習筆記

這是一份動態規劃(Dynamic Programming, DP)完整學習筆記。筆記將從一星難度(入門)到五星難度(進階),循序漸進,涵蓋核心思想、經典模型和解題方法論。 本來打算今天更新背包問題的題…

Linux 可信啟動深度解析:從UEFI到操作系統的信任鏈

文章目錄引言一、 可信根基:TPM與核心概念1.1 什么是“度量” (Measurement)?1.2 信任鏈與TPM PCR二、 階段一:固件的可信啟動 (UEFI)2.1 引導的起點:從SEC到DXE的初始化2.2 引導設備選擇 (BDS):UEFI如何找到GRUB2.3 S…

61-python中面向對象三大特性

前言: 面向對象編程,是許多編程語言都支持的一種編程思想。簡單理解是:基于模板(類)去創建實體(對象), 使用對象完成功能開發。面向對象包含三大主要特性: 封裝 繼承 多態…

BP-Adaboost模型

BP-Adaboost模型是一種將BP神經網絡作為弱分類器的集成學習框架,通過AdaBoost算法動態調整樣本權重和模型權重,顯著提升預測精度和泛化能力。一、模型架構與工作原理 1. 基礎框架 弱分類器單元:采用單隱藏層BP神經網絡(結構示例&a…

k230 +canMV+ LVGL控件 仿手表表盤觸摸屏滾動、選中后彈窗效果完整示例程序

現在智能手表用的越來越多,其交互方式比較有特點,現在k230開發板上,基于LVGL(Light and Versatile Graphics Library)編寫一個嵌入式GUI應用程序,使用LVGL配合觸摸屏實現模仿智能手表的表盤滾動效果,實際效果如下: 程序使用LVGL圖形庫和MediaManager程序,創建帶有觸摸…

使用Vue.js和WebSocket打造實時庫存儀表盤

大家好!今天我將分享一個簡單卻強大的實時庫存儀表盤項目,基于Vue.js和WebSocket技術。這個項目適合初學者學習前端實時數據處理,也能為你的技術博客或作品集增添亮點!通過這個教程,你將學會如何使用WebSocket實現實時…

leecode100——接雨水

題目 雙指針 思路1 使用參數存儲從左往右(從右往左同理)遍歷時的最高的柱子, 然后移動左右的指針,每次移動左右指針中偏向小的, 如果當前指針指的柱子小于最高的柱子,就會存在接到水。 思路2 把水看作柱子&…