一、什么是mq?
MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布 式系统之间进行通信。
二、mq的优缺点?
优点:
1.应用解耦: 降低系统之间的耦合,提高系统的可维护性。
2.异步提速: 可以系统的吞吐量。
3.削峰填谷: 可以提高系统的稳定性。
缺点:
1.系统可用性降低
系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。如何保证MQ的高可用?
2.系统复杂度提高
MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?
3.一致性问题
A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理失败。如何保证消息数据处理的一致性?
三、如何选择mq?
生产者不需要从消费者处获得反馈。引入消息队列之前的直接调用,其接口的返回值应该为空,这才让明明下层的动作还没做,上层却当成动作做完了继续往后走,即所谓异步成为了可能。
容许短暂的不一致性。
确实是用了有效果。即解耦、提速、削峰这些方面的收益,超过加入MQ,管理MQ这些成本。
四、常见的mq产品
RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq