mq解决的问题
1 系统间解耦合
2 异构环境跨语言调用
3 rpc远程调用阻塞时间
mq缺点:
1 系统更复杂,引入一个mq组件;
2 调用路径变长,增加延迟时间;
3 不能获得执行结果;
4 消息可达性与不重性不能同时保证;
对比:
场景:
场景1: 数据驱动的任务依赖(统计分析任务)
1 不用设置buffer时间,效率高;
2 任务之间依赖关系清楚
3 更具上游任务执行完成时间驱动下游任务开始,好处是:上游执行时间变化,下游不用调整执行时间,上游执行超过了buffer,下游不会出错;
场景2: 不关心下游执行结果的调用(发帖)
1 上下游物理和逻辑解
2 上游执行速度快;
3 增加一个下游关注方,上游不用修改代码;
场景3: 异步返回执行时间长(跨公网或离线处理)
1 减少上游执行时间
一句话概括:削峰填谷,异步解耦