MQ(消息队列)是什么?

分布式系统通信方式包括直接远程调用和借助第三方消息中间件完成间接通信。直接远程调用是指通过网络直接调用远程节点上的方法,实现节点之间的通信。常见的直接远程调用方式有远程过程调用(RPC)和远程方法调用(RMI)。借助第三方消息中间件完成间接通信是指将消息发送到中间件中,再由中间件负责将消息传递给相应的节点。消息中间件充当了各个节点之间的桥梁。

MQ 全称 Message Queue(消息队列)是在消息的传输过程中保存消息的容器,多用于分布式系统之间的通信,其作用有异步通信、应用解耦、削峰填谷。

  • 异步通信:实现系统组件之间的异步通信,发送方可以将消息发送到消息队列中,而不需要等待接收方的即时响应。
  • 应用解耦:发送者只需将消息发送到队列,而不需要关心消息的接收和处理,从而降低系统的耦合度。
  • 削峰填谷:消息队列可以作为缓冲器,平衡生产者和消费者之间的生产速率和消费速率,防止系统因为突发的高峰负载而崩溃。

在生产者不需要从消费者处获得反馈,或者容许多个子系统之间短暂的不一致性的情况下,是使用 MQ 的合适场景。

市面流行的 MQ 产品有:

RabbitMQ ActiveMQ RocketMQ Kafka
公司/社区 Rabbit Apache 阿里 Apache
开发语言 Erlang Java Java Scala & Java
协议支持 AMQP、XMPP、SMTP、STOMP AMQP、OpenWire、STOMP、REST、XMPP 自定义协议 自定义协议
可用性 一般
单机吞吐量 一般 非常高
消息延迟 微秒级 毫秒级 毫秒级 毫秒以内
消息可靠性 一般 一般

你可能感兴趣的:(rabbitmq,rocketmq,activemq,kafka)