1.分布式应用,云计算以及微服务流行,其根本本质是RPC,以下就是对与RPC技术的一个总结。
2.RPC的定义:
全称是Remote procedure Call是一种进程间的通信方式,允许程序调用另一个地址空间的过程或函数,而不用程序员编码整个远程调用的细节,表现就是,无论程序员是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
3.RPC特性:
《1》概念定义:简单,便于建立分布式
《2》高效:过程调用起来十分简单而且高效
《3》单机计算机中,往往是不同算法部分间的最重要通信机制
4.目的:程序员对于本地的过程调用十分熟悉,那么我们就把RPC做成和本地调用完全类似,使用起来如同调用本地的,目前的RPC就是基于整个目标进行实现的。
5.RPC的应用:主要目标是构建分布式计算更加容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性,为实现这个目标,RPC框架需要提供一个透明机制让使用者不必显式的区分本地调用和远程调用。
1.RPC的调用分为以下两种:
1》同步调用:客户端等待调用执行完成并获取到执行结果。
2》异步调用:客户端调用后不用等待执行结果,但是依然可以通过回调通知等方式获取返回结果,如果客户端不关心调用结果,则变成单向异步调用,单向调用不用返回结果。
在异步和同步的区分在于是否等待服务端执行完成并返回结果。
这里的user也就是client端,当用户端想发起一个远程调用的时候,他实际是通过本地调用的USer-stub,
其中User-stub作用是负责将调用的接口,方法和参数通过约定的协议规范进行编码并通过本地的PRCRuntime实例传输到远端的实例,远端RPCRunTime实例收到请求之后交给Server-stub进行解吗之后发起向本地端server的调用,调用结果再返回给,调用结果再返回给USer端。
进一步的去加深理解RPC,如下图所示:
组件解释如下:
1.RPCServer
负责导出(export)远程接口(服务端)
2.RPCclient
负责导入(import)远程接口的代理实现
3.RPCproxy
远程接口的代理实现(用于进行调度)
4.RPCInvoker
客户端:负责编码调用信息和发送调用请求到服务端并等待调用结果返回。
服务端:负责调用服务端接口的具体实现并返回调用结果。
5.RPCProtocol
负责协议编码/解码
6.RPCConnector
负责维护客户端和服务端的连接通道和发送数据到服务端。
7.RPCAcceptor
负责接收客户端请求并返回请求结果
8.PRCProcessor
负责在服务端控制调用过程,包括管理调用线程池,超时时间等。
9.RPCChannel
数据传输通道