同步通讯:视频电话 同时和另一个通讯,比如feign的调用,支付服务调用订单服务和仓库服务,需要等两个服务的响应。
- 优点:
时效性比较强,立即就能知道结果。 - 缺点:
耦合问题:新加短信通知等等服务,支付服务又需要调其他的服务,一直改代码
性能问题:调用链时间之和,等一个一个的回复,时间太长
吞吐量,浪费资源:占着资源,等着其他服务响应
异步通讯:微信聊天
事件驱动模式
支付服务把消息发布给broker就不管了,交给borker去通知订阅过的服务
优缺点:
- 优点:
○耦合度低
○ 吞吐量提升
○ 故障隔离
○ 流量削峰 - 缺点:
○ 依赖于MQ的可靠性,安全性,吞吐能力(因为加了一层MQ,当然高度依赖它)
○ 业务复杂了,业务没有明显的流程线(调用链),不好追踪管理
什么时候使用同步?什么时候使用异步?
大部分使用同步,大部分没有那么高的性能要求,对时效性要求高,我需要知道调用是否成功了,我查到 的订单 我等等就要用。
异步:不需要对方的结果,并且对吞吐量,并发的要求比较高,接触服务间的耦合