网站模板与网站定制版的区别,创意工作室网站,微信公众号做微网站吗,做软装设计找图有什么好的网站简述Kafka的rebalance机制
consumer group中的消费者与topic下的partion重新匹配的过程
何时会产生rebalance:
consumer group中的成员个数发生变化consumer 消费超时group订阅的topic个数发生变化group订阅的topic的分区数发生变化
coordinator: 通常是partition的leader节…简述Kafka的rebalance机制
consumer group中的消费者与topic下的partion重新匹配的过程
何时会产生rebalance:
consumer group中的成员个数发生变化consumer 消费超时group订阅的topic个数发生变化group订阅的topic的分区数发生变化
coordinator: 通常是partition的leader节点所在的broker负责监控group中consumer的存活consumer维持到coordinator的心跳判断consumer的消费超时
coordinator通过心跳返回通知consumer进行rebalanceconsumer请求coordinator加入组coordinator选举产生leader consumerleader consumer从coordinator获取所有的consumer发送syncGroup(分配信息)给到coordinatorcoordinator通过心跳机制将syncGroup下发给consumer完成rebalance
leader consumer监控topic的变化通知coordinator触发rebalance
如果C1消费消息超时触发rebalance重新分配后、该消息会被其他消费者消费此时C1消费完成提交offset.导致错误。 解决办法: coordinator每次rebalance会标记一个Generation给到consumer每次rebalance该Generation会1consumer提交offset时coordinator会比对Generation不一致则拒绝提交
额外补充
1、什么是 Rebalance Rebalance 本质上是一种协议规定了一个 Consumer Group 下的所有 consumer 如何达成一致来分配订阅 Topic 的每个分区。
例如某 Group 下有 20 个 consumer 实例它订阅了一个具有 100 个 partition 的 Topic 。正常情况下kafka 会为每个 Consumer 平均的分配 5 个分区。这个分配的过程就是 Rebalance。
2Rebalance触发的机制
有新的消费者加入消费组 有消费者宕机下线。消费者不一定需要真正下线例如遇到长时间的GC网络延迟导致消费者长时间未向GroupCoordinator发送心跳等情况GroupCoordinator会认为消费者已经下线。 消费者组所对应的GroupCoordinator节点发送变更。 消费组内所订阅的任一主题数量或者主题的分区数量发生变化。