2025-11-20 05:31:54
kafka是分布式消息系统,主要由生产者、消费者、Broker、ZooKeeper、Topic和分区组成。生产者把数据发到Broker,Broker存到Topic的分区里,消费者从分区拉取数据。组就是消费者组,多个消费者实例共享一个Topic,数据会轮询处理,比如有3个消费者,每条消息会轮流给这三个设备处理。
为啥要这样设计呢?因为kafka官方文档说每个Topic可以有多个分区,消费者组里的成员数量必须和分区数一致,这样每个分区对应一个消费者,数据不会丢失。比如有个Topic有5个分区,消费者组就得正好有5个消费者,一个分区一个消费者。生产者和Broker之间用TCP连接,Broker之间用UDP心跳,ZooKeeper用来存Broker和Topic的配置信息。当消费者组里有新成员加入,ZooKeeper会自动把分区重新分配,保证数据不中断。比如有个消费者宕机了,ZooKeeper会在10秒内发现并重新分配分区,这时候其他消费者就能继续处理数据了。
本题链接: