一.交易性能瓶颈
1.找到下单时的URL

这里不知道为什么是localhost:8090 而视频教程是 miaoshaserver
解决:问题是本地文件的resources中的gethost.js一直没有生效 经处理后生效
2.加入消息体数据,进行压测

线程数为1
结果为

改为线程数200 5秒 循环20次

改为线程数1000 5秒 循环20次



二.交易验证优化
1.在ItemService.java添加方法
//验证item mode及promo mode缓存模型是否有效
ItemModel getItemByIdInCache(Integer id);
2.在ItemServiceImpl.java实现
@Autowired
private RedisTemplate redisTemplate;
@Override
public ItemModel getItemByIdInCache(Integer id) {
// 根据商品id去redis缓存中获取商品信息
ItemModel itemModel = (ItemModel) redisTemplate.opsForValue().get("item_validate_" + id);
// 如果商品信息为空,就去数据库中查询商品信息,并将商品信息存储中redis缓存中,并设置过期时间10分钟
if (itemModel == null) {
itemModel = this.getItemById(id);
redisTemplate.opsForValue().set("item_validate_" + id, itemModel);
// 设置redis缓存过期时间为10分钟
redisTemplate.expire("item_validate_" + id, 10, TimeUnit.MINUTES);
}
return itemModel;
}
3.在OrderServiceImpl.java中校验时替换状态,把从数据库拿变成去缓存中取
public OrderModel createOrder(Integer userId, Integer itemId,Integer promoId, Inte

本文探讨了电商秒杀场景下交易性能的瓶颈,并提出了两种活动缓存库存方案以优化性能。在优化过程中,通过在验证阶段使用缓存减少数据库查询,以及采用异步消息同步数据库库存,解决了高并发下的性能问题。同时,文章还介绍了 RocketMQ 的使用,用于实现异步消息处理。然而,实践中发现下单后商品页面库存更新存在延迟,可能与公网流量速度有关。
最低0.47元/天 解锁文章
482

被折叠的 条评论
为什么被折叠?



