kafka中常见问题你遇到哪些

kafka核心概念
broker: 一个kafka服务端节点
cluseter: 集群,由多个broker组合的集合
message:消息,也叫record,kafka中信息传递的载体,对于kafka
producer:生产者,向kafka发送消息的应用
consumer:消费者,从kafka接收消息的应用
consumer group:消费者组,一组具有相同group id的consumer,当一个topic被同一个group的多个consumer消费的时候,每条消息都只会投递到一个consumer,实现消费的负载均衡,通过group,可以确保一个topic消息被并行消费,调高吞吐量
topic:消费的主题,用于分类消息,在每个broker上都可以创建多个topic
replica:副本,每一个分区都有多个副本,当主分区故障的时候会选择一个备分区,成为leader,kafka中默认副本最大数量是10,副本的数量不能大于broker的数量
partition:分区,一个有序不变的消息列队,用于存储消息,一个topic由一个或者多个分区组成,每个分区中的消息存储于一个或者多个broker上,在一个分区中消息的顺序就是producer发送消息的顺序。
offset: 分区中每条消息位置的信息,是一个单调递增且不变的值。
消费位点:分区被当前consumer消费了消息的最大位点
堆积量:当前分区下消息堆积的总量,即最大位点减去消费位点的值。堆积是一个关键指标,如果发现堆积量较大,则comsumer可能出现了阻塞,或者消费速度更不上生产的速度,此时需要分析consumer的运行状况,尽力提升消费速度。可以清除所有的堆积消息,从最大位点开始消费,或者按照时间点进行点重置。
rebalance:重平衡,消费组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅的主题分区的过程,它是kafka消费者端实现高可用的重要手段。
zookeeper: kafka集群依赖zookeeper来保存集群的元信息,以保证系统的可用性。
kafka版本
0.1x 早期孵化版本
1.x 优化streams api,增强可观测性和可调试性,支持java9,优化sasl
2.x 性能提升,增强acl支持
3.x 去掉zookeeper依赖,支持java17,不再支持java8,不再支持v0和v1消息,性能大幅提升
推荐使用2,x和3.x版本
kafka metric监控
producer指标
生产者将消息推送到broker topic的应用,如果生产者失败,消费者将得不到新的消息。
broker指标
因为所有的消息必须通过kafka broker才能被使用,所以对集群中broker的监控是最核心。
consumer指标
consumer是kafka消息终点
zookeeper指标
zookeeper是kafka的一个关键组件(v3.0)之前,zookeeper停机将使kafka停止运行。
kafka典型问题和排查
topic消息发送慢,并发性能低
某个或者某几个topic的消息并发发送性能低,在指标上体现为producer的平均请求延迟大,平均生产吞吐量小
通常消息发送慢如下几种典型原因:
网络带宽不足,导致io等待
消息未压缩,导致网络流量超负荷
消息未批量发送,或者批量阈值配置不恰当,导致发送速率慢
topic分区数量不足,导致broker接收消息积压
broker磁盘性能低,导致磁盘同步慢
broker分区总量过多,导致碎片化,磁盘读写过载‘
排查
确认producer的平均io等待时间指标是否符合预期或者陡增,以便producer到broker之间的网络带宽是否满足业务的流量要求
确认producer的平均压缩率指标,确保要压缩率符合预期
确认producer的平均请求包大小是否过小,如果是的化,需要考虑增大producer发送消息的batchsize,同时调整linger.ms的阈值
查看topic分区数量,分区较小的时候,考虑增加分区数,以水平扩展broker的并发接收消息容量
确认borker磁盘io使用率是否在安全范围之内,如果使用率已经较高,则考虑垂直或者水平扩容broker,同时考虑增加topic分区数,提升topic并接收消息能力
查看集群的总分区数和单个boker的分区数量,确保在规划的容量范围之内。
topic消息堆积
某个或者几个topic的消息堆积持续增加,在指标上直接体现为group消费延迟数量持续增加
常见的消息堆积有如下几种原因:
producer生产消息流量增大
consumer由于业务变化导致消费延迟增加
consumer数量不足
consumer数量频繁变化,导致group不断做再平衡rebalance
broker未收到consumer消息确认消息
排查
确认producer的消息生产量指标是否明显增加
确认consumer的消息流量指标是否明显下降
通过kafka broker提供的命令,确认topic对应consumer数量与实际的consumer数量是否一致,如果不一致,说明某些consumer未正确连接到broker,需要排查consumer是否正常运行
观察consumer的数量是否频繁变化而触发犯法再平衡
由于网络或者其他原因,可能导致consumer与boker之间的连接不稳定,consumer能持续消费消息,但是broker却始终认为消息未确认,导致消费位点不变,此时可能需要确认consumer与broker之间的网络稳定性,甚至重启consumer


国家重拳出击,腾讯或将微信对淘宝、抖音等开放
贝丰科技完成数千万元A轮融资 专注于微型高性能涡轮风机的研发生产
基于物联网​框架的RFID应用参考架构规划指南
如何通过渗透测试来找出工控系统中的脆弱环节
录音芯片发展方案介绍
kafka中常见问题你遇到哪些
windows下安信可Ra-08H接入自建chirpstack服务器,使用MQTT通信教程
硅片:最核心的半导体材料
荣耀9发布会最新消息汇总:华为荣耀9发布会直播地址、视频直播平台、图文直播等多达70家?收起坐等
【开发者福利月】因你存在,与我同行
Airdoc与复星领投、搜狗完成融资,共同探索医疗人工智能产业结合路径
中兴天机Axon 10 Pro性能大揭秘
软件定义汽车如何为工程师创造机会
欧洲推出分时租赁业务 意图以此来攻克纯电动汽车行业
齐普光电高端LED显示屏助力xR虚拟拍摄
GL823K:一款USB2.0 SD/MMC闪存读卡器单芯片
英特尔与中国联通合作将全面打造2022年北京冬奥会5G体验
单片机引脚中的VCC和VDD有什么区别?
printf和scanf什么意思
东风日产新款骐达号称“耐操王TIIDA”,空间大、造型时尚、关键便宜!仅售8万