用数据库实现乐观锁,并用谷歌令牌桶算法RateLimiter实现限流
设计表时,表中有一个版本的字段,用id和版本号去控制商品的售卖。如果线程A拿到id为1的stock的version是0,正在执行updateStock方法,线程A会把version从0更改为1.线程B在线程A在执行的同时,也拿到了id为1的stock的version是0。但由于数据库事务的控制,同一时刻只有一个线程去执行更新的方法。线程A执行完后,id为1的stock的version已经为1,线程B去更新数据时发现id为1,version为0的stock已经找不到了,所以无法更新数据,只能重新查询i
原创
2021-12-30 15:47:36 ·
770 阅读 ·
1 评论