异步体现在异步消费消息;解耦体现在不用修改代码进行扩展
异步
同步发送:
异步消费:
解耦
解耦前:
解耦后:
总结:通过MQ的发布-订阅模型,系统A和其他系统彻底解耦了
削峰
削峰前后:
消息队列带来的问题:
1、系统可用性降低:
系统可用性在某种程度上降低,为什么这样说呢?在加入MQ之前,你不用考虑消息丢失或者说MQ挂掉等等的情况,但是,引入MQ之后你就需要去考虑了!
2、系统复杂性提高:
加入MQ之后,你需要保证消息没有被重复消费、处理消息丢失的情况、保证消息传递的顺序性等等问题!
3、一致性问题:
我上面讲了消息队列可以实现异步,消息队列带来的异步确实可以提高系统响应速度。但是,万一消息的真正消费者并没有正确消费消息怎么办?这样就会导致数据不一致的情况了