kafka消费者

  • Kafka消费者从属于消费者组,一个组里的消费者订阅的是同一个topic,每个消费者接收topic一部分分区的消息
  • 可以为每一个需要获取一个或多个topic全部消息的应用程序创建一个消费者组,每个消费者可以消费若干个分区,往阻力添加消费者来伸缩读取能力和处理能力,组里的每个消费者只处理一部分消息
  • 一个新的消费者加入消费者组时,它读取的事原本有其他消费者读取的消息
  • 一个消费者被关闭或者发生崩溃时,他离开该组,原本由他读取的分区将由消费者组里的其他消费者读取
  • 分区的所有权从一个消费者转移到另一个消费者,这个行为被称为再均衡。给消费者组带来了高可用性和伸缩性
  • 消费者通过向被指派为群组协调器 的broker发送心跳来维持他们和组的从属关系以及他们对分区的所有权关系。只要消费者以正常的时间间隔发送心跳,就被认为是活跃的,消费者会在轮询消息或提交偏移量时发送心跳。如果消费者停止发送心跳的时间足够长,会话就会过期,默认消费者死亡

核心参数指标

  • fetch.min.bytes:消费者从服务器获取记录的最小字节数,如果可用的数据量小于指定大小,那么会等到有足够的可用数据时才把它返回给消费者,降低消费者和broker的工作负载
  • fetch.max.wait.ms:指定borker的等待时间
  • max.partition.fetch.bytes:服务器从每个分区里返回给消费者的最大字节数
  • session.timeout.ms:消费者在被认为死亡之前可以与服务器断开连接的时间
    • 设置过小:可以更快检测和恢复崩溃节点,长时间轮询或者垃圾手机可能导致非预期的再均衡
    • 设置过大:减少意外的再均衡,检测节点崩溃需要更长的时间
  • auto.offset.reset:消费者在读取一个没有偏移量的分区或者偏移量无效的情况下处理方式
    • earliest:从起始位置读取分区记录
    • latest:从最新的记录开始读取数据
  • enable.auto.commit:消费者是否自动提交偏移量
  • partition.assignment.strategy:分区的分配策略
    • Range:把topic的若干个连续的分区分配给消费者
    • RoundRobin:把topic的所有分区逐个分配给消费者

消费者如何提交偏移量

  • 消费者往一个叫做_consumer_offset的特殊topic发送消息,消息里包含每个分区的偏移量
  • 如果消费者崩溃或有新的消费者加入群组,就会触发再均衡,完成再均衡后,每个消费者可能分配到新的分区,而不是之前处理的额那个。为了能够继续之前的工作,消费者需要读取每个分区最后一次提交的偏移量,然后从偏移量指定的地方继续处理消息 。
相关推荐
运维行者_16 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
jeffwang17 小时前
我把同一个压测做错了三次,第四次才发现真正的瓶颈
分布式·性能优化·rust
Blossom i17 小时前
分布式编程实验二:Flink安装与编程实践(头歌云客)
大数据·分布式·flink
ai_coder_ai18 小时前
事件驱动架构(EDA)在分布式业务系统中的应用
分布式·架构
蓝胖的四次元口袋20 小时前
分布式知识梳理(4)
分布式
书香门第20 小时前
系统设计练习 - 分布式黑名单服务(design a distributed denylist service)
分布式·系统架构·系统设计
江畔柳前堤1 天前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
霸道流氓气质1 天前
RabbitMQ 延迟队列与死信队列:原理、实现与实战
分布式·rabbitmq·ruby
爱吃面的猫1 天前
大数据Kafka3.x之——Kafka3.3.0安装与使用(详细)
大数据·分布式·zookeeper
小张同学a.2 天前
zabbix企业级监控平台4——分布式监控与grafana数据可视化
linux·运维·数据库·分布式·信息可视化·zabbix·grafana