Kafka的Coordinator与Rebalance

1、rebalance

在发生:
(1)一个新的消费者加入群组
(2)一个消费者被关闭或者崩溃离开group
(3)topic的partition数增加
会发生触发rebalance,分区的消费所有权会从一个消费者转移到另一个消费者上。

2、Group Coordinator

1、Group Coordinator本质上是broker,一个group对应一个Group Coordinator,就是对应_consumer__offset所在的partition的leader所在的broker。(_consumer__offset = Math.abs((GROUPID.hash() % 50)))
2、consumer通过发送心跳到Group Coordinator上维持和group的从属关系以及对分区消费的所有权。

3、Group leader

1、第一个加入group的consumer是这个Group的Group leader,所有Group leader的本质是一个consumer。
2、当发生rebalance时,Group leader能从Group Coordinator拿到最新活跃的consumer列表,并从consumer上报的分配策略中依据多数原则选择分配策略(共有两种分配策略RoundRobinAssignor与RangeAssignor),决定partition与consumer的归属关系。决定以后把这份分配信息发回给Group Coordinator,再由Group Coordinator发回给所有的consumer。

你可能感兴趣的:(Kafka的Coordinator与Rebalance)