电商项目高并发下库存处理redisson
最近在做小程序商城的时候,由于活动模式采用的是先预热加入购物车,提交订单时做库存扣减。在促销开始时客户开始大量提交订单,活动内容为10件2.5折。顾客购物车商品重合度较高。且并发量特别大(日PV破千万),原来的库存扣减采用的是数据库幂等模式:即 : 提交订单时先查询数据库库存。再做库存判断,满足条件时,采用sql:
update inventory set inventory_num=inventory_num-count where inventory_num>=count;
结果由于并发量太大,导致出现很严重的锁等待问题。提交订单速度极慢。
后经过研究,决定采用redisson 对库存做处理。
首先将每个sku的库存缓存进数据库,在客户提交订单的时候,获取redisson的连锁RedissonMultiLock,将客户整个购物车内的商品作为一个整体,获取到连锁 rLock。如果rLock锁定失败,则返回错误。提示客户当前提交订单人数过多,稍后重试。获取锁成功后,开始对购物车内商品库存做出验证。验证通过,则扣除redis库存。释放连锁。并且封装出库存变动的消息,通过MQ通知到系统,对数据库库存进行有序更新。
实践证明,该方法有效,提交订单效率大大提高。单小时销售额突破800W。
注意事项:
1、RedissonMultiLock 获取锁的原理
RedissonMultiLock 是由单个锁RLock组成的,单锁获取时的 key 要和sku库存缓存用的key区分开。RLock的原理是根据当前线程号和服务器的其他信息生成一个唯一的值。然后根据获取单锁时传入的key向redis内插入信息。在释放锁时会将该key的值清空。这样就可以获取到新锁。刚做的时候,由于对RLock理解不深,单锁获取的key和sku缓存库存的key重复了,出了很多问题。
2、数据库库存仍需更新
数据库库存更新时,采用MQ,将并发转换为异步处理,数据库完全没有问题
3、取消订单返还库存,要返还进redis 并且数据库库存仍采用MQ通知消息来更新
4、所有对redis内库存的操作,必须在获取到锁并且加锁成功的情况下进系
5、以上纯属个人观点,有不正确的地方欢迎批评指正。
电商项目高并发下库存处理redisson相关推荐
- 谷粒商城电商项目 高可用集群篇
更多视频,JAVA收徒 QQ:987115885谷粒商城电商项目 高可用集群篇339.k8s-简介.mp4340.k8s-架构原理&核心概念.mp4341.k8s-集群搭建-环境准备.mp43 ...
- 电商网站高并发下的数据安全
我们知道在多线程写入同一个文件的时候,会存现"线程安全"的问题(多个线程同时运行同一段代码,如果每次运行结果和单线程运行的结果是一样的,结果和预期相同,就是线程安全的).如果是My ...
- java 电商锁库存实现_电商项目扣减库存方案
阿里巴巴b2b电商算法实战电子商务 85.3元 包邮 (需用券) 去购买 > 各位小宝贝们,大家是不是在面试过程中经常被问到,你电商项目扣减库存时,到底是下单减库存呢?还是付款减库存? 那今天给 ...
- Java生鲜电商平台-高并发核心技术订单与库存实战
Java生鲜电商平台-高并发核心技术订单与库存实战 一. 问题 一件商品只有100个库存,现在有1000或者更多的用户来购买,每个用户计划同时购买1个到几个不等商品. 如何保证库存在高并发的场景下是安 ...
- 400集高并发分布式超级电商项目实战
带走一盏渔火 让他温暖我的双眼 留下一段真情 让它停泊在枫桥边 久违的你 一定保存着那套网盘 许多年以后 躺在网盘里的视频 依然尘封未动 涛声依旧不见当初的夜晚 今天的你我 怎样重复昨天的故事 涛哥说 ...
- ActiveMQ+Redis+Dubbo+SpringMVC+Mybatis高并发高集群分布式电商项目视频课程(免费不加密)
ActiveMQ+Redis+FastDFS+Dubbo+Nginx+SpringMVC+Mybatis高并发高集群分布式电商项目视频课程 分布式实战项目1.mp4 分布式实战项目2.mp4 分布式实 ...
- 如何清晰、高质量的给面试官介绍自己的电商项目
面试有两点:1.技术过硬.2.能说会道 如果自己的技术还过的去,但是表述的不尽人意,其实是吃了很大亏的,下面我来介绍一个大神的面试过程: 面试官:请介绍一下你的电商项目. 大神:该商城是一个综合性的B ...
- 简历里写了电商项目 ,面试的时候怎么回答
商项目里的技术特点? ①技术更新较快:根据市场的需求,不断迭代更新. ②技术涉及面广:除了 PHP,还会用到 Python,GO 等其他的一些语言:数据库中 MySQL,nosql 是最频繁使用的(当 ...
- 项目是采用目前比较流行的 SpringBoot/SpringCloudAlibaba构建新零售微服务电商项目
简介: 技术架构 项目是采用目前比较流行的 SpringBoot/SpringCloudAlibaba构建新零售微服务电商项目,从项目中台架构技术选型.模块设计.基础设施的构建.分布式解决方 案.互联 ...
- 面试专题-电商项目面试篇
找工作面试的过程中,项目将会是整个流程的核心灵魂,也是能在面试中能让面试官尽快认同你的一个强有力的依据,所以在面试中把电商项目清晰的表述出来是极为关键的. 1.说说你最近做的这个项目的背景,简单的介绍 ...
最新文章
- 利用vagrant快速搭建rails开发环境
- 中国联通通用服务器集中采购项目,中国联通启动通用服务器集采:预采购12.4万台...
- 通过html文件生成PDF文件
- 学生上课睡觉班主任怎么处理_班主任案例:学生上课睡觉应对策略
- 苏宁大数据怎么运营_数据驱动经营 苏宁大数据用户标签入选2019TOP100全球软件案例...
- MySQL 常用运算符
- cesium米转换经纬度_cesium 常见坐标系及坐标转换(工具篇)
- 总结几种常用的安全算法
- 会“聆听”用户,用户反馈设计
- Java Web学习总结(40)——JSP中的Application对象和Session对象常用方法详解
- 硬盘检测神器-HD Tune Pro/Hard Disk Sentinel
- 模电课程设计_函数发生器
- jQuery从上手到飞天
- ToolBar修改返回按钮图标,CollapsingToolbarLayout修改文字居中
- 根据火车的出发时间和到达时间,编写程序计算整个旅途所用的时间。比如G198次列车从青岛站出发时间为16:00,到达北京南站的时间为20:40,则整个旅途所用时间为04:40。
- 任正非圣诞发表文章:我在生活所迫时创立华为
- 小程序获取当前进页面的来源
- 回天转债,莱克转债上市价格预测
- 通行时间可调的两路口交通灯设计实验(基于Multisim仿真)
- node php聊天室,利用socket.io实现多人聊天室(基于Nodejs)