电商的秒杀和抢购,对咱们来讲,都不是一个陌生的东西。然而,从技术的角度来讲,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定相当重要。此次咱们会关注秒杀和抢购的技术实现和优化。web
大型电商抢购,确定有好多牛逼技术,负载均衡,南北镜像。。。等等,我只是写一个我遇到的一个抢购业务的处理方法,但愿能抛砖引玉!ajax
先上流程图:缓存
如今电商网站某个抢购活动,并发怎么办?消息队列安全
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。有玩RabbitMq的哥们,多多交流!服务器
用户请求会post到后台一些信息如(用户信息,商品信息)到消息队列中。websocket
消息队列经过Windows服务去处理解析过来的信息,单线程处理(多线程可能会出现问题,你懂得)!多线程
成功的话,插入到本次活动的成功记录表里面;失败的话,插入到有意购买表(方便业务人员销售)!并发
怎样通知用户?负载均衡
1,ajax异步去请求(隔两分钟去请求一次成功记录,若是不请求库的话咱们会用Redis缓存)异步
2,长链接的方式(websocket,signalr之类的)
总之想作好抢购之类的业务,路漫漫其修远兮,但愿大神们多多指导!