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发送消息,消息里包含每个分区的偏移量
  • 如果消费者崩溃或有新的消费者加入群组,就会触发再均衡,完成再均衡后,每个消费者可能分配到新的分区,而不是之前处理的额那个。为了能够继续之前的工作,消费者需要读取每个分区最后一次提交的偏移量,然后从偏移量指定的地方继续处理消息 。
相关推荐
李洋-蛟龙腾飞公司12 分钟前
HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据文件资产迁移
分布式·华为·harmonyos
技术路上的苦行僧3 小时前
分布式专题(10)之ShardingSphere分库分表实战指南
分布式·shardingsphere·分库分表
GitCode官方4 小时前
GitCode 光引计划投稿 | GoIoT:开源分布式物联网开发平台
分布式·开源·gitcode
小扳5 小时前
微服务篇-深入了解 MinIO 文件服务器(你还在使用阿里云 0SS 对象存储图片服务?教你使用 MinIO 文件服务器:实现从部署到具体使用)
java·服务器·分布式·微服务·云原生·架构
zquwei14 小时前
SpringCloudGateway+Nacos注册与转发Netty+WebSocket
java·网络·分布式·后端·websocket·网络协议·spring
道一云黑板报18 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
qq_54702617918 小时前
Kafka 常见问题
kafka
core51218 小时前
flink sink kafka
flink·kafka·sink
飞来又飞去20 小时前
kafka sasl和acl之间的关系
分布式·kafka
MZWeiei21 小时前
Zookeeper的监听机制
分布式·zookeeper