高并发库存控制
来源:互联网 发布:win7x64精简优化版 编辑:程序博客网 时间:2024/05/02 01:04
如今,在电商行业,秒杀活动已经是家常便饭,面对这种高并发压力之下,又有什么办法来缓解这种压力呢?
秒杀就像过年回家的时候买火车票,需要遵守以下几个原则:
1.公平性,机会均等,遵守FIFO原则。
2.快速处理能力,增加售票窗口,增加售票渠道。
3.稳定性,适当的入口数量,保证售票厅内人满为患。
那么,在现实开发当中,怎么去实现呢?以下图为例:
1.有n个购票者守候在售票大厅外面,交通方便的肯定会挤在靠近入口的位置,通过入口的机会就越大.
好比秒杀时疯狂的购物者都在等待秒杀开始,大家都在刷新网页,带宽给力的肯定进去的胜算比较大.
2.我们设置了30个入口,因为我们没有更大的地方,因为现在地皮也比较贵,
那么,对应到秒杀,这个入口就是我们服务器同时处理并发处理能力大小,如果我们通过控制这30个入口的吞吐量,
那我们就可以有效的控制住服务器接受外来的压力,把强大的力量堵在第一个关口,保证服务器接受到的压力能够快速处理.
3.这30个入口我们看做一个管道(tube),假定每一个购票者给大概5分钟可以完成购票,那么超过5分钟后或者已经买到票,就会让出位置让后面的人进入售票大厅,当然这是理想化想法,但至少我们把压力控制在我们可以处理的能力之内,要不然服务器宕机,欲哭无泪。
这是第一步,缓解了压力,让压力陆续进来,到这一步我们也可以松口气了,说了这么多该怎么实现呢? Beanstalkd可以帮你,具体介绍请移步http://rdc.taobao.com/blog/cs/?p=1201
创建管道:
提前创建好管道,在并发流程中:
到此为止,如我们所愿,我们已经控制了并发,我们已经把我们能力范围内可以控制的人放进来了,其它人只能继续等待...
剩下就是库存问题了,库存控制原则:
1.库存数不能<0,否则问题大了,商品超卖了,用户下了单,但没货发给卖家,那你就等着投诉吧。
请看下面一个sql(数据库是InnoDB):
重点看sqlPart部分,这里巧妙和利用mysql的行级锁,把库存不可能为0的控制权交给了mysql来处理,此乃点晴之笔。
- 高并发库存控制
- 高并发库存控制
- 高并发库存控制
- 高并发扣库存
- mysql 高并发,防止库存刷爆
- 高并发高性能仓库库存系统的架构设计
- 高并发高性能仓库库存系统的架构设计
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- mysql处理高并发,防止库存超卖
- 26个颠覆世界的 3D 打印产品,未来将会创造另一个新的世界
- Deep Copy VS Shallow Copy
- iOS手势UIGestureRecognizer
- php实现树状结构无级分类
- JAVA中通过继承Thread类来创建线程类
- 高并发库存控制
- WCDMA系统结构及关键技术
- [WC2006]水管局长
- Smail反汇编文件语句说明
- DbVisualizer 8 解决中文编辑乱码问题
- php学习积累(工作积累、笔试积累,不断增加)
- JAVA中通过实现Runnable接口来创建线程类
- web Service中遇到的问题
- JAVA中实现Callable接口来实现线程