通过分拆库存记录提升并发性

通过分拆库存记录提升并发性

在许多互联网业务中扣除库存操作往往是瓶颈点,例如电商的秒杀活动,派发优惠券等等.因为数据库单挑记录只能串行操作,所有的并发访问需要加排他锁进行访问.

在不向系统中引入其他组件的情况下可以通过将库存记录拆分为多条来提升并发性.基本方案如下.

  1. 数据库中为每个批次建立多条记录,拆分库存以降低竞争.

  2. 应用服务器在第一个访问发起时,初始化批次库存记录数组.

    01234…
    库存记录1_ID库存记录2_ID库存记录3_ID库存记录4_ID库存记录5_ID…
  3. 对每一个派发请求使用轮询算法从上面的数组中取出库存记录 id(需要加读锁), 扣该记录的库存数量.

  4. 如果扣减失败,则尝试获取写锁,获取成功后重新尝试从3的操作,如果还是失败,将扣减失败的元素删除.

  5. 需要根据数组中剩余的元素数量,控制并发扣减操作数量.假设单条记录可以承担的并发更新量是100,并发令牌数量是100*剩余记录数.

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值