kafka 消费者的消费策略以及再平衡1

一kafka 再平衡

1.1 kafka的再平衡

Kafka的再平衡是consumer所消费的topic发生变化时,topic上的分区再次分配的情况。

默认策略是 Range + CooperativeSticky 。 Kafka 可以同时使用 多个分区分配策略。

1.2 kafka触发再平衡的情况

1.consumer group中的新增或删除某个consumer,导致其所消费的分区需要分配到组内其他的consumer上;

2.consumer订阅的topic发生变化,比如订阅的topic采用的是正则表达式的形式,如test-*此时如果有一个新建了一个topic test-user,那么这个topic的所有分区也是会自动分配给当前的consumer的,此时就会发生再平衡;

3.consumer所订阅的topic发生了新增分区的行为,那么新增的分区就会分配给当前的consumer,此时就会触发再平衡。

1.3 kafka触发再平衡的策略

1.Round Robin:会采用轮询的方式将当前所有的分区依次分配给所有的consumer;

2.Range:首先会计算每个consumer可以消费的分区个数,然后按照顺序将指定个数范围的分区分配给各个consumer;

3.Sticky:这种分区策略是最新版本中新增的一种策略,其主要实现了两个目的:

将现有的分区尽可能均衡的分配给各个consumer,存在此目的的原因在于Round RobinRange分配策略实际上都会导致某几个consumer承载过多的分区,从而导致消费压力不均衡;如果发生再平衡,那么重新分配之后在前一点的基础上会尽力保证当前未宕机的consumer所消费的分区不会被分配给其他的consumer上;

1.4 Round Robin策略

其主要采用的是一种轮询的方式分配所有的分区。轮询的策略就是简单的将所有的partition和consumer按照字典序进行排序之后,然后依次将partition分配给各个consumer,如果当前的consumer没有订阅当前的partition,那么就会轮询下一个consumer,直至最终将所有的分区都分配完毕。

假设假如现在有 7 个分区, 3 个消费者,排序后的分区将会 是0,1,2,3,4,5,6;消费者为c1,c2,c3

缺点:

轮询的方式会导致每个consumer所承载的分区数量不一致,从而导致各个consumer压力不均一。

1.5 Range策略

Range策略就是,统计出分区数/消费者数量,得出的结果就是每个分区的平均数,余数再平均分给前面几个消费者。

假设假如现在有 7 个分区, 3 个消费者,排序后的分区将会 是0,1,2,3,4,5,6;消费者为c1,c2,c3

缺点:这种方式从计算原理上就会导致排序在前面的consumer分配到更多的分区,从而导致各个consumer的压力不均衡。

1.6 Sticky策略

可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前,consumer尽量保持原有分配的分区不变化。在此基础上进行新增一些分区。

假设假如现在有 7 个分区, 3 个消费者,排序后的分区将会 是0,1,2,3,4,5,6;消费者为c1,c2,c3

结论:各个分区是均匀的分配到各个consumer的,并且还保证了当前consumer已经消费的分区是不会分配到其他的consumer上的。与Round Robin进行对比,可以很明显的发现,Sticky重分配策略分配得更加均匀一些。

https://mp.weixin.qq.com/s?__biz=MzI2NTkwOTgxMw==&mid=2247483653&idx=1&sn=e0df814f7818414f27ad2c2c567b031a&chksm=ea97625fdde0eb4922eae9ded101dbdf149a35a9241046aadaa90922cf8399c9e609cda4df9f&scene=27

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/109823.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Godot 和 VScode配置C#环境注意事项

前言 尽管有些博主会建议如果我们熟悉C#的话,最好还是使用GDscript,而且对于小白上手也相对简单,但是C#的性能终究还是比动态语言好,也相比CPP简单些,尽管现在Godot还是有些问题,比如不像unity那样适配swit…

ChatGPT与日本首相交流核废水事件-精准Prompt...

了解更多请点击:ChatGPT与日本首相交流核废水事件-精准Prompt...https://mp.weixin.qq.com/s?__bizMzg2NDY3NjY5NA&mid2247490070&idx1&snebdc608acd419bb3e71ca46acee04890&chksmce64e42ff9136d39743d16059e2c9509cc799a7b15e8f4d4f71caa25968554…

[腾讯云 Cloud Studio 实战训练营] 云上编程的革命:我的 Cloud Studio 体验之旅

文章目录 1. 无缝的云端体验1.1 云端工作站的魅力1.2 真正的在线编程1.3 强大的协作能力1.4 多平台兼容性1.5 安全和数据备份1.6 持续更新和维护1.7 灵活的资源扩展 2. 功能强大的在线 IDE2.1 基础功能全覆盖2.2 高级功能支持2.3 多语言支持2.4 自定义工作流程2.5 版本控制和协…

I/O多路复用三种实现

一.select 实现 (1)select流程 基本流程是: 1. 先构造一张有关文件描述符的表; fd_set readfds 2. 清空表 FD_ZERO() 3. 将你关心的文件描述符加入到这…

数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

全文链接:http://tecdat.cn/?p27384 在本文中,数据包含有关葡萄牙“Vinho Verde”葡萄酒的信息(点击文末“阅读原文”获取完整代码数据)。 介绍 该数据集(查看文末了解数据获取方式)有1599个观测值和12个变量&#xf…

ChatGPT的未来

随着人工智能的快速发展,ChatGPT作为一种自然语言生成模型,在各个领域都展现出了巨大的潜力。它不仅可以用于日常对话、创意助手和知识查询,还可以应用于教育、医疗、商业等各个领域,为人们带来更多便利和创新。 在教育领域&#…

安装深度(Deepin)系统

Deepin系统安装 Deepin是和Ubuntu一样,是一个基于Debian的Linux的发型版本。 Deepin相对于Ubuntu,Deepin更适合中国用户的使用习惯。 一 官网工具制作启动盘 制作启动盘、和安装系统,操作非常简单,nice! 官网提供了…

【云计算】虚拟私有网络 VPC

虚拟私有网络 VPC 1.VPC 简介1.1 VPC 相关基本概念1.2 其他相关基本概念 2.VPC 通信场景2.1 VPC 内部互通2.2 VPC 间互通2.2.1 对等连接2.2.2 Transit Gateway 或者云联网 2.3 访问 Internet2.3.1 Internet 网关2.3.2 NAT 网关 2.4 访问本地网络2.4.1 VPN 连接2.4.2 专线接入2.…

uniapp微信小程序地图实现周边

官方说明:小程序JavascriptSDK使用指南 - 微信小程序解决方案 | 腾讯位置服务https://lbs.qq.com/product/miniapp/jssdk/ 先申请腾讯地图的开发者密钥,申请地址:腾讯位置服务 - 立足生态,连接未来 申请密钥时,需要勾…

基于matlab实现的弹簧振动系统模型程序(动态模型)

完整代码: clear all; %System data m1.0; zeta0.01; omega01.0; Dt1.0; f01.0; x00.0; dotx00.0; xmaxsqrt(x0^2(dotx0/omega0)^2)min([0.5*abs(f0)*Dt/(m*omega0) f0/omega0^2]); omegadomega0*sqrt(1-zeta^2); dt00.1*pi/omega0; nstep500; a0.70; b0.…

postgresql-视图

postgresql-视图 视图概述使用视图的好处 创建视图修改视图删除视图递归视图可更新视图WITH CHECK OPTION 视图概述 视图(View)本质上是一个存储在数据库中的查询语句。视图本身不包含数据,也被称为 虚拟表。我们在创建视图时给它指定了一个…

腾讯云镜像TencentOS Server操作系统介绍、性能稳定性测评

腾讯云TencentOS Server镜像是腾讯云推出的Linux操作系统,完全兼容CentOS生态和操作方式,TencentOS Server操作系统为云上运行的应用程序提供稳定、安全和高性能的执行环境,TencentOS可以运行在腾讯云CVM全规格实例上,包括黑石物理…