《Kafka 设计解析(四):Kafka Consumer 解析》学习笔记
Kafka 保证同一 Consumer Group 中只有一个 Consumer 会消费某条消息,实际上,Kafka 保证的是稳定状态下每一个 Consumer 实例只会消费某一个或多个特定 Partition 的数据,而某个 Partition 的数据只会被某一个特定的 Consumer 实例所消费。
也就是说 Kafka 对消息的分配是以 Partition 为单位分配的,而非以每一条消息作为分配单元。这样设计的劣势是无法保证同一个 Consumer Group 里的 Consumer 均匀消费数据,优势是每个 Consumer 不用都跟大量的 Broker 通信,减少通信开销,同时也降低了分配难度,实现也更简单。另外,因为同一个 Partition 里的数据是有序的,这种设计可以保证每个 Partition 里的数据可以被有序消费。
Partition、Consumer分配算法:《kafka Consumer均衡算法,partition的个数和消费组组员个数的关系》
目前有三种方式会触发rebalance,1.当consumer group 新增消费者;2.consumer group有消费者退出时,比如主机停机;3.topic新增分区时,分区的数量发生变化时;
kafka consuemr 的 rebalance 机制规定了一个 consumer group 下的所有 consumer 如何达成一致来分配订阅 topic 的每个分区。实现重新负载均衡机制:范围分区和轮询分区;
原文:https://www.cnblogs.com/ybonfire/p/11832883.html