记一次线上问题 → 偶尔的热情真的难顶呀!

这篇具有很好参考价值的文章主要介绍了记一次线上问题 → 偶尔的热情真的难顶呀!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

开心一刻

  昨晚和媳妇坐在沙发上刷视频

  我用手肘轻轻推了推媳妇:你看这渣男,玩完女的都不娶人家

  媳妇:哎哟我天,哎呀妈,我这也没好哪去呀

  我疑惑的看向媳妇:啥意思啊

  媳妇看向自己的手机:啥意思啊,特么有些人,娶完了也不玩呀

记一次线上问题 → 偶尔的热情真的难顶呀!

背景介绍

  我负责的系统需要同步上游系统的数据

  同步机制分两步

  1、上游系统数据变动了,会下发消息,通知下游系统:我这边数据更新了,你们爱咋办咋办啊

记一次线上问题 → 偶尔的热情真的难顶呀!

  2、下游系统收到消息后,会调上游系统提供的数据查询接口:请给我最新的数据

记一次线上问题 → 偶尔的热情真的难顶呀!

  你情我愿,没有强买强卖,简直就是天作之合!

问题复现

  我先模拟下两个系统,免得你们说我:光说不练假把式

  环境准备

  消息组件: RabbitMQ 3.9.11 

  数据库: MySQL 8.0.30 

  上游系统: spring-boot-front ,源码地址:spring-boot-front

  下游系统: spring-boot-after ,源码地址:spring-boot-after

  假设目前一致状态是:

记一次线上问题 → 偶尔的热情真的难顶呀!

   front 端将 张三 密码调整成 zhangsan1 

记一次线上问题 → 偶尔的热情真的难顶呀!

  我们来看下效果

记一次线上问题 → 偶尔的热情真的难顶呀!

   after 很快就成功同步了 张三 的密码 zhangsan1 

  一切有条不紊的进行着,平静的就像你的女神回复你的消息一样,简直是轮回!

  突然的热情

  当你以为一切尘埃落定,开始放下过往,准备面向未来的时候

  你的女神发来了一个消息

  此刻的你无比纠结,是继续舔还是果断断?

  我们来模拟下她突然的消息

  调整下 front 的代码

记一次线上问题 → 偶尔的热情真的难顶呀!

  在发消息之后睡眠 100 毫秒

  将 李四 的密码调整成 lisi111 

记一次线上问题 → 偶尔的热情真的难顶呀!

  李四的密码竟然没同步成功!

  打开女神的消息一看,特喵的竟然不是关心,是借钱!

记一次线上问题 → 偶尔的热情真的难顶呀!

问题修复

  已经有女神折磨你们了,我就不折磨你们了

   front 的这段代码

记一次线上问题 → 偶尔的热情真的难顶呀!

  是有问题的!

记一次线上问题 → 偶尔的热情真的难顶呀!

  我给你们分析下

   front 事务未提交,消息就发给下游了

   after 收到消息后,查询 front 接口的时候, front 的事务若还未提交, front 又当如何应对?

  还能怎么应对,只能给旧数据了呗,是不是懂了?

记一次线上问题 → 偶尔的热情真的难顶呀!

  既然找到原因了,就很好处理了

  把所有她的联系方式都删了,问题就完美解决了

  我好像偏题了,回到主题,问题同样很好处理

  把消息发送从事务中拎出来就好了,也就是等事务提交后,再发消息

  或者直接把要同步的数据以消息的方式直接同步给下游系统,下游系统拿到消息直接更新数据,而不用再调用上游系统的接口来查询数据(但要考虑消息体的大小)

  通篇看下来是不是很精彩,此处应该有掌声

记一次线上问题 → 偶尔的热情真的难顶呀!

总结

  1、日志很重要,很重要,很重要!

    楼主这次排查这个问题还是很快的,因为日志打印的比较全,根据日志很快就能定位到接口查到的是旧数据

    这就好比借钱:一定保留转账记录,现金的话要打借条

  2、圈子不同,不要强融

    好好的消息发送,为什么非要写到事务中?

    事务尽量缩小文章来源地址https://www.toymoban.com/news/detail-777074.html

到了这里,关于记一次线上问题 → 偶尔的热情真的难顶呀!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记一次线上BUG排查过程

    1. 线上遇到一个非常奇怪的bug,为一个用户分配业务线类型后,该用户登录时,提示502,但其它的用户登录完全是正常的 2. 问题现象 3. 排查思路 先去看线上日志,看是否有error,但日志里边这个接口200正常返回 本地debug,也复现一样问题,在分配角色类型超过22个总数时就报

    2024年02月09日
    浏览(53)
  • 记一次线上kafka造成的事故

    背景:所有的原始数据均存储在mysql,mysql会通过binlog将数据同步至kafka消息队列,但是有人将mysql中的数据进行删除(大概有2、3年的数据),被删除的数据也通过binlog被同步至消息队列里导致大量消息积压,且该消息队列只有3个分区,最多3个线程消费,消费方即使过滤也远

    2024年02月13日
    浏览(46)
  • 得物-Golang-记一次线上服务的内存泄露排查

    在风和日丽的一天,本人正看着需求、敲着代码,展望美好的未来。突然收到一条内存使用率过高的告警。 告警的这个项目,老代码是python的,最近一直在go化。随着go化率不断上升,发现内存的RSS使用率越飙越高。最终达到容器内存限制后,进程会自动重启。RSS如下图所示

    2024年02月04日
    浏览(62)
  • 记一次线上mysql出错:由于docker自动拉取最新mysql镜像导致mysql容器无法启动

    我随便写写,你们随便看看 环境背景:在docker中部署mysql镜像,通过portainer管理docker容器 简单说下过程:docker里mysql的时区没有设置,导致相差8小时,通过增加TZ=Asiz/Shanghai环境变量,然后重启容器来生效。结果重启的时候始终无法启动起来,后来发现是自动升级了mysql镜像版

    2024年02月07日
    浏览(56)
  • 记一次线上bug排查-----SpringCloud Gateway组件 请求头accept-encoding导致响应结果乱码

           基于公司的业务需求,在SpringCloud Gateway组件的基础上,写了一个转发服务,测试开发阶段运行正常,并实现初步使用。但三个月后,PostMan请求接口,返回异常,经排查,从日志中获取到转发响应的结果为乱码:        跟踪日志: 转发到目标接口,响应结果已乱码

    2024年02月04日
    浏览(52)
  • 通过一次线上问题,讲下Ribbon重试机制

    前段时间,产品经理在线上验证产品功能的时候,发现某个功能不符合需求预期,后来测试验证发现是服务端的一个接口大概率偶现超时,前端做了兜底处理,所以对线上用户么有太大影响。 由于服务端的接口偶现超时,并且网关设置了30s超时熔断,所以前端请求就直接报错

    2024年02月15日
    浏览(61)
  • 记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析

    昨晚和一个朋友聊天 我:处对象吗,咱俩试试? 朋友:我有对象 我:我不信,有对象不公开? 朋友:不好公开,我当的小三 程序在生产环境稳定的跑着 直到有一天,公司执行组件漏洞扫描,有漏洞的  jar  要进行升级修复 然后我就按着扫描报告将有漏洞的  jar  修复到指

    2024年02月09日
    浏览(57)
  • 一次线上mysql 调优 ,join 的调优,索引优化(Block Nested Loop)

    原因: 某接口调用十分缓慢,通过 Explain 发现是SQL问题 可以看到,在Join连接时,出现了BNL查询,BNL出现是因为,JOIN连接时 dr表也就是 domian_redemption 被驱动的表上没出现可用的索引。 个人解决方法: 在对应的连接字段上,既dr的orderCode字段,内表加上索引,再次执行Explai

    2024年02月05日
    浏览(51)
  • 记一次死锁问题

    最近在做一个需求,碰到了死锁的问题,记录下解决问题的过程 这个需求要改动一个接口,我这边称为A接口,原先的逻辑是A接口内部会调用c方法,c方法是一个dubbo方法, 现在需要再A接口里添加调用B方法,b方法是本地调用。 A接口的入参是某个商品的编码,拿到这个商品编

    2023年04月26日
    浏览(54)
  • 记一次重大的问题解决

    我们是需要的操作两个git仓库的的三个分支(此处第一个仓库简称:A(负责程序的第一层进入),第二个简称B(负责业务的执行)) 大致就是A的代码引用了B,B的代码引用了A,互为对方的jar包。 问题(部署到测试域之后): 1:请求打进来之后,有时候进,有时候不进,有

    2024年02月21日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包