kafka rebalance机制详解

首先我们回忆一下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。 之后consumer的请求都会和这个coordinator进行通信。

JoinGroup

consumer获取到coordinator后,会向coordinator发送JoinGroup请求,表示希望加入到consumer group中, 请求参数中会包含

你可能感兴趣的:(深入掌握Java面试问题,kafka,java,分布式)