kafka消息积压出现的原因、危害及解决方案
在网上看了很多答案都不一样
问deepseek也感觉说的模棱两可
自己也没有太多实战经验,就在这胡写两笔吧 现在忙着找工作
迷茫的同时也不知道结果会怎么样 事情会顺利吗 工作之后就真的比读研要舒服吗?
赚的钱够不够在大城市生活,能不能再攒下来点?
现在畅享未来,未来再回首来看 也算有种跨越时空对话的感觉
也许日后真的工作遇到这个问题了再回头看这个帖子,会有种啼笑皆非的感觉?
言归正传
消息积压
一般来说就是消费者的消费能力赶不上生产者的生产速度
但是消费者的消费能力为什么不足?有可能是消费本来就耗时,也可能是代码有bug?或者在等待上下流服务到位? 业务层的原因或许有很多 不做讨论
那生产者为什么突然生产能力变强了?公司业务突然暴增?生产者大量重复生产?生产者那边有bug? 总的来说生产挤压算是比较复杂的问题 有可能不是kafka本身的问题
危害
那消息积压有什么危害呢?
1.最直接的危害,消息得不到及时的处理,产生延迟!一般来说消息可能都是一些异步的任务,要得到及时的处理,若是处理不了可能会有问题
2.磁盘文件增大,kafka 会按一定策略清理日志,但是若是产生挤压可能来不及清理吧磁盘拉爆
3.内存和gc压力大:PageCache占用过高
4.数据丢失风险:可能数据还没来得及消费就被清理了
解决方法
添加监控,消息挤压时及时处理,比如云厂家的各种监控
短期应急
1.限流 减少数据生产
2.提高拉取的阈值,一次多拉点数据 减少网络io
3.对于非核心业务不做处理
中长期处理
1.排除业务层问题,消费者或者生产者代码有没有bug
2.扩大分区,增加消费者,提高消费者能力 水平扩容
3.增加硬件设备
4.优化消费者消费逻辑,多线程消费
5.异步任务
感觉都是在纸上谈兵,不过也没有办法,应付应付面试吧