消息模型

重要概念
1.broker
Kafka 服务节点,一台 Kafka 服务器就是一个 Broker
2.分区 partition
分区(partition)是并行单位,broker 是机器。一个 broker 上挂多个分区,核心是把"扩展能力"和"机器数量"解耦开; 有序且顺序不可变得记录集,消息存放在分区日志里。一个分区只能属于一个topic,一个分区是一个topic的子集
2.偏移量 offset
用来唯一的标识分区中每一条记录和顺序,是线性增加的
其他:
| 术语 | 含义 |
|---|---|
| Cluster | 多个 Broker 组成的 Kafka 集群 |
| Topic | 消息的逻辑分类,例如 order-created、user-login |
| Replica / 副本 | Partition 的副本,用于数据冗余和故障恢复 |
| Leader | 某个 Partition 当前负责读写的副本 |
| Follower | Partition 的其他副本,跟随 Leader 同步数据 |
| ISR | In-Sync Replicas,与 Leader 保持同步的副本集合 |
| Controller | Kafka 集群中负责管理分区、Leader 选举等工作的节点/角色 |
方案设计
实际使用时,需要定义好topic,每个topic对应多少个分区,Key是哪个字段(相同的Key会发往同一个分区,底层通过对key进行hash后取模,有三个分区就对3取模:hash(key)\3),消费者组启动后,会触发rebalance,对应的分区可能会发生变化
分布式

- 这个例子中,有三台kafka服务器,这个topic对应的分区有3个,那么就会有3个leader,副本因子为3,那么每个分区会有2个follower,总的分区数是3*3=9
- Leader 负责处理该 Partition 的写入以及消费者订阅的拉取。
- Follower 从 Leader 拉取并同步数据。
- Leader 故障时,Kafka 可以从符合条件的副本中选出新的 Leader。
适用场景
