一个典型的 Kafka 集群中包含以下构成:
Kafka 通过 Zookeeper 管理集群配置,选举 leader,以及在 Consumer Group 发生变化时进行 rebalance。Producer 使用 push 模式将消息发布到 broker,Consumer 使用 pull 模式从 broker 订阅并消费消息。
Kafka 中的 partition 为了保证数据安全,所以每个 partition 可以设置多个副本。
我们对分区 0,1,2 分别设置 3 个副本(其实设置两个副本是比较合适的)

而且其实每个副本都是有角色之分的,它们会选取一个副本作为 leader,而其余的作为 follower,我们的生产者在发送数据的时候,是直接发送到 leader partition 里面,然后follower partition 会去 leader 那里自行同步数据,消费者消费数据的时候,也是从 leader 那去消费数据的。
