kafka处理大量消息积压tips —— 筑梦之路

一、consumer导致kafka积压了大量消息

场景:

  1. 如果是Kafka消费能力不足,则可以考虑增加 topic 的 partition 的个数,

同时提升消费者组的消费者数量,消费数 = 分区数 (二者缺一不可)

  1. 若是下游数据处理不及时,则提高每批次拉取的数量。批次拉取数量过少

(拉取数据/处理时间 < 生产速度),使处理的数据小于生产的数据,也会造成数据积压。

方法:

  1. 增大partion数量,

  2. 消费者加了并发,服务, 扩大消费线程

  3. 增加消费组服务数量

  4. kafka单机升级成了集群

  5. 避免消费者消费消息时间过长,导致超时

  6. 使Kafka分区之间的数据均匀分布

二、消息过期失效

产生消息堆积,消费不及时,kafka数据有过期时间,一些数据就丢失了,主要是消费不及时

经验

  1. 消费kafka消息时,应该尽量减少每次消费时间,可通过减少调用三方接口、读库等操作,

从而减少消息堆积的可能性。

  1. 如果消息来不及消费,可以先存在数据库中,然后逐条消费

(还可以保存消费记录,方便定位问题)

  1. 每次接受kafka消息时,先打印出日志,包括消息产生的时间戳。

  2. kafka消息保留时间(修改kafka配置文件, 默认一周)

  3. 任务启动从上次提交offset处开始消费处理

三、综上使用kafka注意事项

  1. 由于Kafka消息key设置,在Kafka producer处,给key加随机后缀,使其均衡

  2. 数据量很大,合理的增加Kafka分区数是关键。

Kafka分区数是Kafka并行度调优的最小单元,如果Kafka分区数设置的太少,

会影响Kafka consumer消费的吞吐量. 如果利用的是Spark流和Kafka direct approach方式,

也可以对KafkaRDD进行repartition重分区,增加并行度处理.

相关推荐
starzy19901 天前
KafkaProducer 加载元数据:一条 MetadataRequest 的完整旅程
大数据·kafka
PingCAP1 天前
善战者无赫赫之功:消费金融核心系统的数据库选型与升级路径
数据库·分布式·架构
库库的数据库笔记1 天前
金融核心交易系统的数据库国产信创改造该如何做?
大数据·数据库·分布式·mysql·oracle·金融·数据库架构
RobinXYuan1 天前
【Kafka 源码手记】04 客户端如何找到 Broker
kafka·源码阅读
爱吃火鸡面呀1 天前
深入理解 Spark RDD:五大特性与实战解析
大数据·分布式·spark
Linux实战笔记1 天前
记一次消息队列选型对比线上排查:Kafka/RabbitMQ/Pulsar 技术选型
kafka·rabbitmq·高并发·pulsar·消息队列选型
Norris Huang1 天前
Kafka Connect 与 Flink CDC 写入 Iceberg:Upsert 的代价,以及 S3 Tables 的真正价值
分布式·flink·kafka
张彦峰ZYF1 天前
一条消息的丢与重:Kafka 与 RabbitMQ 可靠投递的确认、位点、死信与幂等全链路
后端·kafka·消息队列·rabbitmq·isr·解耦与削峰·丢失与重复
我就是不信1 天前
集群高并发环境下如何保证分布式唯一全局ID生成?
分布式
黄俊懿2 天前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构