当前位置: 首页 > news >正文

Kafka 消费者组

Kafka 消费者组

  • Consumer数
  • 位移
  • 重平衡

消费者组 (Consumer Group) : 可扩展且容错性的消费者机制

  • 一个组内可能有多个消费者 (Consumer Instance) : 共享一个公共 ID (Group ID)
  • 组内的所有消费者协调消费订阅主题 (Subscribed Topics) 的所有分区 (Partition)
  • 每个分区只能由同个消费者组内的一个 Consumer 消费

Consumer Group 的特性:

  1. Consumer Group :有 n 个 Consumer。一个 Consumer 可能是进程或线程
  2. Group ID (字符串) : 标识唯一 Consumer Group
  3. Consumer Group 订阅的主题的单个分区,只能由组内的某个 Consumer 消费

两种消息引擎模型 :

  • 俩种的伸缩性 (scalability) 都差
  • 点对点模型 : 消费队列 : 消息一被消费,就从队列中删除,只能被一个 Consumer 消费
  • 发布/订阅模型 : 允许消息被多个 Consumer 消费

Consumer Group :

  • 解决伸缩性 (scalability) 差问题
  • 消息队列模型 :所有实例都属于同一个 Group
  • 发布 / 订阅模型 :所有实例分别属于不同的 Group

Consumer Group 伸缩性 :

  • Consumer Group 订阅了多个主题后,组内的每个实例不要求一定要订阅主题的所有分区,它只会消费部分分区中的消息
  • Consumer Group 之间彼此独立,互不影响,它们能够订阅相同的一组主题而互不干涉
  • Broker 端的消息留存机制,Kafka 的 Consumer Group 能规避伸缩性差的问题

Consumer数

Consumer Group 下理想 Consumer 数 :

  • Consumer 数 = 该 Group 订阅主题的分区总数

例子 :

  • 一个 Consumer Group 订阅了 3 个主题
  • A、B、C 的分区数分别是1 , 2 , 3 ,该 Group 的总分区数是 6
  • 为该 Group 设置 6 个 Consumer ,能最大限度实现高伸缩性

设置 > 或 < 6 :

  • 设 3 个 Consumer,每个 Consumer 平均消费 2 个分区 (6/3)
  • 设 8 个 Consumer,有 2 (8 – 6) 个 Consumer 无法被分配分区,处于空闲状态
  • 生产中,不推荐设 Consumer 数 > 总分区数,多余的 Consumer 会浪费资源

位移

Kafka 管理位移 :

  • 消费位置信息 : 位移 (Offset) : 消费者在消费时 ,记录消费条数
  • Offset 类似于一组 KV 对 :Key : 分区;V : Consumer 消费该分区的最新位移
  • 用 Java 类似结构 (Map<TopicPartition, Long>) : TopicPartition : 一个分区,Long : 位移的类型

Kafka 有新旧 Consumer :

  • 新旧 Consumer 的管理位移方式不一样
  • 老 Consumer Group 把位移放在 ZK , 减少 Broker 开销
  • 新 Consumer Group 把位移放在 __consumer_offsets 主题

ZK 不适合频繁的写更新

  • Consumer Group 的位移更新是频繁操作
  • 大量写操作会拖慢 ZK 集群的性能

重平衡

Rebalance :

  • 协议规定 Group 下的所有 Consumer 怎么分配订阅 Topic 的每个分区
  • Rebalance 时,Group 下所有的 Consumer 都要一起参与

Rebalance 触发条件 :

  • 组内成员数变化 : 有新 Consumer 加入/离开组或 Consumer 异常被踢出组
  • 订阅主题数变化 : 新创的主题 , 被 Group 订阅了 , 该 Group 就会 Rebalance
  • 订阅主题的分区数变化 : 增加主题的分区数,订阅该主题的所有 Group 会 Rebalance

Rebalance 的 3 种分配策略 :

  • 都是为了公平分配 : 每个 Consumer 分配平均的分区数
  • 如 : 一个 Group 内有 10 个 Consumer,要消费 100 个分区,理想的分配策略 : 每个 Consumer 平均分配 10 个分区
  • 当有分配倾斜,就会忙死/闲死

Group 发生 Rebalance :

  • 设某个 Group 有两个 Consumer,如 : A/B
  • 当 C 加入时,会触发 Rebalance,并按照分配策略重新为 A、B 和 C 分配分区
  • Rebalance 后的公平分配 : 每个 Consumer 消费 2 个分区

在这里插入图片描述

Rebalance 对 Consumer Group 消费影响大

  • Rebalance 类似 JVM 的 STW
  • Rebalance 时,所有 Consumer 都会停止消费,等待 Rebalance 完成

相关文章:

Kafka 消费者组

Kafka 消费者组Consumer数位移重平衡消费者组 (Consumer Group) : 可扩展且容错性的消费者机制 一个组内可能有多个消费者 (Consumer Instance) : 共享一个公共 ID (Group ID)组内的所有消费者协调消费订阅主题 (Subscribed Topics) 的所有分区 (Partition)每个分区只能由同个…...

高效学 C++|组合类的构造函数

设计好MyString类后&#xff0c;就可以像使用普通类型一样使用它了。例如&#xff0c;类的对象可以像普通的变量一样作为另一个类的数据成员。【例1】 MyString类的对象作为CStudent类的数据成员。1. //MyString类的定义省略 2. //注意&#xff1a;保留其构造函数、析构函数、…...

Java使用Springboot+Mybatis构建第一个项目

一、java安装&#xff1a;安装 Java1.8环境 maven3.6.1环境 Gradle-6.9.1环境 IntelliJ IDEA 2022.1.3 下载旗舰版&#xff08;因为包含springboot&#xff09;二、项目构建-数据库是sqlserver&#xff1a;1、打开idea&#xff0c;点击File->New->Project&#xff0c;选中…...

L2-007 家庭房产 L1-007 念数字

给定每个人的家庭成员和其自己名下的房产&#xff0c;请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤1000&#xff09;&#xff0c;随后N行&#xff0c;每行按下列格式给出一个人的房产&#xff1a; 编…...

1/4、1/2、整车悬架天棚主动控制仿真分析合集

目录 前言 1. 1/4悬架系统 1.1数学模型 1.2仿真分析 2. 1/2悬架系统 2.1数学模型 2.2仿真分析 3. 整车悬架系统 3.1数学模型 3.2仿真分析 4.总结 参考文献 前言 对于天棚控制相比大家不陌生&#xff0c;它是由美国的Karnopp提出&#xff0c;利用假设的与天棚固连…...

【微信小程序项目实战】TodoList-项目主体搭设(2)

目录JS 部分数据 dataonShow输入框双向绑定保存与读取添加新的待办事项完成待办事项删除待办事项WXML顶部输入框主体回到顶部按钮完整代码JSWXMLWXSSJS 部分 为便于分析各个组件的相互作用与原理&#xff0c;故先从 JS 入手&#xff0c;而后再完善 HTML 部分 以下所有代码&…...

23种设计模式-迭代器模式(安卓应用场景介绍)

迭代器模式是一种行为型设计模式&#xff0c;它允许你在不暴露集合对象内部结构的情况下遍历集合中所有元素。在本文中&#xff0c;我们将介绍迭代器模式的概念和原理&#xff0c;提供一个基于Java的示例&#xff0c;并探讨在Android应用程序开发中的实际应用。 迭代器模式的概…...

面试 - 软件工程体系

今天是我人生中的第二次面试&#xff0c;第一次面试到技术问题。 面试公司&#xff1a;无锡信捷电气股份有限公司 面试时间&#xff1a;2023 年 3 月 6 日 15:30 面试地点&#xff1a;西安工程大学&#xff08;临潼校区&#xff09;D-188 在技术面中&#xff0c;我表现的不是很…...

05-CSS

今日目标能够说出 为什么要用定位能够说出 定位的 4 种分类能够说出 4 种定位各自的特点能够说出 为什么常用子绝父相布局能够写出 淘宝轮播图布局能够说出 显示隐藏的 3 种方式以及区别1. 定位(position) 介绍1.1 为什么使用定位我们先来看一个效果&#xff0c;同时思考一下用…...

华为OD机试题,用 Java 解【分奖金】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…...

Multisim 14.3 安装教程

1、首先解压Multisim 安装包。 2、解压完成后&#xff0c;双击点进去&#xff0c;找到setup这个文件&#xff0c;点进去。 3、找到setup文件里面的install.exe文件&#xff0c;并鼠标右键 “找到以管理员身份运行”。 4、选择“我接受上述许可协议”&#xff0c;点击下一步。 …...

06-Oracle表空间与用户管理(表空间,用户,备份与恢复,导入导出数据)

本讲主要内容&#xff1a; 1.表空间管理&#xff1a;表空间的作用&#xff0c;创建&#xff0c;修改&#xff0c;删除及管理&#xff1b; 2.用户管理&#xff1a;创建用户&#xff0c;修改用户&#xff0c;删除用户&#xff0c;修改密码&#xff0c;解锁&#xff1b; 3.用户…...

XSS攻击防御

XSS攻击防御XSS Filter过滤方法输入验证数据净化输出编码过滤方法Web安全编码规范XSS Filter XSS Filter的作用是通过正则的方式对用户&#xff08;客户端&#xff09;请求的参数做脚本的过滤&#xff0c;从而达到防范XSS攻击的效果。 XSS Filter作为防御跨站攻击的主要手段之…...

敏捷开发还需要PRD吗

一、PRD有什么用 prd提升与RD或者未来接手人的沟通效率 二、为什么会有PRD 首先来说说为什么会有PRD文档。 1、稍微大一点的团队产品经理未必能向每个人传达产品需求&#xff0c;这就需要有一个文档的形式来向项目的所有成员来传达需求&#xff0c;这就是文档的来源。 2、由…...

完整教程:使用Spring Boot实现大文件断点续传及文件校验

一、简介 随着互联网的快速发展&#xff0c;大文件的传输成为了互联网应用的重要组成部分。然而&#xff0c;由于网络不稳定等因素的影响&#xff0c;大文件的传输经常会出现中断的情况&#xff0c;这时需要重新传输&#xff0c;导致传输效率低下。 为了解决这个问题&#xff…...

数位dp-- 数字游戏

题目 思路 也是一道比较典型的数位dp的问题&#xff0c;关键的思想跟我上一篇博客很像&#xff0c; 首先把区间值变成[1,Y]-[1,X-1]的值&#xff0c;然后单独计算得到结果。 总的来说就是把这个数的每一位都单独拿出来&#xff0c;然后根据选0-an-1和选**an**两种方案单独计算&…...

Linux脚本 启动、重启、停止、授权

在jar包所在目录 vim start.sh | reload.sh | stop.sh输入以下命令 然后保存&#xff0c;进行授权 1.启动 nohup java -jar -Dfile.encodingutf-8 IntegrationFrame-sso-1.0.0-SNAPSHOT.jar & echo "started"2.重启 pid$(ps -ef|grep IntegrationFrame-sso-1.…...

Pytorch深度学习实战3-8:详解数据可视化组件TensorBoard安装与使用

目录1 什么是Tensorboard&#xff1f;2 Tensorboard安装3 Tensorboard可视化流程4 Tensorboard可视化实例4.1 常量可视化4.2 特征图可视化1 什么是Tensorboard&#xff1f; 在深度学习领域&#xff0c;网络内部如同黑箱&#xff0c;其中包含大量的连接参数&#xff0c;这给人工…...

华为OD机试 - 旋转骰子(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:旋转骰子…...

如何做SpringBoot单元测试?

前言单元测试&#xff08;unit testing&#xff09;&#xff0c;是指对项目中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试&#xff0c;对于Java来说或者是在SpringBoot项目中&#xff0c;最小的可测试单元就是一个方法。做单元测试就是为了证明某段代码的执⾏结果是否符…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...