交易性能优化技术之缓存库存
压测:
下单链接:/order/creatororder?token=XXXXXXXX
post参数:itemId=6、amount=1、promoId=1
线程数=200、5秒内发起、循环20次
类别 | TPS | 响应时间(毫秒) | CPU% |
---|---|---|---|
无优化(java) | 282 | 500 | 75% |
无优化(数据库) | 336 | 363 | 6% |
线程数=1000、5秒内发起、循环20次
类别 | TPS | 响应时间(毫秒) | CPU% |
---|---|---|---|
无优化(数据库) | 420 | 1649 | 10% |
7-2交易验证优化
用户风控策略优化:策略缓存模型化
将itemmodel和usermodel存入redis
线程数=1000、5秒内发起、循环20次
类别 | TPS | 响应时间(毫秒) | CPU% |
---|---|---|---|
优化后(数据库) | 1200 | 600 | 10% |
活动校验策略优化:引入活动发布流程、模型缓存化、紧急下线能力
给item_id加上唯一索引
库存行锁优化:
1、扣减库存缓存化
方案一:
(1)活动发布同步库存进缓存
(2)下单交易减缓存库存
问题:
(1)数据库记录不一致
方案二:
(1)活动发布同步库存进缓存
(2)下单交易减缓存库存
(3)异步消息扣减数据库内缓存
2、异步同步数据库
问题:
(1)异步消息发送失败
(2)扣减操作执行失败
(3)下单失败无法正确回补库存
3、库存数据库最终保存一致
rocketMQ