🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# MQ 的优势 1. 应用解耦:提高系统容错性和可维护性 ![](https://img.kancloud.cn/6a/3a/6a3a8718bebe5696d9d319bfa63046de_750x339.png) 2. 异步提速:提升用户体验和系统吞吐量 ![](https://img.kancloud.cn/cf/68/cf682192cb1e959cef86c4972d4e0e61_737x346.png) 3. 削峰填谷:提高系统稳定性 ![](https://img.kancloud.cn/bb/f1/bbf18c7d7029e2cda544ab428ca3ed81_570x266.png) ![](https://img.kancloud.cn/27/6a/276ae75f8887847f2518d489f407aeab_533x268.png) # MQ 的劣势 1. 系统可用性降低 系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。如何保证MQ的高可用? 2. 系统复杂度提高 MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过 MQ 进行异步调用。如何 保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性? 3. 一致性问题 A 系统处理完业务,通过 MQ 给B、C、D三个系统发消息数据,如果 B 系统、C 系统处理成功,D 系统处理 失败。如何保证消息数据处理的一致性? # 总结 * 生产者不需要从消费者处获得反馈。引入消息队列之前的直接调用,其接口的返回值应该为空,这才让明 明下层的动作还没做,上层却当成动作做完了继续往后走,即所谓异步成为了可能。 * 容许短暂的不一致性。 * 确实是用了有效果。即解耦、提速、削峰这些方面的收益,超过加入MQ,管理MQ这些成本。