00:00
现在我们用ni自己实现double r PC。首先,我们对RPC做基本的介绍,所以RPC指的是remote procedure。Call,它是远程过程调用,是一个计算机通讯协议,该协议允许运行于一台计算机的程序调用另外一台计算机的子程序,而程序员呢,无需额外的为这个交互作用编程。就好像。打个比方,这有个A机器,这有个B机器,那么在机器上呢,我们跑了一个程序,它呢可以去调用BA。B机器上一个程序的一个API,就好像调用本地的方法一样,所以说在这里呢,我们这样可以理解,就是说两个或多个应用程序都分布在不同的服务器上,他们之间的调用都像是本地方法调用一样,我们来看一下它的远,就是RPC远程调用过程。
01:02
同学们跟着老师思路。比如说这是一个corner。Corner呢,就是一个调用者,调用者呢,他会去调用一个remote API,就是远程的API。调用远程API呢,会通过一个叫RPC的proxy,就是RPC代理,这个RPC代理又去调用我们rpc invoer,就是RPC的这个invoer。那么这是。这个。调用者了,RPC的调用者,那么RPC调用者呢,他会通过什么呢?R PC connector就是RPC连接器,这个连接器呢,它首先呃它它这个连接器会发信息过去发信息之前,他先要使用我们规定好的,就是这两台机器规定好的一个RPC协议,当然这个协议呢,我们自己可以去定义的。进行一个编码,编码过后呢,通过我们这个通道发送到对方的rpcer,就是RPC接收器,这个接收器呢,它首先会通过我们RPC协议进行一个什么D扣的,就是我们所谓的解码,解码完了过后呢,它会传给我们rpc process process就是RPC的处理器,处理器呢再传给我们这一个rpc invoer,就是RPC调用调用者。
02:20
在这个地方,它会去调用我们r remote API,对最后呢,他又把这个。Remote API最后推到我们的con con就是被调用者,这是我们的被调用者,这个是调用者,这个是被调用者,OK,好在整个过程中呢,我们Co就是调用者呢,会涉及到一个RPC,就是RPC客端,而我们意义呢,会及到一个RPC的server端。大致的这个流程是这样子的,但这个图呢。它是一个基于RPC远程过程调用的标准过程,标准过程那现在呢,我们来看一个,呃,具体有哪些,常常用的RPC框架有哪些,好吧,我们来看一看。
03:06
常用的RPC呢?比较知名的有阿里的double,还有谷谷歌的GRPC,还有go语言的RPCX以及Apache的thrift。Spring下面的spring cloud,它也使用到了RPC。那现在呢,我们来看它的一个我们自己画的RPC调用的流程图,大家可以看到整个这个流程呢,可以这样理解,这是我们的客户端,这是我们的服务器端,它是怎么做的呢?他这样做的客户端这边呢,先进行我这儿画个图。来,我这儿画个图哈。给它来一个颜色来成黑色的。我写个字上去,这个呢,我们叫做请求。请求好,这是他的第一个第一步。
04:01
字体放小一点。还得小一点哈。12。11吧。把它放小,大家应该能看到。他第一步呢,先发出一个请求,发出请求过后呢,大家看到刚才那个标准的过程,是不是也有一个编码的过程,所以说第二步呢,它进行编码。编码处理,编码完了过后呢,再通过我们这一个,诶写错了。再通过我们K。通过我们ctu进行什么呢发送。这个时候就会把信息通过我们的网络发送出去。发送发送到哪里去呢?诶发送给我们server,那server这边拿到以后,拿到这个请求以后干什么呢?他要肯第一步设要接收对不对,所以第四步它是接收。接收,接收到过后呢,他再交给我们server这边的一个解码器进行解码。
05:06
这就解码了。解码完了过后,下一步干什么呢?在这里他就去调用我们的server。第六步,调用相关的API。因为这个请求可能就是调用调用。调用API好的。那就用网络O这边server。他调用完了肯定会有结果,所以说这边他有一个响应,就把这个结果要返回给什么呀,调用者这边就是我们写个叫响应。响应,那响应完了过后呢,这个响应的结果又需要通过什么呀,服务器这边的编码。OK,编码,经过这个编码以后呢,同学们再通过我们这个server stop发送。这是第九步发送。对,那放松完了,结果呢。
06:03
就回复到我们兰端这边,肯定他首先要接收。没问题吧,接收完了过后,他再经过下一步处理及我们的解码。一样的就是另外一个。就是反向的一个过程。这边拿到过后呢,12就得到了结果。得到返回结果。它是这样一个流程。大家看到没有,所以说这个流程呢,就把我们一个RPC的过程描述的比较清晰了,这里呢,老师还要单独的给大家说一下,在我们RPC编程里边呢,它有一个术语。什么呢?可耐的端。我们以前叫客户端,在RPC中呢,我们往往把这个可能端称之为消服务消费者。他是做消费的,就是他是他消费别人,就是他用别人的,别人准备好的一些服务来进行相关的处理。
07:01
所以说,我们又把客南端称之为服务消费者。Server端呢,它是提供服务的,为什么呢?因为它是被别人调嘛,就是我调用你其中的某个API,所以说在这个,如果这个这个流向是这样过来的,对不对,那么我们这个server呢,就叫做服务提供者。理解啊,这是两术语,两个术语,接着呢,我们再来看。RPC调用流程说明,针对前面这个图,再说一下服务器消费方及南以本地。调用方式,调用服务。接收到调用后。负责将方法。参数等封装层能够进行网络传输的消息体。下一步,当然这个消息体呢,肯定双方是可以相互去规定的。Cloud stop,将消息进行编码,发送到服务器端,Server stop,接收到消息后进解码,Server stop,根据解码结果调用本地的服务,当然你比如说你这调的是什么服务,比如说你调的是个hello。
08:06
没问题吧,假设你调的是个哈方法,那这边呢,解码过后就server stop呢,就根据解码的结果调用本地的哈。诶,就是你这边是对应关系本地服务执行,并将结果返回给s stop s stop呢。将返回导入结果进行编码,并发送至消费方及端。这个兰大不能接收到消息,并进行解码,解码过后呢,我们就拿到这个结果。看起来是不是很复杂?看起来很复杂,但是我要说明一点,RPC的目标就是我们对RPC的目标,就是要把二到八这些步骤全部封装起来,用户无心关系这些细节可以像调用本地方法一样。即呃,就像调用本地方法一样,即可完成远程服务调用就好像什么意意思呢?就好像这是两头。
09:00
大家看我在这边呢,也标上这样一个颜色,大家一看就明白了。什么意思?就是说服务器服务消费方客端以本地方式,以本地调用方式调用服务。然后呢,服务消费方得到解控就完了。就好像你在A这边这边B哈,B这边有很多的服务,或者说有很多API,你在这帮你在A客户端干什么呢?直接去,比如他这边有一个方法叫hello。啊,或者叫COK。这样的一些API,你在本地什么呢?直接通过一个代理,直接通过一个代理直接调哈。好结果就拿到了。或者说你调OK。结果就拿到了,而中间二到八这些细节呢?我们就要把它封装起来,这就是我们RPC编程的目的。同学们关于RPC的基本介绍,老师就说到这里,那一会儿呢,我们要就要准备用ni,使用nit来完成double r PC。
我来说两句