生产故障-Kafka分区不平衡

2021-02-17  本文已影响0人  天不生我小金

前言:该博客主要是记录自己学习的过程,方便以后查看,当然也希望能够帮到大家。

生产故障-Kafka分区不平衡

故障描述:有个别服务的数据有部分没有上报,导致推荐页展示过期已删除的文章,业务端重新上报时,发现上报的数据迟迟没有送到指定服务,经过观察日志发现,kakfa的消息延迟了7个小时左右

定位原因:

  1. 指定服务为单节点部署,所在的机器负载基本是满的

处理过程:

  1. 将该服务改为多节点部署,发现只有一个节点能正常消费,其他节点都在空等待状态,定位出的原因为:该topic的分区只有一个,所以同一消费组,只能被一个节点进行消费
  2. 重建topic,改为12个分区后,再观察情况发现:每个分区的消息不平衡,有很多分区的消息数为0,经查验资料后发现: 如果key的值不为空,会根据key的值hash后分配到分区,也就是说相同的key,会分配到同一个分区上,最后去掉生产者的key得以解决

解决方案:

  1. 确保kafka分区的数量超过同消费组内节点的数量
  2. 不同业务的topic要隔离开来,不要互相干扰
  3. 对消息积压情况进行告警,比如大数据只能延迟 5 分钟,业务数据延迟控制在秒内
  4. kafka的key不为空时,会根据key hash后路由到分区,要对key的命名使用注意

后记:本次分享到此结束,本人水平有限,难免有错误或遗漏之处,望大家指正和谅解,欢迎评论留言。

上一篇下一篇

猜你喜欢

热点阅读