00:00
那么接下来我们看一下具体的一个交互过程啊,交互过程,那比如说RPC整个交互分为两个阶段,一个是请求,一个是响应,啊请求响应。这边我们来看一下啊,RPC怎么发送请求啊。前面其实讲过了。同学们。是不是通过一个service的connect对方啊。对方的谁?呃,应该其实是对方的server对吧,哎,我这边标一下rpc server。对吧。就像这两个,它connect对方的server,然后返回一个网关对不对,哎。返回一个网关,那其实这个网关。怎么样?他也最终是不是调用到自身的server。这个server最终是不是转发到这个的了。
01:01
啊,对吧,就想描述的是这么一回事啊,啊描述的这么一回事。那么关键是这个代理啊,那这一块呢,如果大家对他们的来回关系有点模糊,没事,咱们一会那个PPT的动图会比较明显,那咱们现在来关心一下这个代理做的什么事。咱们刚才讲了那么多,呃,代理模式这个什么handle了handle了是吧,那它里面做了啥呢?来我们把它的核心逻辑要知道啊。在这个里面。有一个方法哎。方法,最终咱们所谓的代理他都会转发到这个方法里面,也就是说最终都会调用这个方法,转发到这个方法啊,转发到这个方法这个东西就像什么,什么叫代理转发呀,就像你的电话手机设置的是不是来电呼叫转移呀,对吧?呃,就比如说你有两部电话,这部电话设置了代理,呃,呼叫转移转移到哪呢?是不是转移到这一步啊,啊,这个叫A,这个叫B,对吧,那这个时候别人打A这个号码会怎么样?
02:17
那实际上是不是会打到B这里来啊,啊这种就是一个代理转发嘛,所以我们最终调用都是来到了这个Mo方法啊方法,那你看首先获取咱们调用的方法类啊获取类做最后呢,做一堆按照什么呢?做一堆判断对吧,那这一块呢,咱们也不关心了,哎,咱们关心哪呢。是不是做了一个分支啊。如果这个类是属于什么呢?网关的。属于基础的啊,就是一些属于server的,是不是走这。
03:01
是不是又掉了一个?那么如果是这种类型啊。那他就抛异常,那如果上面两个都不是。他就走,纯粹的。RPC请求。哎,所以核心这两行啊。我说如果是,呃。网关类的。调用对吧,走这里。啊,我们说。如果。不是网关定义的。呃。如果不是网关类的,那么就走这里啊,处理RPC请求。
04:01
对吧,啊。那我们看啊处理RPC它怎么处理的点。这里面呢,有几个关键点啊呃。他这边是不是都把消息封装成了一个叫r pcvo类型啊,这是咱们提到了对吧?嗯,把消息封装成这个啊,我这边写一下啊。把消息封装成。R PC invocation啊。好,再往后呢,啊,核心这里。如果返回类型是什么?Void是啥意思?无法为之吧。哎,对。我们说如果方法的返回值是VO的。
05:02
那么就使用T方式对不对,你无返回值是不是不需要回应啊,那是不是就告诉一下就行了,好哪个点。那result就为no对吧,为空啊,那如果S表示什么意思啊。就是有返回值对吧,有返回值好这边表示。有返回值啊,有返回值它里面呢。是不是做了一个ask?是吧?我们说。有反为直使用ask的方式。再往后看,它还有。看到这里这一块啊。他是不是还做了一个判断呢。如果返回的类型是这种类型。可完成的future类型是不是一种future是吧?啊是如果是这个就怎么样。
06:03
不是。如果返回类型。是。这个。直接把。这个返回对吧,直接把这个对象返回啊。那S是不是不是这个类型啊。他干什么?去主动get。大家注意get,是不是要等待他回应过来?啊。如果返回类型不是。这个,那么就主动去获取。结果,那这里代表什么意思啊。是不是要阻塞的?等待结果的返回啊,你是不是主动调用了一个get,是不是主动找对方要回应啊,那这个时候你必须等待他告诉你,所以这边执行这一步的时候会阻塞一下啊。
07:09
不用阻塞啊。这几个核心点。那么到这一块呢,咱们就基本干完了啊,这个代理到底做了啥事儿啊,咱们把它捋清楚啊。非阿卡类型的进入RPC调用啊。那这一块呢,是对咱们刚才的一个描述啊,刚才的描述。那么这边呢,还有哦对,还有这个封装成RPC,它你这个方法我们还得瞅一眼啊,你看这个创建封装类型的时候啊。做了个判断,是本地的吗?如果是,他实际类型是什么?Local的类型S。As,它是remote类型是吧?啊就这这这个细节给呃,我们再瞅一眼就行了啊好返回啊,不用过多去看。
08:05
如果是本地。那就创建logo类型。如果是远程就创建remote类型啊。好可以了,那这个咱们就整个对它呀做了一个了解,这是一个请求的发送过程,对不对,这是发送过程啊同学们。
我来说两句