当前位置: 首页 > news >正文

锁和事务谁在外层

锁和事务谁在外层

最近发布系统出现一个问题,发布单审核时,子发布单中的数据出现重复,经过排查,是因为锁和事务的顺序问题引起的。
引起问题的伪代码入下
在这里插入图片描述
这段代码可能会出现,多线程访问时,
线程1进入方法,开启了事务A,获取了分布式锁,执行完业务逻辑后,释放了锁,然后发钉钉通知,最后提交事务
在线程1释放锁和提交事务A这段时间内,有可能会有其他线程进入该方法,执行业务逻辑并提交事务
所以可能会出现出乎意料的情况。

在分布式系统中同时使用‌事务和分布式锁时‌,‌建议将事务放在内层(方法内部),分布式锁放在外层(方法外部)‌。这种组织方式可以确保数据的一致性和并发安全

核心原则‌:

‌事务管理优先‌:将事务控制放在方法内部(如Service层),确保数据操作在事务保护下执行。
‌分布式锁后置‌:在调用事务方法之前先获取分布式锁,并在方法结束后释放锁。这样即使事务因并发未提交完成,锁仍保持有效状态,避免并发修改共享资源。
像钉钉通知这类可能耗时的操作也最好不要放在事务中

相关文章:

  • c++进阶——多态
  • word文档插入公式后行距变大怎么办?
  • 一文了解无人机系统
  • Ubuntu18.04安装IntelliJ IDEA2025步骤
  • 互容是什么意思?
  • 数据访问模式详解:在线访问、DAO、DTO、离线存储与ORM
  • 碳基芯片:半导体技术的下一个突破点?
  • 数据要素与居民就业的深层联结 数字化转型下的劳动力市场变革
  • 铭依眼科亮相“中华眼科菁英“.创新思路赋能近视矫正新高度
  • 12分区 3号机 送风分区送风 会远程启,不会远停
  • 从技术走向管理:带来哪些角色转变与挑战
  • 第八章:Error Handling
  • IEC 61850标准协议解读 2.基于Java的MMS实现
  • 1.7无穷级数
  • 使用jasypt加密配置文件信息
  • 如何解决 Linux 文件系统挂载失败的问题
  • 人物5_My roommate
  • torch.nn.Parameter 与 torch.Tensor
  • 浅谈链表的优化技巧
  • 如何修复卡在恢复模式下的 iPhone:简短指南
  • 北大深圳研究生院成立科学智能学院:培养交叉复合型人才
  • 中办、国办印发《安全生产考核巡查办法》
  • 建发股份:将于5月6日召开股东大会,审议提名林茂等为公司新一届董事等议案
  • 人社部:将会同更多部门分行业、分领域制定专项培训计划
  • 加拿大温哥华发生驾车冲撞人群事件,加拿大总理发声
  • 苏迪曼杯即将在厦门打响,国羽向创纪录的14冠进军