Kafka--Rebalance重平衡
Rebalance总览
Rebalance触发条件
(1)消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃
(2)消费者组订阅的主题数量发生变更
(3)消费组订阅主题的分区数发生变更
避免不必要的Rebalance
针对(1)中消费者崩溃问题,有时候是Consumer没有在配置的制定时间内完成消息的处理,Coordinator就认为该Consumer已经“崩溃”,引发新一轮的Rebalance
可调优参数:
session.timeout.ms:该配置定义了消费者与Kafka集群之间的会话超时时间,如果在这个时间内未发送心跳包到集群服务器,服务器就会将其标记未离线并触发Rebalance
heartbeat.interval.ms:配置心跳包发送的频率,如果session配置6s hearbeat配置2s,那么至少能够保证三轮的心跳请求
max.poll.interval.ms:消费者是通过poll()方法来拉取消息,这个配置定义了两次poll之间的间隔,如果消费者处理数据量非常大超过了max.poll.interval.ms仍没有继续拉取,就会触发Rebalance
Group Coordinator职能
四大类:Coordinator/Group/Offset/Heartbeat
ApiKeys.Find_coordinator
ApiKeys.Join_Group
Apikeys.Leave_Group
Apikeys.Sync_group
Apikeys.Offset_commmit
Apikeys.Offset_Fetch
Apikeys.Offset_for_leader_epoch
Apikeys.Offset_delete
Apikeys.Heartbeat
(1)负责管理消费者组的分区分配信息和Offset,存储消费者组成员元数据,分配GroupID和ConsumerID
(2)负责处理JoinGroupRequest和SyncGroupRequest完成分区分配的工作
(3)通过心跳检查消费者的状态
Consumer Group状态机

分区分配策略
RangeAssignor(默认)、RoundRobinAssignor、StickyAssignor
RangeAssignor:按照+Topic+的维度进行分配的,对于每个Topic,首先对Partition按照分区ID进行排序,然后对订阅这个Topic的ConsumerGroup的Consumer再进行排序,之后尽量均衡的按照范围区段将分区分配给Consumer
RoundRobinAssignor:将 Consumer Group 内订阅的所有 Topic 的 Partition 及所有 Consumer 进行排序后按照顺序尽量均衡的一个一个进行分配。如果 Consumer Group 内,每个 Consumer 订阅都订阅了相同的Topic,那么分配结果是均衡的。如果订阅 Topic 是不同的,那么分配结果是不保证“尽量均衡”的,因为某些 Consumer 可能不参与一些 Topic 的分配
StickyAssignor:可通过partition.assignment.strategy参数配置,发生Rebalance时尽量与上一次分配的结果保持一致
RangeAssignor图解

RoundRobinAssignor图解
组内订阅Topic相同

组内订阅Topic不同

StickyAssignor图解
重平衡前

重平衡后

Kafka--Rebalance重平衡的更多相关文章
- 什么是 Kafka Rebalance 以及关于 Rebalance Kafka-Python 社区客户端应该关注的地方
什么是 Rebalance? Rebalance 为什么会发生?Rebalance 的情况下 consumer 是否还能正确消费消息呢? 记得之前在一段时间密集面试的时候总会问候选人这些问题. 重平衡 ...
- kafka rebalance解决方案 -incremental cooperative协议和static membership功能
apache kafka的重平衡(rebalance),一直以来都为人诟病.因为重平衡过程会触发stop-the-world(STW),此时对应topic的资源都会处于不可用的状态.小规模的集群还好, ...
- 详细解析kafka之 kafka消费者组与重平衡机制
消费组组(Consumer group)可以说是kafka很有亮点的一个设计.传统的消息引擎处理模型主要有两种,队列模型,和发布-订阅模型. 队列模型:早期消息处理引擎就是按照队列模型设计的,所谓队列 ...
- kafka Poll轮询机制与消费者组的重平衡分区策略剖析
注意本文采用最新版本进行Kafka的内核原理剖析,新版本每一个Consumer通过独立的线程,来管理多个Socket连接,即同时与多个broker通信实现消息的并行读取.这就是新版的技术革新.类似于L ...
- AVL树 & 重平衡概念
AVL树是有平衡条件的二叉搜索树.这个平衡条件必须容易保持,而且需要保证树的深度是O(logN). AVL=BBST 作为二叉搜索树的最后一部分,我们来介绍最为经典的一种平衡二叉搜索树:AVL树.回顾 ...
- Kafka设计解析(十五)Kafka controller重设计
转载自 huxihx,原文链接 Kafka controller重设计 目录 一.Controller是做什么的 二.Controller当前设计 三.Controller组成 四.Controlle ...
- 关于RocketMQ消息消费与重平衡的一些问题探讨
其实最好的学习方式就是互相交流,最近也有跟网友讨论了一些关于 RocketMQ 消息拉取与重平衡的问题,我姑且在这里写下我的一些总结. ## 关于 push 模式下的消息循环拉取问题 之前发表了一篇关 ...
- AVL重平衡细节——插入
话说这个系列鸽了好久,之前在准备语言考试,就没管博客了,现在暑假咱们继续上路! 每当我们进行一次插入之后,整棵AVL树的平衡性就有可能发生改变,为了控制整棵树的高度,我们需要通过一系列变换(重平衡)来 ...
- Kafka controller重设计
本文主要参考社区0.11版本Controller的重设计方案,试图给大家梳理一下Kafka controller这个组件在设计上的一些重要思考.众所周知,Kafka中有个关键组件叫controller ...
- kafka rebalance你真的了解吗
介绍 今天主要分享一下 kafka 的 rebalance,在 kafka 中,rebalance 是一个十分重要的概念,很多时候引发的一些问题可能都是由于 rebalance 引起的,rebalan ...
随机推荐
- 使用C# 创建、填写、删除PDF表单域
通常情况下,PDF文件是不可编辑的,但PDF表单提供了一些可编辑区域,允许用户填写和提交信息.PDF表单通常用于收集信息.反馈或进行在线申请,是许多行业中数据收集和交换的重要工具. PDF表单可以包含 ...
- JavaWeb技术JSP连接数据库操作
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 0X01 ...
- 为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
简介: Serverless Devs 离不开对云资源的操作,但支持新资源时需要开发相应的组件代码:如果将环境模板的定义通过 Terraform IaC 来完成,在 Serverless Devs ...
- 六年团队Leader实战秘诀|程序员最重要的八种软技能
简介:笔者在带团队的六年中发现,程序员们在职场都有一个共同的困扰:"好像写代码都没什么问题了,日常工作基本上都是应付业务需求的开发,好像找不到其他的更大的附加价值了,我应该找一些什么样的发 ...
- [FAQ] edge 等浏览器的 debug 栏的 "网络" 中看不到网络请求
如果 edge 等浏览器的 debug 栏的 "网络" 中看不到网络请求, 出现这类情况一般是在 debug 栏的 "设置" 中进行了过滤,可能是不小心点了 ...
- WPF 对接 Vortice 调用 WIC 加载图片
本文将告诉大家如何通过 Vortice 库从底层的方式使用 WIC 层加载本地图片文件,解码为 IWICBitmap 图片,然后将 IWICBitmap 图片交给 WPF 进行渲染 本文的前置博客:W ...
- Raft 共识算法2-领导者选举
Raft 共识算法2-领导者选举 Raft算法中译版地址:https://object.redisant.com/doc/raft中译版-2023年4月23日.pdf 英原论文地址:https://r ...
- Spring学习一(依赖注入/Bean/注解等)
1.Spring依赖注入的方式. 2.依赖注入的类型 3.Bean的作用域 4.自动注入 5.使用注解的方式 6.在spring配置文件中引入属性文件 1.Spring依赖注入的方式 平常的java开 ...
- SAP Adobe Form 教程三 日期,时间,floating field
前文: SAP Adobe Form 教程一 简单示例 SAP Adobe Form 教程二 表 原文标题:SAP Adobe Interactive Form Tutorial. Part III. ...
- Django Admin后台管理:高效开发与实践
title: Django Admin后台管理:高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories: 后端开发 ...