kafka 集群 Topic 之 Partion 数据写入分布原理设计(六)
集群中假如有三个节点,分别ip为200,201,202 创建topic 为test,默认分区2,副本2,在写入消息
到topic时,数据就转的过程是什么,则 partition存储数据分布是如何分布的,各个节点数据如何同步
的,isr如何实现的?
在 Kafka 集群中,Topic 的创建和消息写入涉及多个步骤,包括分区和副本的分布、消息的写入、数据
同步以及 ISR 列表的管理。下面详细介绍这些过程。
1. 创建 Topic 和分区副本分布
创建 Topic
假设在 Kafka 集群中创建一个名为 test
的 Topic,具有 2 个分区和 2 个副本。执行以下命令:
bin/kafka-topics.sh --create --topic test --bootstrap-server 192.168.0.200:9092 --partitions 2 --replication-factor 2
分区和副本的分布
Kafka 会将 Topic test
的 2 个分区和 2 个副本分布到 3 个节点上。例如,Kafka 可能会这样分配:
- Partition 0:
- Leader:节点 192.168.0.200
- Follower:节点 192.168.0.201
- Partition 1:
- Leader:节点 192.168.0.201
- Follower:节点 192.168.0.202
2. 消息写入过程
当生产者向 Topic test
写入消息时,消息会先写入每个分区的 Leader,然后由 Leader 同步到 Follower。
消息写入示例
假设生产者写入以下消息到 test
:
ProducerRecord<String, String> record = new ProducerRecord<>("test", "key", "value");
producer.send(record