- 博客(4)
- 收藏
- 关注
原创 电商高并发库存(高频写)系统设计注意事项
查询商品库存设计:类似于商品查询系统,详细见前文。本文主要为避免库存超买超卖需要注意的事项1.启用缓存,查询库存(读缓存),缓存查不到再查数据库,判断可以扣减库存,更新数据库并更新缓存2.防止超买超卖,sql中where语句加上前值(不能预防aba问题),添加库存版本字段(性能有影响)3.上述防止超买超卖利用了数据库乐观锁的概念,性能并不好,且不友好,高并发场景下大量库存扣减失败并击穿到数据库,使用分布式锁提高性能4.加分布式写锁后进行库存扣减4.突发性热点商品下单(秒杀),高并发下单场
2022-02-20 00:49:48 363
原创 电商高并发商品库存(高频读)查询系统设计注意事项
商品流程:查询商品(读缓存)缓存查不到查数据库并写缓存1.并发场景下,sql语句where后带上前库存值(不完全保证原子性aba问题),或者启用库存版本号,初步保证库存扣减的原子性2.防止缓存击穿,商品缓存时间加上随机数或者使用读续命机制(异步线程)3.防止缓存穿透,对不存在的key缓存空值(防止ddos攻击或者运营误删除热点商品),跟加一级使用布隆过滤器(推荐谷歌guava)4.突发性热点商品查询(热门主播上架带过),并发同时请求到缓存取不到,击穿到数据库,启用双重检查d.
2022-02-19 23:39:37 740
原创 乐观锁与悲观锁
version乐观锁1 操作员 A 此时将其读出( version=1 ),并从其帐户余额中扣除 $50( $100-$50 )。2 在操作员 A 操作的过程中,操作员B 也读入此用户信息( version=1 ),并从其帐户余额中扣除 $20 ( $100-$20 )。3 操作员 A 完成了修改工作,将数据版本号加一( version=2 ),连同帐户扣除后余额( balan
2014-04-24 13:48:39 429
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人