10.Kafka ---- 重新负载Rebalance过程

zz/2023/6/3 16:48:53

1.什么是Rebalance重新负载?

      Rebalance,即对 Kafka 中的分区进行重新分配的过程。如需详细了解 Kafka 的分区分配策略,请点击链接跳转了解更多:8.Kafka 分区分配策略

2.什么时候触发Rebalance操作

     当出现以下几种情况时,Kafka 会进行一次重新分区分配操作,即 Kafka 消费者端的 Rebalance 操作

     ① 同一个 consumer 消费者组 group.id 中,新增了消费者进来,会执行 Rebalance 操作

     ② 消费者离开当期所属的 consumer group组。比如 主动停机  或者  宕机

     ③ 分区数量发生变化时(即 topic 的分区数量发生变化时)

     ④ 消费者主动取消订阅

3.Rebalance操作过程

   3.1 由谁来执行 Rebalance  操作?由谁来管理消费端 consumer 的 group ?

       Kafka 提供了一个 角色:Coordinator。Coordinator 来完成对消费端 group 的管理。当 consumer group 的第一个 consumer启动的时候,它会去和 Kafka Server 去确定到底谁是它们组的 Coordinator。之后该 group 组内的所有成员都会和该 Coordinator 进行通信。 

   3.2 consumer group 如何确定自己的 Coordinator是谁?

       当消费者向 kafka 集群中的任意一个 broker 发送一个 GroupCoordinatorRequest 请求,Kafka Server 服务端会返回一个当前负载最小的 broker 节点的 id,并将该 id 所对应的的 broker 节点设置为当前 consumer group 的 Coordinator。

   3.3 Rebalance 过程

      整个rebalance的过程分为两个步骤:①JoinGroup過程②Synchronizing Group State 阶段

      3.3.1 确定 Coordinator

      3.3.2 JoinGroup 过程

        JoinGroup过程,表示消费者加入到consumer group中的过程。

        当确定了 Coordinator 之后,所有的 Consumer 都会向 Coordinator 发送一个 JoinGroup 请求(只要启动,所有消费者都会发送该请求)。此时 Coordinator 会从 Consumer group 中选取一个 consumer 担任 leader 角色,并把组成员信息和订阅的消息发送给所有的消费组

      3.3.3 Synchronizing Group State 阶段 

        完成分区分配之后,就进入了 Synchronizing Group State阶段。该阶段主要完成 leader 将消费者对应的 partition 分配方案同步给consumer group 中的所有 consumer。每一个消费者,都会向 Coordinator 发送一个 SyncGroupRequest 请求。请求内容:包含group_id、member_id、generation_id 。在 leader 层面,还会有一个 member_assignment 内容。

       每个消费者,还会向 Coordinator 发送 SyncGroup 请求,不过只有 leader 节点会发送分配方案,其他消费者也会发送分配方案,不过发送内容都是空,只是打打酱油而已。当 leader 把方案发给 Coordinator 以后,Coordinator 会把结果设置到 SyncGroupResponse 中。这样所有成员都知道自己应该消费哪个分区。

       Kafka 每个客户端,在收到分发策略 SyncGroupResponse 后,会根据返回结果去执行。(consumer group 的分区分配方案是在客户端执行的。Kafka 将这个权利下放给客户端主要是因为这样做可以有更好的灵活性在很早版本的时候,这个操作时在zookeeper执行,之后版本便在客户端执行了)


到这里,Kafka 消息的分区分发策略 Rebalance 操作就介绍完了。

如果本文对你有所帮助,那就给我点个赞呗 ^_^

End ^_^

http://www.ngui.cc/zz/2389895.html

相关文章

asm rebalance 三个阶段

The disk group rebalance operation has three phases: Planning -一般30秒内File extents relocation --add 3块2t盘- 1T数据 2小时 drop 1T 1.5小时 add 10块2t盘- 8T数据 8小时 drop 5T 8小时Disk compacting --drop 3块2t盘-1T 40分钟 ,add 8T 4小时GOAL Wha…

rebalance的使用

上篇:project的使用 rebalance the output elements are distributed evenly to instances of the next operation in a round-robin fashion 按照round-robin的方式,决定上游算子的某个并发的数据发往下游的哪个并发。该方法可以保证从上游算子到下游…

Kafka rebalance 重平衡深度解析

文章目录rebalance 触发条件分区分配策略rebalance generation消费者状态机rebalance 协议消费者端 rebalance 流程Broker 端重平衡场景解析新成员入组组成员主动离场组成员崩溃离场重平衡时协调者对组内成员提交位移的处理rebalance 监听器consumer group 是用于实现高伸缩性、…

kafka消费者Rebalance机制

目录 1、Rebalance机制 2、消费者Rebalance分区分配策略 3、Rebalance过程 1、Rebalance机制 rebalance就是说如果消费组里的消费者数量有变化或消费的分区数有变化,kafka会重新分配消费者消费分区的关系。比如consumer group中某个消费者挂了,此时会…

RocketMQ源码(十九)之消费者Rebalance

文章目录版本简介Broker端ConsumerManagerConsumerOffsetManagerSubscriptionGroupManager消费端RebalanceService分配策略版本 基于rocketmq-all-4.3.1版本 简介 集群消息同一个消费组只能有一个消费者消费,如果一个Topic有4个MessageQueue,对于Consu…

oracle rebalance参数,【案例】Oracle ASM扩展新LAN加入asm diskgroup asm rebalance 原理

天萃荷净Oracle研究中心案例分析:运维DBA反映Oracle数据库的ASM空间不足,需要扩展。通过划新的LAN加入asm diskgroup并分析asm rebalance 原理。本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的O…

HDFS Rebalance 介绍

原文:https://blog.csdn.net/xiaofei0859/article/details/49763705 HDFS中的数据按照一定策略分布在集群中的多个数据节点上,但在某些情况下,数据的分布也会出现不均衡的情况,比如说集群新增加了节点,在新增加的节点上…

oracle rebalance参数,深入内核:Asm Rebalance 原理 SHAPE

深入内核:Asm Rebalance 原理SHAPE \* MERGEFORMAT编辑手记:ASM Rebalance 的过程具体发生了什么操作呢,在不同版本间有什么样的区别,如何才能加快 Rebalance 的速度呢,本文将会解答你的困惑我们先看一个例子某客户进行…

HDFS的Rebalance功能

HDFS中的数据按照一定策略分布在集群中的多个数据节点上,但在某些情况下,数据的分布也会出现不均衡的情况,比如说集群新增加了节点,在新增加的节点上就没有数据存在,虽说之后新增的数据会分配到新节点上,不…

kafka的rebalance

rebalance的出现 订阅Topic的分区数发生变化 简单地说,就是之前 topic 有 10 个分区,现在变成了 20 个,那么多出来的 10 个分区的数据就没人消费了。那么此时就需要进行重平衡,将新增的 10 个分区分给消费组内的消费者进行消费。…