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 ...
随机推荐
- 利用navicat实现excel转json
1.需要工具,Navicat Premium,网上有破解及安装教程 2.新建sqlite连接,选择新建sqlite3,如下图 3.接着点确定,如图 4. 5.
- Webpack Proxy工作原理?为什么能解决跨域?
一.是什么 webpack proxy,即webpack提供的代理服务 基本行为就是接收客户端发送的请求后转发给其他服务器 其目的是为了便于开发者在开发模式下解决跨域问题(浏览器安全策略限制) 想要实 ...
- git合并某分支上的单次提交(cherry-pick)
1. 查找提交对应的hash值 git log 查看 d 查看下一页,q退出 vscode通过gitlens插件查看 2.合并提交 git cherry-pick hahs值
- 力扣92(java&python)-反转链表Ⅱ(中等)
题目: 给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . ...
- 工商银行分布式服务 C10K 场景解决方案
简介: Dubbo 是一款轻量级的开源 Java 服务框架,是众多企业在建设分布式服务架构时的首选.中国工商银行自 2014 年开始探索分布式架构转型工作,基于开源 Dubbo 自主研发了分布式服务平 ...
- 同程旅行基于 RocketMQ 高可用架构实践
简介: 我们在几年前决定引入 MQ 时,市场上已经有不少成熟的解决方案,比如 RabbitMQ , ActiveMQ,NSQ,Kafka 等.考虑到稳定性.维护成本.公司技术栈等因素,我们选择了 R ...
- 阿里云飞天论文获国际架构顶会 ATC 2021最佳论文:全球仅三篇
简介: 近日,计算机系统结构国际顶级学术会议 USENIX ATC在线上举行.ATC 始办于1992年,是由USENIX组织的计算机系统领域的顶级会议,至今已成功举办31届,计算机系统领域中Oak语言 ...
- WPF 引用 UWP 控件 不打包为 MSIX 分发的方法
按照微软的官方文档,大部分的文档都会说如果用了 XAML Islands 等技术的时候,需要新建一个打包项目,将 WPF 应用打包为 msix 等才可以进行分发和使用.但是实际上不打包也可以,此时可以 ...
- 2019-8-31-dotnet-使用-Environment.FailFast-结束程序
title author date CreateTime categories dotnet 使用 Environment.FailFast 结束程序 lindexi 2019-08-31 16:55 ...
- 12.prometheus监控之Domain域名过期监控
一.域名过期时间监控 域名的监控通过domain_exporter来完成 domain_exporter:https://github.com/caarlos0/domain_exporter/rel ...