MQ概述
MQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。
优势
应用解耦
异步提速
削峰填谷
劣势
系统可用性降低
:系统引入的外部依赖越多,系统的稳定性越差。一旦MQ宕机,就会对业务造成影响。如何保证MQ的高可用?
系统复杂度提高
:MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ异步调用。如何保证消息没有被重复消费?怎么处理消息丢失情况?怎么保证消息传递的顺序性?
一致性问题
:A系统处理完业务,通过MQ给B、C、D三个系统发送消息数据,如果B系统、C系统处理成功,D系统处理失败。如何保证消费数据处理的一致性?
使用MQ需要满足什么条件?
(1)生产者不需要从消费者处立即获得反馈
(2)容许短暂性不一致
(3)确实是用了有效果。即解耦、提速、削峰这些方面的收益,超过加入MQ,管理MQ的这些成本。
常见的MQ产品
RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,也有直接使用Redis充当消息队列的案例,而这些消息队列产品,各有侧重,在实际选型时,需要结合自身需求及MQ产品特征,综合考虑。