应用场景
异步处理:当用户注册成功后,需要发送注册成功邮件、新用户积分、优惠券等;缓存过期时,先返回过期数据,然后异步更新缓存,异步写日志等。通过异步处理,可以提升主流程响应速度,而非主流程或非重要处理可以集中处理
系统解耦:当用户成功支付完成订单后,需要通知生产配货系统,发票系统、库存系统、推荐系统、搜索系统等进行业务处理,而未来需要支持哪些业务是不知道的,并且这些业务不需要实时处理、不需要强一致,只需要报账最终一致性即可
数据同步:如果想把MySQL变更的数据同步到redis,或者将MySQL的数据同步到Mongodb,或者让机房之间的数据同步,或者主从数据同步等,此时可以考虑databus、canal、otter等。使用数据总线队列进行数据同步的好处是可以保障数据修改的有序性
流量削峰:系统瓶颈一般在数据库上,比如扣减库存、下单等。此时可以考虑使用队列将变更请求暂时放入队列,通过缓存+队列的暂存的方式将数据库流量削峰。同样对于秒杀系统,下单服务会是该系统的瓶颈,此时可以使用队列进行排队和限流,从而保护下单服务