事故背景:

  我们公司与合作方公司有个消息同步的需求,合作方是消息生产者,我们是消息消费者,他们通过kafka给我们推送消息,我们实时接收,然后进行后续业务处理。昨天上午,发现他们推送过来的广场门店信息我们都没有消费,导致我们系统和他们系统数据不一致,从而导致无法提单,无法出报表(报表有误)等各种问题

排查过程:

(1)因为coco身体不适,上午请假去医院了,所以这个问题就转给我们team的专门运维的同事了,电话大概给他说明了代码路径,可惜,半天下来仍然无果,看着微信群里他发的消息,我有点抓狂,根本没有找到点上,半天了没查出原因,我们业务端也顶着压力,一个劲儿地给我打电话。

(2)中午12:30点,coco回到公司,立马开电脑开始排查,让他们重新推送消息,查看日志,发现我们根本没有消费到。初步判断,应该不是我们客户端的问题,初步定位原因:a.网络问题;b.网络丢包;c.生产者生产机制有问题,实际没有推送过来。

(3)因为之前一直是好好的,近期这个需求也没有做过任何改动,网络也是通的,感觉可能不是网络的问题,但是也要排查,因为这个已经是去年年初的需求了,原熟悉这块业务的人早已离职,所以排查起来有点慢。我们公司在合作公司面前又没多大话语权,每次有问题都是直接甩锅给我们,每次排查出来都是他们的问题。这次,我让他们先排查自身问题,他们依然说,不是他们的原因等等。

(4)网络排查:根据代码,查出我们连接生产者zookeeper的集群地址。然后我找到我们应用所在主机IP。ping了下是通的。但是telnet端口的时候明显就不通了,很明显的网络问题啊。截图给对方,他们依然不认,说自己测试都是ok的,coco此时心里真的是一万个mmp啊,然而,脸上还要笑嘻嘻……为啥之前一直通的,突然就有问题了呢,让对方研发问他们那边最近有没有做过网络调整,那哥们直接说没有……涉及公司与公司间的网络权限,肯定要走流程去申请啦。我就去找我们这边网络组的老大,把事故简要地说明了下,他说,合作方公司前几天有下线过一批主机呀,我联系他们,包不包含这几台,此刻,我的心里大石头终于放下了,找对人了。

ping的结果:

telnet的结果:

(5)后来,在这个leader、我们项目经理的协调下,找了对方公司的网管,确认是他们近期做了网络调整导致的。然后,对方公司对接人去提了网络申请,该问题算是初步得到了解决,下午2:40左右,网络给打开了,但是我们依然没有收到消息,他们又重新推送了一条,依然没有接收到。

(6)分析我们消费端的代码,处理业务bean上实现的是 InitializingBean类,在初始化bean的时候都会执行该方法。所以,我们这边的应用需要重启才行。于是,我又申请重启应用,因为是核心应用,只能等到晚上才能重启。

(7)晚上8点左右,应用重启了,可是,依然没有消费到消息,理论上他们生产的消息没有消费,我们是直接可以消费的啊,这个还需要后续查看。我又联系他们重新推送了几条数据,我这边可以消费了。然后他们全量推送了下,该问题得到初步解决。

(8)为什么积压的消息我们消费不到,仍在研究中。

(9)对于此类初始化时候执行的方法,如果中途有类似网络问题,该如何处理?

结论:

对于生产正在用的接口,一直好好的,突然出问题,如果是全量问题,首先要排查网络问题,如果是部分数据有问题,则要考虑是否是网络丢包,是否是消息丢失。

复盘:

其实,这个问题真的从根源上解决了吗?并没有,根据生产日志,查询得知,自6.5日开始,就没有消费过消息了,说明6.5号就有问题了啊。我们系统也没有报异常,没有通知到负责人,为什么消费者连不上生产者zookeeper主机的时候,仍不报异常呢,这个coco还在排查。

  ConsumerConfig conf = new ConsumerConfig(props);
//连不通但是没有报异常
ConsumerConnector consumer = kafka.consumer.Consumer.createJavaConsumerConnector(conf);

 代码:

记一次生产kafka消息消费的事故的更多相关文章

  1. 在线elasticsearch集群批量写入变慢,导致kafka消息消费延迟

    写入报错如些: -- ::24.166 [elasticsearch[_client_][listener][T#1]] INFO com.mobanker.framework.es.Elastics ...

  2. RockerMQ消息消费、重试

    消息中间件—RocketMQ消息消费(一) 消息中间件—RocketMQ消息消费(二)(push模式实现) 消息中间件—RocketMQ消息消费(三)(消息消费重试) MQ中Pull和Push的两种消 ...

  3. Kafka无法消费?!我的分布式消息服务Kafka却稳如泰山!

    在一个月黑风高的夜晚,突然收到现网生产环境Kafka消息积压的告警,梦中惊醒啊,马上起来排查日志. 问题现象:消费请求卡死在查找Coordinator Coordinator为何物?Coordinat ...

  4. 实际业务处理 Kafka 消息丢失、重复消费和顺序消费的问题

    关于 Kafka 消息丢失.重复消费和顺序消费的问题 消息丢失,消息重复消费,消息顺序消费等问题是我们使用 MQ 时不得不考虑的一个问题,下面我结合实际的业务来和你分享一下解决方案. 消息丢失问题 比 ...

  5. Spring Cloud Stream如何消费自己生产的消息?

    在上一篇<Spring Cloud Stream如何处理消息重复消费>中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题.本文将继续说说在另外一个被经常问到的问 ...

  6. kafka消息的分发与消费

    关于 Topic 和 Partition: Topic: 在 kafka 中,topic 是一个存储消息的逻辑概念,可以认为是一个消息集合.每条消息发送到 kafka 集群的消息都有一个类别.物理上来 ...

  7. rabbitMQ应用,laravel生产广播消息,springboot消费消息

    最近做一个新需求,用户发布了动态,前台需要查询,为了用户读取信息响应速度更快(MySQL很难实现或者说实现起来很慢),所以在用户动态发布成功后,利用消息机制异步构建 redis缓存 和 elastic ...

  8. Spring Cloud Stream如何消费自己生产的消息

    在上一篇<Spring Cloud Stream如何处理消息重复消费>中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题.本文将继续说说在另外一个被经常问到的问 ...

  9. 公司内部一次关于kafka消息队列消费积压故障复盘分享

    背景现象 1.20晚上8点业务线开始切换LBS相关流量,在之后的1个小时时间内,积压量呈上升趋势,一路到达50W左右,第二天的图没贴出具体是50W数字,以下是第一天晚上的贴图部分. 现象一: 现象二: ...

随机推荐

  1. sql server的for xml path与变通的行转列

    SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...

  2. Spark Core知识点复习-1

    Day1111 Spark任务调度 Spark几个重要组件 Spark Core RDD的概念和特性 生成RDD的两种类型 RDD算子的两种类型 算子练习 分区 RDD的依赖关系 DAG:有向无环图 ...

  3. Java : JavaWeb和Tomcat相关

    部署:1.直接把项目移动到webapps文件夹下, 用文件夹名访问(如果ROOT文件夹可以直接访问)2.也可以把war包放到webapps文件夹下, tomcat自动解压,但是删除war包必须要停止t ...

  4. mysql时间戳转日期

    -- 日期字符串转时间戳,10位,数据库存储的是13位 select UNIX_TIMESTAMP('2019-09-01 00:00:00'); -- 时间戳转日期 ,'%Y-%m-%d %H:%i ...

  5. 我得新博客上线了采用Vue+Layui的结合开发,后台采用asp.net mvc

    地址:www.zswblog.xyz 写完这个博客项目我真的很开心! 希望博客园的大佬们能去看看,如果可以希望帮我在Layui的年度案例点一个赞,谢谢! 地址:https://fly.layui.co ...

  6. dataGridView1_RowEnter事件与dataGridView1.CurrentRow一起使用错误问题

    在使用DataGridView想在选项行发生改变时获得当前行的,于是使用了RowEnter 但是获得数据却不对,总是获得前一个被选中的行,比如第一次选中谭经理,再选中王海霞,数据得到却是谭经理的 从事 ...

  7. Linq 用得太随意导致的性能问题一则

    问题场景 有一个很多条数据的数据库(数据源),在其中找出指定的项,这些项的 ID 位于 给定的列表中,如 TargetList 中. private readonly IDictionary<s ...

  8. codeforces467-A水题

    题目链接:http://codeforces.com/problemset/problem/467/A A. George and Accommodation time limit per test ...

  9. echarts 更改tooltip提示框CSS样式

    最近 做项目,用过echarts,发现tooltip提示z-index级别很高,想更改下,看了下文档:https://www.echartsjs.com/zh/option.html#tooltip. ...

  10. 25. Apache Shiro Java反序列化漏洞

    前言: 最近在审核漏洞的时候,发现尽管Apache shiro这个反序列化漏洞爆出来好久了,但是由于漏洞特征不明显,并且shiro这个组件之前很少听说,导致大厂很多服务还存在shiro反序列化的漏洞, ...