
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都习惯网购了,大家在网购的时候应该都遇到过秒杀活动的吧,下面我们就一起来了解一下,秒杀活动功能如何应用。
1、静态资源
静态资源是指商品的图片,视频,音频,html页面等几乎不会变化的资源,这些资源的处理方式和缓存类似,尽量放在离用户近的地方,比如:浏览器的本地缓存,当缓存过期的时候,优先推荐从CDN中获取,CDN是应对静态资源访问高峰的简单粗暴,也是有效的解决方案,如果没有CDN怎么办?那少要把请求这些静态资源的服务器和后台业务服务器物理上分离,避免因为静态资源而影响正常的业务。比如:很早之前,我就喜欢每个项目单独一个存放图片,css,js的网站,这个网站的优势是无状态,可以做到傻瓜式横向扩展。
2、消息队列
说到消息队列,每个程序员都不陌生,它相当于一个快速的数据容器,可以作为一个缓冲层来应对流量高峰。如果从它的使用场景上来看,它可以算是低速设备和高速设备之间的平衡者,使用消息队列来进行削峰是一个很明显的异步流程。
应用到秒杀的场景下,大量的请求会先进入消息队列,它不仅削平了流量的峰值,而且把秒杀下单的这个流程异步化,只要把请求都暂存入队列,消费端慢慢消费即可,但是这里要注意,如果消费的速度远远慢于消息的投递速度,可能会影响整个系统性能。
除了削峰之外,我始终认为消息队列的大作用是系统解耦,它把下单和支付解耦,下单和支付业务可以随着自身系统的承载量来单独扩容。
3、缓存
为什么要加入缓存这个选项呢?别忘了,除了大量的用户下单这个写操作之外,还有更大量的用户请求下单结果这个读操作。当用户点击秒杀按钮之后,系统会弹出等待的提示框,很多系统是不停的去轮训用户的下单结果,我之前也写过缓存的文章,曾经提到过缓存大的作用是提供读操作的快速响应。整个秒杀系统可以这样做:
用户点击下单按钮,请求经过限流组件,如果成功,则进入下单环节(这里可以进入消息队列,异步下单)
服务端无论是采用redis缓存,还是其他缓存组件,存放着下单成功的用户信息(也可以包括订单信息)
客户端采用轮训的方式去查询缓存,如果查询到信息说明下单成功,进入支付环节,未查询到则说明下单还未成功
服务端下单成功,往缓存中写入数据,当用户下次再次查询的时候会提示下单成功。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请在707945861群中学习了解。