削峰填谷,异步处理
秒杀活动中为何要使用到消息队列?
先说结论,秒杀活动并不是常规的活动,因此考虑到资源成本,以及服务稳定性,使用消息队列更佳。
假设某电商平台开办一场秒杀活动,活动有1000个性价比高的商品。参与该场活动的用户会在活动开始前的几分钟进入页面。
频繁的刷新,以及后面开始的秒杀活动,都需要查询商品的库存信息,绝大多数是读请求,因此我们需要使用缓存来扛住。
这边说的缓存,包括使用CDN缓存和nosql缓存。
一些静态的图片和视频,可以通过CDN的方式缓存,CDN 即内容分发网络,部署在距离终端用户最近的网络服务商,用户的网络请求总是先到达他的网络服务商那里,在这里缓存一些静态图片和视频,可以就近以最快的速度返回给用户。
一些商品信息的查询请求,可以使用nosql的缓存,如果不希望请求到对应的web 服务,可以通过在网关代理层直接请求到nosql缓存。
秒杀成功的请求,进入下单流程,这部分请求相比日常的请求量,也是一个瞬时的高峰写请求,这样高峰的写请求,对于数据库来说,也是比较大的压力,同时也使得响应延迟加剧。可能有的人会说,可以通过分