Kafka的数据模型主要包括以下几个部分:
1. Topic
最顶层的一个逻辑单元,可以理解为一个分区树。一个topic可以有多个分区(partition)。
2. Partition
topic分区,主要提供两项功能:
- 水平扩展能力。Kafka可以通过增加分区来处理更多的数据。
- 有序性。每个分区内的消息是有序的。
同一个partition的数据只组存在同一个broker上。
3. Replicas(副本)
为了提高容错能力和故障转移能力,每个partition可以配置多个副本。
4. Log
partition内部以一个log的形式来存储信息。log随着新消息的到来而 持续增长,但是不会缩小。
5. Offset
表示分区中一个特定位置的值。每个 offset对应一个消息。
6. Leader和Follower
为每个partition指定一个Leader用于写入数据,其他副本为Follower。Follower定期的从Leader中同步数据。
7. Broker
Kafka集群中的一个节点,由一个或多个partition组成。它存储partition的log和replica。
Kafka的数据模型主要包括:
- Topic 分区树
- Partition 明细分区
- Replica 副本存储
- Log 模拟存储
- Offset 日志位置
- Leader和Follower
- Broker 节点实例
这些组件共同构成分布式的Kafka数据模型。