当前位置:首页 > 科技  > 软件

后端|一个分布式锁「失效」的案例分析

来源: 责编: 时间:2023-09-22 20:12:59 546观看
导读小猿最近很苦恼:明明加了分布式锁,为什么并发还是会出问题呢?故事从接到需求开始说起。接到需求小猿前一阵接到一个小任务,里面有一个功能对应的场景如下:封装一个对账户余额进行加减操作的方法;所属服务部署了多个实例;这个

小猿最近很苦恼:明明加了分布式锁,为什么并发还是会出问题呢?fSw28资讯网——每日最新资讯28at.com

故事从接到需求开始说起。fSw28资讯网——每日最新资讯28at.com

fSw28资讯网——每日最新资讯28at.com

但实际的时序:fSw28资讯网——每日最新资讯28at.com

fSw28资讯网——每日最新资讯28at.com

也就是说期望是这样的执行顺序:fSw28资讯网——每日最新资讯28at.com

fSw28资讯网——每日最新资讯28at.com

但实际的执行顺序:fSw28资讯网——每日最新资讯28at.com

fSw28资讯网——每日最新资讯28at.com

分布式锁和事务,都是通过 AOP 来实现的,而 AOP 的执行顺序是根据切面的优先级来的,而小猿的分布式锁切面的优先级比事务切面的优先级低,所以就出现了上面的时序问题。fSw28资讯网——每日最新资讯28at.com

于是通过给分布式锁的切面指定 Order 的方式,让它的优先级高于事务切面(注:Order 值越小,执行优先级越高),验证完没问题后,就又高高兴兴地更新完版本,修复好历史问题数据后回家了。fSw28资讯网——每日最新资讯28at.com

还有问题

谁知道第二天一早,还是有极少量的用户反馈账户余额不对的问题。fSw28资讯网——每日最新资讯28at.com

这次小猿就有点懵了,为什么还会出现这种情况呢?fSw28资讯网——每日最新资讯28at.com

经过一番艰苦卓绝的排查,终于找到了问题所在:事务嵌套。fSw28资讯网——每日最新资讯28at.com

从前文中的示例代码中可以看到,小猿的方法上加了事务注解 @Transactional(rollbackFor = Exception.class) 里,没有指定事务的传播行为,默认是 Propagation.REQUIRED,也就是说如果当前没有事务,就新建一个事务;如果当前有事务,就加入到当前事务中。fSw28资讯网——每日最新资讯28at.com

小猿自己写的代码里没有在事务方法里嵌套调用这个方法的情况,但是同事写的代码里有,这样就会导致前文的时序问题再次发生。fSw28资讯网——每日最新资讯28at.com

找到问题就好办了,小猿将自己的方法上的事务传播行为改成了 Propagation.REQUIRES_NEW,也就是说如果当前没有事务,就新建一个事务;如果当前有事务,就将当前事务挂起,新建一个事务。fSw28资讯网——每日最新资讯28at.com

这次更新完版本后,小猿就再也没有收到用户反馈了,终于可以安心回家睡觉了。fSw28资讯网——每日最新资讯28at.com

小结

在日常的开发过程中,如果涉及到并发和事务,一定要多留几个心眼,考虑周全,确认以下要点是否都正确实现:fSw28资讯网——每日最新资讯28at.com

  • 是否做了必要的并发控制?
  • 事务的传播行为是否符合预期?
  • AOP 的执行顺序是否符合预期?
  • 对并发的场景是否做了充分的测试?
  • 对于比较关键的操作,是否打印了必要的日志?

本文链接:http://www.28at.com/showinfo-26-11218-0.html后端|一个分布式锁「失效」的案例分析

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 【Django入门】第一个Django项目

下一篇: 玩转Python属性和方法,成为高手不再难!

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    ©自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 新电商三兄弟,“抖快红”成团!

    来源:价值研究所作 者:Hernanderz 随着内容电商的概念兴起,抖音、快手、小红书组成的“新电商三兄弟”成为业内一股不可忽视的势力,给阿里、京东、拼多多带去了巨大压
  • 消费结构调整丨巨头低价博弈,拼多多还卷得动吗?

    来源:征探财经作者:陈香羽随着流量红利的退潮,电商的存量博弈越来越明显。曾经主攻中高端与品质的淘宝天猫、京东重拾“低价”口号。而过去与他们错位竞争的拼多多,靠
  • 2299元起!iQOO Pad明晚首销:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其最大的卖点
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 上海举办人工智能大会活动,建设人工智能新高地

    人工智能大会在上海浦江两岸隆重拉开帷幕,人工智能新技术、新产品、新应用、新理念集中亮相。8月30日晚,作为大会的特色活动之一的上海人工智能发展盛典人工
Top