首先我们回忆一下kafka的基本的架构,kafka分为producer、broker和consumer。 为了能够横向扩展提升消息发送消费性能, 通过增加partition的方式,让消息能够保存到多个broker上。 为了提升消费性能,增加了consumer group的概念,一个topic下同一个consumer group中的不同consumer实例可以共同消费提升消费能力
多个consumer消费同一个topic上的不同partition,就需要对consumer进行协调,控制哪个consumer消费哪个partition,并且要对异常情况进行处理, 比如新增consumer、consumer重启、consumer机器宕机等情况。
rebalance protocol
rebalance protocol定义了一套资源分配协调的协议,consumer消费partition是协议的一种应用。
其中的概念有
members: 成员,比如同一个consumer group中的consumer resources: 资源,比如consumer要消费的partition
FindCoordinator
consumer启动后,会向broker发送FindCoordinator请求查找topic和consumer group的coordinator。