MQ总结 - 图2架构

RocketMQ架构

image.png
topic下面是queue
queue分配在不同的broker上

kafka架构

MQ总结 - 图4

RabbitMQ架构

MQ总结 - 图5

主从

  • RocketMQ slave不对外提供服务
  • Kafka不分master slave,每个节点上都有leader 或者 follower。每个节点都对外提供服务。

    Broker文件

RocketMQ文件

RocketMQ

Kafka文件

Kafka

读写分离?

RocketMQ读写分离

RocketMQ

kafka的follower只备份不提供读服务

partition来分散读写压力

消息防止丢失

RocketMQ防止消息丢失

RocketMQ

Kafka防止消息丢失

Kafka

RabbitMQ防丢失

  • 客户端:
    • ConfirmListener & returnListener
  • 服务端(不能保证防丢失)
  • 消费端

    • 手动ack

      顺序消费

      RocketMQ

      RocketMQ

      kafka顺序消费

      Kafka

      RabbitMQ顺序消费

  • 一个Queue对应一个Consumer,把需要保证顺序的message都发送到一个queue当中,关闭autoack,prefetchCount=1,每次只消费一个。

    批量消费

  • kafka,批量消费要等最后的那个完成

  • RocketMQ,可以返回RECONSUME_LATER:放入重试队列,然后继续消费后面的数据

    MQ的IO优化

    零拷贝

    kafka可以重置消费历史数据