老师,乐观锁是不是只是在单体项目中应用
来源:6-5 为什么超售现象无法避免?【分析MySQL和Redis超售的原因】

李熙文
2020-02-12
老师,您好。用乐观锁来实现给库存加锁必免超售或者库存负数,是不是只能在单体项目中这样做,如果是分布式环境(springcould)或者 集群的环境下,用乐观锁应该不行了吧。
例如:多个tomcat环境下,tomcat1 和tomcat2或者tomcat3同时查出version版本信息一致,
这样就造成了3个tomcat环境都可以减库存了。
写回答
1回答
-
你这种积极思考的方式值得表扬。但是你假设的场景不会出现乐观锁失效的。比方说三个Tomcat都在查询库存,并且扣减库存。虽然数据库可以并发开启事务,但是提交事务是逐一执行的。当有一个java程序提交完事务,版本号更新之后,其他的java程序提交事务,都会出现异常,所以乐观锁依然有效。你抓住事务串行执行这个核心思想,问题就迎刃而解了
112020-02-13
相似问题