Kafka 與 RocketMQ 核心概念與架構對比
DeepSeek生成,便于記憶大概邏輯
核心概念對比圖
Kafka 架構圖
RocketMQ 架構圖
消息生產消費流程對比
核心概念詳細說明
Kafka 核心概念
- Topic(主題):消息的邏輯分類,類似于數據庫中的表
- Partition(分區):每個Topic可以分為多個分區,提供并行處理能力
- 每個分區是一個有序、不可變的消息序列
- 分區可以分布在不同的Broker上
- Offset(偏移量):分區中每條消息的唯一標識符
- Producer(生產者):向Kafka主題發布消息的客戶端
- Consumer(消費者):訂閱主題并處理消息的客戶端
- Consumer Group(消費者組):一組消費者共同消費一個主題
- 每個分區只能被組內的一個消費者消費
- Broker(代理):Kafka集群中的每個服務器節點
- Replica(副本):分區的備份,提供高可用性
- Leader副本處理所有讀寫請求
- Follower副本從Leader同步數據
RocketMQ 核心概念
- Topic(主題):消息的邏輯分類
- Message Queue(消息隊列):類似于Kafka的分區,但有一些差異
- 提供并行處理能力
- 消息在隊列中先進先出
- Producer(生產者):消息發送者
- Consumer(消費者):消息接收者
- Consumer Group(消費者組):一組消費者共同消費一個主題
- Broker(代理):RocketMQ服務器,負責消息存儲和轉發
- NameServer(命名服務):輕量級的服務發現組件
- 管理Broker和Topic的路由信息
- Tag(標簽):消息的二級分類,用于更細粒度的消息過濾
- CommitLog(提交日志):所有消息的物理存儲文件
- ConsumeQueue(消費隊列):邏輯隊列,存儲消息在CommitLog中的位置
關鍵差異總結
特性 | Kafka | RocketMQ |
---|---|---|
服務發現 | 使用ZooKeeper | 使用NameServer |
消息存儲 | 按分區存儲 | 所有消息存儲在CommitLog,邏輯隊列存儲索引 |
消息過濾 | 基于分區 | 基于Tag和SQL表達式 |
消息順序 | 分區內有序 | 隊列內有序 |
事務消息 | 支持 | 支持更完整的事務機制 |
延遲消息 | 有限支持 | 支持18個延遲級別 |
消息重試 | 需要自行實現 | 內置死信隊列和重試機制 |
這些圖表和說明展示了Kafka和RocketMQ的核心概念和架構差異,幫助理解兩者的設計哲學和適用場景。