MQ(异步通讯的的缺点/优点)
方案:事件驱动模式
这里支付服务发布支付成功事件后就停止了自己的业务,返回给用户显示支付成功。不需要去等待订单服务等等服务(这些服务什么时候做,谁去做不去支付服务不去管)
优点1:服务解耦(相当于所有服务挂载到了broker上了。不再是一个一个去主动调用了)
任意删除,增加业务我们都不再需要更改代码(只是加了一个订阅事件)
优点2:性能提升,吞吐量提高(这些都是相对于同步来说)
总耗时:50ms+10ms=60ms(他就是支付成功了啊)
优点3:服务没有强依赖,不担心级联失败问题(若是仓储服务失败不会影响支付服务是否失败)
优势4:流量消峰
这里的随着业务量增加请求也来越多,这些请求会被broker拦截再让各种服务根据自己的能力去处理业务,其中压力由broker抗(起一个缓冲作用)而不是服务。这样一个高并发就被砍平变成一个低并发了(详见下图)
缺点:
总结:我们大部分还是用的同步(因为其时效性更高),若是追求吞吐量,低耦合可以考虑异步