消息队列使用场景简介

简单的使用场景示例图
下面结合下单成功以后给用户发送短信的场景来看一下消息队列的使用

  • 在下单操作的时候可以在基本操作做完就直接通知订单已经提交,然后发送一个创建订单的消息到消息队列里面,通过处理消息队列里面的消息来更新订单的状态

    消息队列的特性

  • 与业务无关:只做消息分发

  • FIFO:先投递先到达
  • 容灾:节点的动态增删和消息的持久化
  • 性能:吞吐量提升,系统内部的通信效率提高

    为什么需要消息队列呢

  • 生产 和 消费 的速度或者稳定性等因素不一致

    消息队列的好处

  • 业务解耦

这是消息队列里面要解决的最本质的问题,所谓的解耦就是一个事务只关心最核心的流程,需要依赖其他系统或者不那么重要的事情就有通知即可,无需等待结果,换言之用消息队列的结果重在通知而不在结果

  • 最终一致性

e.g. 我们从一个银行的转账系统来理解一下最终一致性,比如A系统扣钱成功那么B系统加钱也要是成功的,反之就需要一起回滚就像什么也没有发生过一样。然而存在很多的意外。

  • 广播
  • 错峰与流控
  • 在需要强事务保证的情况下,rpc调用远比消息队列可靠的多

    常见的消息队列

  • Kafka-阿帕奇下的一个子项目-自称为高性能,跨平台,发布订阅消息队列系统

特性

  1. 快速持久化:可以在O(1)的系统开销下进行消息持久化
  2. 高吞吐:可以达到10w每秒的高吞吐
  • RabbitMQ