阅读原文​mp.weixin.qq.com

通常情况下,企业中会采取轮询或者随机的方式,通过Kafka的producer向Kafka集群生产数据,来尽可能保证Kafk分区之间的数据是均匀分布的。

在分区数据均匀分布的前提下,如果我们针对要处理的topic数据量等因素,设计出合理的Kafka分区数量。对于一些实时任务,比如Spark Streaming/Structured-Streaming、Flink和Kafka集成的应用,消费端不存在长时间"挂掉"的情况即数据一直在持续被消费,那么一般不会产生Kafka数据积压的情况。

但是这些都是有前提的,当一些意外或者不合理的分区数设置情况的发生,积压问题就不可避免。

Kafka消息积压的典型场景:

1.实时/消费任务挂掉

比如,我们写的实时应用因为某种原因挂掉了,并且这个任务没有被监控程序监控发现通知相关负责人,负责人又没有写自动拉起任务的脚本进行重启。

那么在我们重新启动这个实时应用进行消费之前,这段时间的消息就会被滞后处理,如果数据量很大,可就不是简单重启应用直接消费就能解决的。

2.Kafka分区数设置的不合理(太少)和消费者"消费能力"不足

Kafka单分区生产消息的速度qps通常很高,如果消费者因为某些原因(比如受业务逻辑复杂度影响,消费时间会有所不同),就会出现消费滞后的情况。

此外,Kafka分区数是Kafka并行度调优的最小单元,如果Kafka分区数设置的太少,会影响Kafka consumer消费的吞吐量。

3.Kafka消息的key不均匀,导致分区间数据不均衡

在使用Kafka producer消息时,可以为消息指定key,但是要求key要均匀,否则会出现Kafka分区间数据不均衡。

那么,针对上述的情况,有什么好的办法处理数据积压呢?

一般情况下,针对性的解决办法有以下几种:

1.实时/消费任务挂掉导致的消费滞后

a.任务重新启动后直接消费最新的消息,对于"滞后"的历史数据采用离线程序进行"补漏"。

此外,建议将任务纳入监控体系,当任务出现问题时,及时通知相关负责人处理。当然任务重启脚本也是要有的,还要求实时框架异常处理能力要强,避免数据不规范导致的不能重新拉起任务。

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

如果积压的数据量很大,需要增加任务的处理能力,比如增加资源,让任务能尽可能的快速消费处理,并赶上消费最新的消息

2.Kafka分区少了

如果数据量很大,合理的增加Kafka分区数是关键。如果利用的是Spark流和Kafka direct approach方式,也可以对KafkaRDD进行repartition重分区,增加并行度处理。

3.由于Kafka消息key设置的不合理,导致分区数据不均衡

可以在Kafka producer处,给key加随机后缀,使其均衡。如何为Kafka集群确定合适的分区数以及分区数过多带来的弊端​mp.weixin.qq.comKafka作为消息系统的系统补充​mp.weixin.qq.com

深入探讨HBASE​mp.weixin.qq.com

kafka怎么查看消息堆积_Kafka集群消息积压问题及处理策略相关推荐

  1. 解决kafka 消息堆积问题的排查及调优

    一.背景说明 深夜接到客户紧急电话,反馈腾讯云 kafka 中有大量消息堆积未及时消费.每分钟堆积近 100w 条数据.但是查看 ES 监控,各项指标都远还没到性能瓶颈.后天公司就要搞电商促销活动,到 ...

  2. 平时只会用Kafka发消息,昨天突然遇到一次Kafka消息堆积生产事故!

    前言 线上kafka消息堆积,所有consumer全部掉线,到底怎么回事? 最近处理了一次线上故障,具体故障表现就是kafka某个topic消息堆积,这个topic的相关consumer全部掉线. 整 ...

  3. java kafka 集群消费_kafka集群简单生产者消费者实例

    项目描述 本项目是个简单的kafka集群简单生产者和消费者实例,生产者能生产消息,消费者能消费消息,这里将消费的消息存入了mysql数据库,适合刚kafka刚入门的朋友借鉴使用,里面的zookeepe ...

  4. kafka消息堆积原因解析

    kafka消息堆积,可以调节如下两个参数 max.poll.records 一次调用poll()返回的最大记录数. 默认值500 就是一次最多拉取500条记录 max.poll.interval.ms ...

  5. kafka 消息堆积解决

    一 :背景 线上kafka消费端因日志异常的解决导致消息堆积. 二 : 日志异常解决导致消息堆积 线上kafka消费端日志异常,频繁打印错误日志,服务器磁盘一天就满了,此时其他服务无法正常工作.报错如 ...

  6. kafka 消费者消息确认_Kafka整体架构图解

    Java识堂,一个高原创,高收藏,有干货的微信公众号,一起成长,一起进步,欢迎关注 1.概述 Apache Kafka最早是由LinkedIn开源出来的分布式消息系统,现在是Apache旗下的一个子项 ...

  7. kafka消息堆积且CPU过高代码优化

    kafka消息堆积且CPU过高代码优化 直接部署已有的代码程序到线上服务器,发现CPU立马升高500%左右,立马停掉服务并看源代码排查问题,翻看代码,发现通过多线程消费 kafka消息,根据对多线程的 ...

  8. Redis、Kafka 和 Pulsar 消息队列对比

    点击关注公众号,Java干货及时送达 导语 | 市面上有非常多的消息中间件,rabbitMQ.kafka.rocketMQ.pulsar. redis等等,多得令人眼花缭乱.它们到底有什么异同,你应该 ...

  9. 消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?...

    大家好,我是 yes. 最近我一直扎在消息队列实现细节之中无法自拔,已经写了 3 篇Kafka源码分析,还剩很多没肝完.之前还存着RocketMQ源码分析还没整理.今儿暂时先跳出来盘一盘大方向上的消息 ...

最新文章

  1. Scrum 学习笔记
  2. fiddler下如何将HTTPS转换成HTTP
  3. 220V电容启动交流电机
  4. SQLite基本操作
  5. RAC常见命令检查状态
  6. 一起学nRF51xx 7 -  spi
  7. Python机器视觉编程常用数据结构与示例
  8. android 官方说明文档,Android官方文档翻译-Accessibility
  9. Linux NULL定义
  10. c# 小程序支付后台示例_C中的#if指令示例| C预处理程序
  11. go使用互斥锁实现协程同步
  12. mysql入门到跑路_MySQL 24小时入门笔记(3),插入和删除,删库到跑路
  13. 190413每日一句
  14. inode客户端linux 怎样运行,H3C_iNode智能客户端安装指导(Linux)
  15. Apache CXF 框架结构和基本原理
  16. 电销机器人百度百科_晓芯智能电话机器人百度百科
  17. 基于java的cad_基于JavaCAD架构的IP知识产权保护
  18. Java - 计算两个经纬度之间的直线距离
  19. 万能乘法速算法大全_小学数学各年级知识点和重点、难点大全,复习必备提纲!...
  20. op07数据手册分析

热门文章

  1. Xamarin.Forms Shell基础教程(1)
  2. Xamarin Anroid App访问网站失败
  3. Beaglebone Black教程Beaglebone Black的引脚分配
  4. idea查看ruby代码_Ruby实现命令行中查看函数源码的方法
  5. Matlab在ubuntu上运行速度,ubuntu环境下VLFeat在MATLAB上的运行
  6. angular使用什么样的样式_Angular 样式使用注意事项
  7. android布局优化方案,Android启动优化-布局优化
  8. hibernate jar包_源码分析 | 咋嘞?你的IDEA过期了吧!加个Jar包就破解了为什么?
  9. 大数据产品开发流程规范_大数据技术思想入门(三):分布式文件存储的流程
  10. JStorm/Storm源码解读(二)--启动篇