生产者向topic中发送数据,消费者消费该topic对应的数据,为了提高吞吐量,生产者会将该topic对应的数据分别发送到多个partition,每个partition都有一定数量的副本作为备份,以提高kafka的高可用性。如下图所示:
原图请看:https://www.processon.com/diagraming/5c515d61e4b0641c83ee8064
生产者和消费者都只在leader副本上写读数据,三个leader副本平均分配在三个broker上,其他follower副本都只做备份,以防leader宕机,follower副本升级成为leader副本。
但是三个broker之间是有一定的策略进行数据的读写的,follower副本会隔指定的时间去leader副本上读取最新消息,包括元数据和日志消息。
下面我们来详细说一下kafka是如何复制leader副本的。
执行./kafka-topic.sh --describe --zookeeper 192.168.153.128:2181 --topic test_topic,我们看一下test_topic的详情