Skip to main content

架构概览

┌─────────────────────────────────────────────────────────────┐
│                       NameServer Cluster                    │
│  ┌─────────────┐                      ┌─────────────┐       │
│  │ NameServer  │                      │ NameServer  │       │
│  └─────────────┘                      └─────────────┘       │
└─────────────────────────────────────────────────────────────┘
              ↑                                  ↑
              │ 注册                              │ 注册
              │                                  │
┌─────────────────────────────────────────────────────────────┐
│                       Broker Cluster                        │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │ Broker-A    │  │ Broker-B    │  │ Broker-C    │         │
│  │ Master      │  │ Master      │  │ Master      │         │
│  │ Slave       │  │ Slave       │  │ Slave       │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘
              ↑                                  ↓
          Producer                          Consumer

核心组件

组件说明
NameServer注册中心,轻量级无状态,多个互不通信
Broker消息服务器,负责存储和转发消息,分 Master/Slave
Producer消息生产者
Consumer消息消费者

消息模型

Topic、Queue、Tag

Topic (主题)
  ├── Queue 0 ──→ Consumer Instance 1
  ├── Queue 1 ──→ Consumer Instance 2
  ├── Queue 2 ──→ Consumer Instance 3
  └── Queue 3 ──→ Consumer Instance 4
概念说明
Topic一类消息的集合,逻辑分类
Queue物理分区,一个 Topic 包含多个 Queue
Tag消息标签,二级分类,用于过滤
Key消息 Key,用于查询和去重

消息分发

Topic: OrderTopic
├── Queue 0 → Message 0, 3, 6, 9 ...
├── Queue 1 → Message 1, 4, 7, 10 ...
└── Queue 2 → Message 2, 5, 8, 11 ...

Consumer Group: order-consumer-group
├── Consumer 1 → Queue 0, 1
└── Consumer 2 → Queue 2

存储结构

组件说明
CommitLog所有消息顺序追加写入
ConsumeQueue消息消费队列,存储 offset 指向 CommitLog
IndexFile消息索引,支持按 Key/时间查询

消费模式

模式说明场景
集群消费一条消息只被消费组内一个实例消费业务处理(默认)
广播消费一条消息被消费组内所有实例消费本地缓存刷新

高性能原理

机制说明
顺序写CommitLog 顺序追加,磁盘顺序写性能高
PageCache利用操作系统页缓存,减少磁盘 IO
零拷贝mmap 内存映射,减少数据拷贝
异步刷盘批量刷盘,提高吞吐量

高可用

主从复制

模式说明
异步复制Master 不等 Slave 确认,性能好
同步复制等待 Slave 确认才返回,可靠

Dledger 模式

基于 Raft 协议,自动选主:
特性普通主从Dledger
选主手动自动(Raft)
数据一致性