MQ的使用场景
2019-07-31 本文已影响0人
初心myp
常用的消息队列有rabbitmq、activemq、kafka、RocketMQ
异步处理:例如完成某种业务之后需要发短信发邮件通知时,就可以采用一步的方式完成短信或邮件的通知。
流量削峰:常见的秒杀场景
(秒杀活动流量过大,导致流量暴增,最终可能导致应用挂掉。一般会在应用前端加入消息队列来控制活动人数,假如消息队列超过最大数量,应该直接抛弃用户请求或者跳转到错误页面。秒杀业务根据消息队列中的请求信息在做后续的业务处理)
日志处理:最典型的就是kafka。因为kafka最初的设计就是用于日志处理,大数据里面用的特别多,通过日志采集,定时写到kafka队列,然后kafka队列对日志数据进行接收、储存和转发
应用解耦:
例如:商品服务和订单服务之间。用户下单后,订单服务会通知商品服务。不使用MQ的情况是订单服务调用商品服务的接口,这样订单服务和商品服务之间是耦合的;使用MQ,订单服务完成持久化处理,将消息写入MQ消息队列中,返回用户订单下单成功,商品服务来订阅这个下单的消息,采用拉或推的方式获得下单信息,商品服务根据商品下单信息进行商品库存信息修改,这样当下单时商品服务不可用时,也不影响正常下单,这就完成了订单服务和商品服务之间的解耦。