初始MQ(十一)

发布时间 2024-01-12 10:03:02作者: DAYTOY-105

1 同步通讯

例如:微信视频电话

优点:时效性较强,可以立即得到结果;

同步调用存在的问题

  • 耦合度高,每次加入新的需求,都要修改原来的代码;
  • 性能和吞吐能力下降,调用者需要等待服务提供者响应,如果调用链过长则响应时间等于每次调用的时间之和;
  • 资源浪费,调用链中的每个服务在等到响应过程中,不能释放请求占用的资源,高并发场景下会极度浪费系统资源;
  • 级联失败,如果服务提供者出现问题,所有调用方都会跟着出问题,如同多米诺骨牌一样,迅速导致整个微服务群故障。

2 异步通讯

例如:微信文字聊天

异步调用方案:异步调用常见实现就是事件驱动模式;

优势:服务解耦,耦合度低;性能提升,吞吐量提高;服务没有强依赖,不担心级联失败问题,故障隔离;流量削峰;

缺点:依赖于Broker的可靠性、安全性、吞吐能力;架构复杂了,业务没有明显的流程线,不好追踪管理。

3 MQ常见框架

3.1 什么是MQ

MQ(MessageQueue),中文是消息队列,字面来看就是存放消息的队列。也就是事件驱动架构中的Broker

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