代码改变世界

电商抢购、秒杀活动浅析

2015-10-22 16:37  只喝牛奶的杀手  阅读(5543)  评论(9编辑  收藏  举报

电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化。

大型电商抢购,肯定有好多牛逼技术,负载均衡,南北镜像。。。等等,我只是写一个我遇到的一个抢购业务的处理方法,希望能抛砖引玉!

先上流程图:

 现在电商网站某个抢购活动,并发怎么办?消息队列

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。有玩RabbitMq的哥们,多多交流!

用户请求会post到后台一些信息如(用户信息,商品信息)到消息队列中。

消息队列通过Windows服务去处理解析过来的信息,单线程处理(多线程可能会出现问题,你懂得)!

成功的话,插入到本次活动的成功记录表里面;失败的话,插入到有意购买表(方便业务人员销售)!

怎样通知用户?

1,ajax异步去请求(隔两分钟去请求一次成功记录,如果不请求库的话我们会用Redis缓存)

2,长连接的方式(websocket,signalr之类的)

 总之想做好抢购之类的业务,路漫漫其修远兮,希望大神们多多指导!