一 定义
RPC是远程过程调用
远程过程的调用实质调用的是"代理" , 感觉调用的是本地服务 , 但是实际调用的是远
程的服务器 , 代理内部封装了协议规范 , 调用者不需要了解底层 , 即可实现远程过程
调用
二 RPC(狭义)与HTTP
1 网络7层协议图
2 层级关系与对应的协议
3 区别
1) RPC(TCP/IP)是传输层协议(4层)
HTTP协议是应用层协议(7层)
2) RPC(TCP/IP)协议可以直接调用中立接口
HTTP协议不可以
3) RPC(TCP/IP)通信协议是长链接
HTTP协议一般采用短链接 , 需要3次握手(可以配置长连接, 添加请求头
Keep-Alive: timeout=20)
4) RPC(TCP/IP)协议传递数据是加密压缩传输
HTTP协议需要传递大量的请求头信息
5) RPC(TCP/IP)协议一般都有注册中心 , 有丰富的监控机制
三 长连接
1 定义
指在一个连接上可以连续发送多个数据包
2 特点
在连接保存期间 , 如果没有数据包发送 , 需要双方发链路检测包
四 调用
1 同步分类
客户方等待调用执行完成并返回结果
2 异步调用
客户方调用后不用等待执行结果返回 , 但依然可以通过回调通知等方式获取返回结
果 , 若客户端不关心调用返回结果 , 则变成单向异步调用 , 单向调用不用返回结果
3 同步和异步的区分
在于是否等待服务端执行完成并返回结果
五 组件职责
1 RpcServer
负责到处(export)远程接口
2 RpcClient
负责导入(import)远程接口的代理实现
3 RpcProxy
远程接口的代理实现
4 RpcInvoker
客户方实现: 负责编码调用信息和发送调用请求到服务方并等待调用结果返回
服务方实现: 负责调用服务端接口的具体实现并返回调用结果
5 RpcProtocol
负责协议编码和解码
6 RpcConnector
负责维护客户方和服务方的连接通道和发送数据到服务方
7 RpcAcceptor
负责接收客户方请求并返回请求结果
8 RpcProcessor
负责在服务方控制调用过程 , 包括管理调用线程池 , 超时时间等
9 RpcChannel
数据传输通道