闲来无聊,想了下秒杀、抢购实现方法
对于秒杀、抢购这种促销活动在电商还是比较常见。
如果东西不错、价格低、推广不错,势必会引来不少流量。
今天闲来想了下实现方法。
本人写PHP的,大致思路代码用php。
首先需要做的是用户必须注册登录,流量服务器必须能顶的住。
有钱的公司做个F5负载,也可以用nginx做个负载均衡也不错的。
登录无非把 SESSION 存储到 memcache 实现多台服务器共享。
memcache 可以也可以多台。
抢购页面可以越简单越好,能验证登录基本不要加载过多功能,减少压力。
对于抢购页面的图片,CSS,JS走CND,减少图片服务器压力,提高用户体验。
避免工具恶意抢购,可以开启图片验证码,相信有验证码在,不怕不瞎搞。
具体实现:时间一到,用户开抢,直接把数据入队列,比如RabbitMQ ,HTTPSQS。
比如说有三件商品,直接取出队列3个就OK。
后台开启一个守护进程,去取出用户,插到memcache,mysql
插入memcahce给前台展示使用,插入mysql做永久存储。
前台展示只需要读memcache的中的抢中用户就行了。
后台守护进程还有一个功能就是去检查memcache 如果没有命中则重新设置新值。
当然考虑memcache 命中问题已经持久化存储,可以考虑用现在非常强大的mongoDB ,原理思路完全一样。
这个思路把所有的压力交给缓存,对mysql 不会造成任何压力。
鄙人的想法,有更好的方法 可以大家一起讨论。
转载保留链接