MQ:消息队列

1、MQ

MQ(Message Queue)消息队列, FIFO 数据结构。

  • 角色

    1. 生产者:产生数据(消息)并放入队列。
    2. 存储信息:即消息的队列。
    3. 消费者:两种获取信息的方式
      • :到指定队列拉取消息。
      • :订阅相应的队列,由MQ服务端给其推送消息。
  • 不同 MQ 对比

    Active MQ Rabbit MQ Kafka Rocket MQ
    发布订阅
    轮询分发
    公平分发
    重发
    消息拉取

2、作用

作用:解决应用解耦,异步消息,流量削锋等问题。

实现高性能,高可用,可伸缩和最终一致性架构。

  1. 解耦:一个业务需要多个模块共同实现,或者一条消息有多个系统需要对应处理。

    1. 主业务执行结束后发送一条 MQ。
    2. 其余模块消费 MQ 消息,即可实现业务。
    3. 降低模块之间的耦合。
  2. 异步:业务分为需要即时处理的主业务,可后台执行的从属业务。

    1. 主业务执行结束后发送一条 MQ。
    2. 从属业务消费 MQ 信息,异步执行。
    3. 减低业务的响应时间,提高用户体验。
  3. 削峰:高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪。

3、缺点

  1. 系统可用性降低:依赖服务越多,服务越容易挂掉。需要考虑MQ瘫痪的情况
  2. 系统复杂性提高:需要考虑消息丢失、消息重复消费、消息传递的顺序性。
  3. 业务一致性:主业务和从属业务需要考虑一致性的处理。
posted @ 2022-04-19 22:17  Jaywee  阅读(121)  评论(0编辑  收藏  举报

👇