MQ
MQ(MessageQueue),中文是消息队列,就是存放消息的队列,也是下面提到的事件驱动架构中的Broker
同步调用的优点:
时效性强,可以立即得到结果
同步调用的问题:
- 耦合度高
- 性能和吞吐能力下降
- 有额外的资源消耗
- 有级联失败问题
异步调用常见的实现就是时间驱动模式:
理解:当我们完成一个功能需要完成其他多个功能后才能够返回消息,但是我们可以将调用多个的任务交给一个Broker进行,这个时候第一个功能结束就立即返回,剩下的慢慢进行
优势:
- 服务解耦
- 性能提升,吞吐量提高
- 服务没有强依赖,不担心级联失败问题
- 流量削峰
现在很多人同时访问一个功能,功能完成后需要同时调用功能,这时Broker可以将消息进行缓冲,再多其他功能也是一个一个从broker中提取,起到一个缓冲作用,就是流量削峰
缺点:
- 依赖于Broker的可靠性,安全性,吞吐能力
- 架构复杂了,业务没有明显的流程线,不好追踪管理
- MQ的实现
分析可以得出,kafka适合日志这类可靠性要求较低,吞吐量较高的传输,而RabbitMQ和RocketMQ适合业务处理传输