老师,乐观锁是不是只是在单体项目中应用

来源:6-5 为什么超售现象无法避免?【分析MySQL和Redis超售的原因】

李熙文

2020-02-12

老师,您好。用乐观锁来实现给库存加锁必免超售或者库存负数,是不是只能在单体项目中这样做,如果是分布式环境(springcould)或者 集群的环境下,用乐观锁应该不行了吧。
例如:多个tomcat环境下,tomcat1 和tomcat2或者tomcat3同时查出version版本信息一致,
这样就造成了3个tomcat环境都可以减库存了。

写回答

1回答

神思者

2020-02-12

你这种积极思考的方式值得表扬。但是你假设的场景不会出现乐观锁失效的。比方说三个Tomcat都在查询库存,并且扣减库存。虽然数据库可以并发开启事务,但是提交事务是逐一执行的。当有一个java程序提交完事务,版本号更新之后,其他的java程序提交事务,都会出现异常,所以乐观锁依然有效。你抓住事务串行执行这个核心思想,问题就迎刃而解了

1
1
李熙文
非常感谢!
2020-02-13
共1条回复

Java工程师岗 应届毕业生春招和秋招项目面试课

如何在项目面试中让面试官“眼前一亮”,“面试真经”双手奉上!

719 学习 · 222 问题

查看课程