消息中间件的定义

  • 以消息作为信息载体实现系统间的可靠异步的调用,减少系统间耦合的中间层框架

消息中间件的好处

  • 各项服务解藕,服务间透明调用
  • 通过异步的方式提高业务处理效率,性能只取决于消息中间件的性能
  • 消息的可靠性与一致性统一由消息中间件来保证

消息传输模型

队列模式

  • 队列模式指的是通过队列存放消息,消息只能由一个服务进行消费,无法满足多个服务消费同一条消息的场景

订阅模式

  • 根据业务主题的不同,允许多个服务处理同一条消息
  • 订阅根据订阅方式的不同可以分三类:直接订阅(Topic + MessageType); 正则订阅(Topic + MessageType 正则); 广播订阅(Topic + all MessageType)

消息处理过程

  • 消息根据是否涉及分布式事务分为普通消息与事务消息

普通消息的处理

  • producer 发送消息给消息中间件
  • 中间件做好存储并返回成功,producer 可以做其他事情
  • 中间件根据消息的 Topic 和 MessageType 查询订阅关系分组并下发消息给 consumer
  • consumer 根据结果超时重发、成功记录来保证失败重投或不再投递

事务消息的处理

  • producer 发送消息给消息中间件,同时在执行本地的业务
  • 中间件做好存储并返回成功
  • 中间件在询问 producer 本地业务执行成功时发消息给 consumer,否则进行回退操作,来保证 producer 与 consumer 的执行的一致性
  • consumer 根据结果超时重发、成功记录来保证失败重投或不再投递

需要改造的业务系统

  • 又拍云直播业务系统