MQ消息队列初识

MQ消息队列初识

同步调用

优势:

  • 时效性强, 等待结果后才返回
    问题:
  • 扩展性差
  • 性能下降
  • 级联失败(雪崩)
    eb23ecb42ef8c0814fea0ed4d10459c7da97bfa0.png

异步调用

优势:

  • 解除耦合,扩展性强
  • 无需等待,性能好
  • 故障隔离
  • 缓存消息,流量削峰填谷
    问题:
  • 不能立即得到调用结果,可能都得不到结果,时效性差
  • 不能确定下游业务执行是否成功
  • 业务安全依赖于Broker(消息代理) 的可靠性
    4eedce7650d32b9027dd911ee5425c85cc72667f.png

MQ技术

RabbitMQ消息队列是用来做消息收发的。

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