a.每个consumer客户端被创建时,会向zookeeper注册自己的信息;b.此作用主要是为了”负载均衡”.c.同一个Consumer Group中的Consumers,Kafka将相应Topic中的每个消息只发送给其中一个Consumer。d.Consumer Group中的每个Consumer读取Topic的一个或多个Partitions,并且是唯一的Consumer;e.一个Consumer group的多个consumer的所有线程依次有序地消费一个topic的所有partitions,如果Consumer group中所有consumer总线程大于partitions数量,则会出现空闲情况;
举例说明: kafka集群中创建一个topic为report-log 4 partitions 索引编号为0,1,2,3 假如有目前有三个消费者node:注意—>一个consumer中一个消费线程可以消费一个或多个partition. 如果每个consumer创建一个consumer thread线程,各个node消费情况如下,node1消费索引编号为0,1分区,node2费索引编号为2,node3费索引编号为3 如果每个consumer创建2个consumer thread线程,各个node消费情况如下(是从consumer node先后启动状态来确定的),node1消费索引编号为0,1分区;node2费索引编号为2,3;node3为空闲状态
总结:从以上可知,Consumer Group中各个consumer是根据先后启动的顺序有序消费一个topic的所有partitions的。
如果Consumer Group中所有consumer的总线程数大于partitions数量,则可能consumer thread或consumer会出现空闲状态。