当一个接口随着需求被设计的越来越复杂时,接口中执行方法的复杂程度就成为接口性能的瓶颈,对一些任务进行并行处理变得很有必要,例如我们早先提到过的rpc(远程过程调用)服务
Rpc到底是个啥
在一些对数据同步不是特别敏感的场景下,例如下面这个逻辑
获取一个商品的价格后,然后远程过程调用另外一个服务上该商品的打折券接口的数据,最后将数据汇总返回给用户
这个过程原来是串行的,但是很显然这两个任务可以去并行执行,从而缩短整个过程处理的时间,远程过程调用相对于主过程来说可以是异步去执行的
在文章开始之前,我们还是要介绍下同步,异步,阻塞,非阻塞这几个概念
1 同步与异步
同步与异步相对于程序来说,关注的是程序之间的协作关系(消息通信方式)
同步:当执行同步操作时,调用者要一直等待调用结果的通知后,才能进行后续的操作
异步:当执行异步操作时,调用者不需要立刻等待调用结果的返回,而是转去继续执行自己的方法,要想获得结果,有两种方法
- 主动轮训异步调用的结果
- 被调用房利用callback通知调用方获取结果
我们以小明去洗衣房洗衣服为例
同步执行:小明去洗衣房洗衣服,将衣服放入其中一个洗衣机后,就在洗衣房旁边开始思考人生?,洗了快40分钟,衣服洗好后,他把衣服取了出来,回宿舍扫地...
大家都能看出来,中间这40分钟,小明没有有效的利用起来
异步执行:
1.小明把衣服放入洗衣机后,每隔10分钟都要亲自去看洗好了没,洗衣房老板都烦了...
2.小明将衣服放入洗衣机后,和洗衣房老板约定好,衣服洗好后,老板会打电话给小明,于是小明趁着洗衣服的时间,回宿舍把地给扫了,顺便和朋友打了一把王者荣耀,这时洗衣房打电话过来给小明,通知小