Kafka入门, 消费者工作流程

news2024/12/28 20:54:40

kafka消费方式

在这里插入图片描述
pull(拉)模式:
consumer采用从broker中主动拉取数据。
Kafka采用这种方式。
push(推)模式:
Kafka没有采用这种方式,因为由broker决定消息发送速率,很难适应所有消费者的速率。例如推送速度是50m/s,consumer1,consumer2就来不及处理消息
pull模式不足之处是,如果kafka没有数据,消费者可能会陷入循环中,一致返回空数据

消费者总体工作流程

在这里插入图片描述
1)每个消费者的offset由消费者提交到系统主题保存
2)每个分区的数据只能由消费者组中一个消费者消费
3)一个消费者可以消费多个分区数据

消费者原理

在这里插入图片描述
Consumer Group(CG):消费者组,由多个consumer组成,形成一个消费组的条件,是所有消费组groupid相同。
消费者组内每个消费者负责消费不同的分区数据,一个分区只能由由一个组内消费者消费。
消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
在这里插入图片描述
1)如果消费组中添加更多的消费者,超过主题分区数量,则有一部分消费者就会闲置,不会接收任何消息
2)消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者

消费者初始化流程

在这里插入图片描述
coordinator:辅组实现消费者组的初始化和分区的分配
coordinator节点选择=groupid的hashcode值%50(_consumer_offsets的分区数组)
例如:groupid的hashcode值=1,1%50=1,那么_consumer_offsets主题的1号分区,在哪个broker上,就选择这个节点的coordinator作为这个消费者组的老大,消费者组下的所有消费者提交offset的时候就往这个分区去提交offset
1)每个consumer都发送joinGroup请求
2)选出一个consumer作为leader
3)要把消费的topic情况发送给leader消费者
4)leader会负责指定消费方案
5)把消费方案分给coordinator
6)coordinator就把消费方案下发给各个consumer
7)每个消费者都会和coordinator保存心跳(默认3s),一旦超时(session.timeout.ms=45s),该消费者就会被一处,并触发再平衡,或者消费者处理消息的时间过长(max.poll.interval.ms5分钟),也会触发再平衡
在这里插入图片描述
Fetch.min.bytes每批次最小抓取大小,默认1字节
fetch.max.wait.ms一批数据最小值未达到的超时间,默认500ms
fetch.max.bytes每批次最大抓取大小,默认50m
max.poll.records一次拉取数据返回消息的最大条数,默认500条
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云原生时代,如何通过 KubeSphere x 极狐GitLab 构建安全应用?

本文整理自云原生 Meetup 杭州站上,极狐(GitLab) DevOps 技术布道师马景贺的演讲。 当听到云原生的时候,你会想起什么? 可能很多人很自然地就会想到 Kubernetes、容器、微服务、开源等等,这些关键词是我们接触云原生绕不开的话题。…

CleanMyMac X4.13中文版mac电脑优化加速工具

CleanMyMac X 可以卸掉系统的额外负担 让您的电脑明显提速 不要再因为运行缓慢的 Mac 而拖慢您的效率。CleanMyMac X已经正式发布,作为最新的系统清理和应用管理软件,可以让用户一键智能化清理Mac电脑,自动扫描Mac上的所有文件,包…

Day44

思维导图 练习 全局变量,int monster 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-0;},法师类继承自英雄类&#…

【操作系统】一些重要的概念

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

敏捷开发SCRUM工具

目录 1 Scurm开发工具1.1 白板1.2 PingCode1.3 VersionOne1.4 Atlassian Jira 2 PingCode进行Scurm开发2.1 角色管理2.2 创建敏捷项目2.3 需求管理2.4 迭代2.5 版本管理 1 Scurm开发工具 1.1 白板 上面我们说了Scurm框架的操作流程&#xff0c;下面我们看下支持Scurm开发框架的…

SpringBoot3【③ 数据访问】

整合SSM场景 SpringBoot 整合 Spring、SpringMVC、MyBatis 进行数据访问场景开发 1. 创建SSM整合项目 勾选的情况下会导入这些包 <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency><groupId>…

JMeter进行websocket测试

在做websocket性能测试的时候找了几个测试工具都暂时没有对websocket的支持&#xff0c;发现jmeter好像对websockect支持。但是使用jmeter时需要安装插件&#xff0c;下面一起看一下。 jmeter下载安装&#xff1a; 官网下载 https://jmeter.apache.org/download_jmeter.cgi 也…

【Java用法】Java在Linux下获取当前程序路径以及在Windows下获取当前路径对比

Java在Linux下获取当前程序路径以及在Windows下获取当前路径对比 log.info("分隔符&#xff1a;File.separator[{}]", File.separator); log.info("用户主目录&#xff1a;user.home[{}]", System.getProperties().getProperty("user.home")); l…

(模拟) 31. 下一个排列——【Leetcode每日一题】

❓ 31. 下一个排列 难度&#xff1a;中等 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的…

loki 的memberlist查看

本文来自&#xff1a;loki 的memberlist查看 | 老五笔记 loki作为目前比较 通用的日志类数据管理软件&#xff0c;使用起来具有一定的门槛。loki既可以支持单机版使用&#xff0c;也可以为了应对大规模数据而采用集群模式进行部署。 而在集群模式下&#xff0c;需要在配置文件…

You need to use a Theme.AppCompat theme (or descendant) with this activity

You need to use a Theme.AppCompat theme (or descendant) with this activity 最近使用Android Studio新建了个 Jetpack Compose项目&#xff0c;但创建java Activity时报错“You need to use a Theme.AppCompat theme (or descendant) with this activity”。 两种解决办法…

ipad可以用别的品牌的手写笔吗?ipad专用笔替代品

要知道&#xff0c;这款正版苹果的电容笔&#xff0c;单单一支价格都要接近上千元。事实上&#xff0c;对于那些没有很多预算的人来说&#xff0c;平替电容笔是一个很好的选择。一支苹果原装的电容笔&#xff0c;价格是平替电容笔的四倍&#xff0c;但这种平替电容笔&#xff0…

Uniapp开发的开源盲盒系统源码

最近比较火的盲盒系统&#xff0c;该项目是基于uniapp开发的盲盒项目&#xff0c;有需要的朋友可以联系我&#xff0c;运营级的项目&#xff0c;本次开源的是uniapp前端模板&#xff0c;选用技术为JAVA&#xff0c;采用框架&#xff1a;spring bootmybatisvue开发。 通过node安…

day2 QT按钮与容器

目录 按钮 1、QPushButton 2、QToolButton 3、QRadioButton 4、QCheckBox 示例 容器 ​编辑 1. QGroupBox&#xff08;分组框&#xff09; 2. QScrollArea&#xff08;滚动区域&#xff09; 3. QToolBox&#xff08;工具箱&#xff09; 4. QTabWidget&#xff08;选…

LLaMA

LLaMA 1&#xff0c;llama 参数范围7B 13B 33B 65B 在万亿token上训练的模型&#xff0c; 2,研究重点 研究表明&#xff0c;最好的模型性能不是由最大的模型体积实现&#xff0c;而是在更多的数据上训练较小的模型实现 工作重点是通过使用比通常更多的token&#xff0c;训练一系…

05-Redis初步使用

关系型数据的ACID特性:事务的四大特性:原子性,一致性,隔离性,持久性 关系型数据库应对的三高问题:高并发,高效率,高扩展 关系型数据库和非关系型数据库 关系型数据库的数据存储在表中,无法应对陡增的数据 非关系型数据库使用键值对的方式进行存储数据:redis可以用作缓存 r…

U-Boot移植 - 3_U-Boot 命令使用

文章目录 U-Boot 命令使用1. 信息查询命令2. 环境变量操作命令2.1 修改环境变量2.2 新建环境变量2.3 删除环境变量 3. 内存操作命令3.1 md 命令3.2 nm 命令3.3 mm 命令3.4 mw 命令3.5 cp 命令3.6 cmp 命令 4. 网络操作命令4.1 ping 命令4.2 dhcp 命令4.3 nfs 命令4.4 tftp 命令…

Pinia基础使用 (vite vue3)

Pinia 概念 是 Vue 的存储库&#xff0c;它允许您跨组件/页面共享状态。 Vue官方推荐状态库 Pinia 的优点 pinia 符合直觉&#xff0c;易于学习。 pinia 是轻量级状态管理工具&#xff0c;大小只有1KB. pinia 模块化设计&#xff0c;方便拆分。 pinia 没有 mutations&#x…

Linux多进程数据交换--共享内存

个人博客地址: https://cxx001.gitee.io 基础 在linux系统开发当中&#xff0c;时常需要在多个进程之间交换数据&#xff0c;在多个进程之间交换数据&#xff0c;有很多方法&#xff0c;但最高效的方法莫过于共享内存。 linux共享内存是通过tmpfs这个文件系统来实现的&#x…

【漏洞案例】记一次aws-key泄露导致火币交易所被攻击案例

全球最大的加密货币交易所之一火币悄然修复了一个数据泄露事件&#xff0c;该泄露事件可能导致该公司的云存储被访问。火币无意中共享了一组凭证&#xff0c;授予其所有 Amazon Web Services S3 存储桶写入权限。 该公司使用 S3 存储桶来托管其 CDN 和网站。任何人都可以使用这…