同步与异步调用。什么是同步调用?什么是异步调用?异步调用和同步调用有什么区别?

目录

一)同步调用:

二)异步调用:

三)使用建议:


一)同步调用:

支付服务调用订单服务时,只有当订单服务执行完成之后,才会接着调用仓储服务,以此类推,直到支付服务需要的全部服务都执行完毕之后才会给用户返回执行成功指令,所需时间较长。

存在问题:

1、耦合度高。给系统添加新功能时,必须修改原来的代码,例订单服务调用成功之后要给用户发一个短信,此时就必须去修改订单服务的代码。

2、性能下降。调用者的等待时间=每个子系统调用的时间之和。

3、资源浪费。每个服务在调用完成后等待响应的过程中不能释放请求所占用的资源,并发强度下及其浪费系统资源。

4、级联失败。当仓储服务出现故障之后,之后的短信服务就无法调用了,因为存在阻塞,只有仓储服务完成之后才会调用短信服务。

二)异步调用:

同样调用者调用支付服务之后,系统会立即通知Broker,之后Broker就会通知依赖于支付服务的所有服务,这些服务同时执行,不存在互相等待。只要支付服务将消息推送给Broker此次程序就相当于执行完毕。

优点 :

1、服务解耦。仓储服务执行之后不想再调用短信服务了,不用修改代码,直接将短信服务删除即可。

2、吸能提升。之前的同步调用500ms,异步调用只需60ms

3、没有级联失败问题。仓储服务损坏不影响其他服务的执行。

4、流量削峰。下图中假设订单服务能同时处理2两个,仓储服务能同时处理1个,此时一下子来了3个支付服务,则broker会将两个订单服务分配过去,剩下的那一个在队列等待,将一个仓储服务分配过去两外两个在队列等待。起到了数据缓冲的作用。

 将高并发转化为低并发:

 缺点:

1、对Broker的可靠性,安全性,吞吐能力有很高的要求。

2、依赖于Broker,一旦Borker崩溃整个微服务都崩溃了。

3、架构复杂,业务没有明显流程线,不易追踪管理。

三)使用建议:

1、想立刻得到结果,就必须使用同步调用。因为异步只是通知系统让系统要办这件事,但是什么时候办完用户并不知道,而同步不一样,同步是等待执行完之后才算调用完毕。

2、对吞吐量、并发、低耦合关系,则使用异步调用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值