1、什么是MQ
MQ(Message Queue)即消息队列,是一种跨进程的消息通信机制,用于上游与下游之间传递通知信息。目前市场上使用较多的MQ有ActiveMQ、RabbitMQ、RocketMQ、Kafka。
2、MQ是干嘛的
MQ是上游与下游之间的解耦神器,上游向MQ发送消息,下游从MQ接收消息,上游下游互不知道对方,它们只依赖MQ。
一切可以异步的场景都可以使用MQ,此时便发挥了MQ解耦的天然优势。
3、使用场景举例
终于到了具体应用场景了,等急了吧。
削峰填谷
应用场景:双11秒杀操作,用户在上游短时间内生成大量订单,下游需进行库存检查、生成订单、扣减库存、扣除余额等操作,下游执行速度明显低于上游下订单速度,若不对上游进行限制,很可能把下游压垮,引起雪崩。
MQ可在上下游之间进行缓冲,把上游信息先缓存起来,下游根据自己的能力从MQ中拉去信息。
异步解耦
应用场景一:用户填写的注册信息写入数据库后,需要发送注册邮件和注册短信,同步顺序调用响应时间为150ms。
使用MQ对注册信息写入数据库与之后的发送操作异步解耦后响应时间缩小为100ms。
应用场景二:用户下订单后需扣减库存,使用调用会使订单系统与库存系统耦合在一起,不利于扩展。使用MQ可使订单系统与库存系统解耦。
4、总结
削峰填谷、异步解耦,这就是MQ的使用场景。
MQ也不是万能的,不是任何情况下都适合使用,比如调用方强依赖被调用方的执行结果时请使用调用,要不然会产生数据不一致。
领取专属 10元无门槛券
私享最新 技术干货