数据库
可爱徐叔叔
给硬核之王一点威胁好吗
展开
-
由并发扣款如何保证数据一致性引起的ABA问题的思考
起因是看了公众号架构师之路 推送的一篇文章:并发扣款,如何保证数据的一致性? 1. 场景: 用户购买商品,对余额进行查询和修改,如果余额大于商品价格,购买商品并修改余额,单机或者无并发情况下,这个步骤没有任何问题;但分布式环境下,不同站点实例的多个业务操作同一个用户进行并发扣款(虽然我也不知道怎么会有这种场景,用户怎么可能在同一时间买多个商品),这样进程内互斥锁肯定无法起作用,最终导致数据不一致。...原创 2019-08-30 18:05:37 · 1032 阅读 · 0 评论 -
由并发扣款如何保证数据一致性引起的幂等性问题的思考
上一篇文章:由并发扣款如何保证数据一致性引起的ABA问题的思考 有遗漏场景,公众号 架构师之路 后续出了文章讨论了这个问题,这里附上。 1. 回顾 在上文并发扣款中的解决方案是采用CAS乐观锁,加入版本号控制。采用 select&set 方式进行余额写回: update t_account set money=#{new_money} , version=#{new_version} wh...原创 2019-09-06 11:06:50 · 526 阅读 · 0 评论 -
缓存与数据库双写一致性问题
1. 场景 缓存架构设计,可以提高系统的读性能,在缓存建立key-value的键值对,减少数据库的压力,通常用于读多写少的场景,流程一般如下: 用户首先查询缓存(如Redis)是否有相关数据; 如果有相关数据,缓存命中,返回查询结果; 如果没有相关数据,则查询数据库,将结果放入缓存,同时返回结果; 2. 缓存更新策略 如果有数据更新,是先操作缓存,还是先操作数据库,这里涉及时序问题;而对于...原创 2019-09-10 11:31:22 · 437 阅读 · 0 评论