解耦、异步、削锋
1:解耦
使用mq前
A系统分别调用B、C、D系统,如果有个E系统也需要A调用,A系统需要修改代码去调用E系统接口。
如果D系统又不需要A系统调用,A系统也要修改代码。
B系统挂了怎么办,C系统超时怎么办,需要重试吗?
各种情况很多,A系统和很多系统耦合
使用MQ后
A系统把消息丢到mq,需要消费的系统去消费,A系统不需要频繁改动
考虑一下系统中是否有这种场景,一个系统或者模块调用了多个系统或者模块,互相之间的调用和复杂,维护起来很麻烦,并且是不需要同步调用接口的,可以用mq进行解耦。
2:异步
跟上面场景类似,将消息推送到三个不同的队列,由不同的系统去监听,可以更快速地响应
3:削峰
某一个时间段请求很多,比如每秒5000次,而系统最多只能处理2000次,这时候用MQ限制每秒钟推送2000条信息,不会导致系统崩溃
消息会积压,高峰期过后可以慢慢处理掉