【java服务端开发】RPC学习(一)-RPC介绍
参考链接:
RPC简介
RPC(Remote Procedure Call Protocol),远程过程调用,指的是像调用本地服务一样调用服务器的服务。
按照相应方式,RPC分为两种:
- 同步调用:客户端调用服务方方法,等待,直到返回结果或超时,再返回继续操作。
- 异步调用:客户端把消息发送给中间件,返回继续操作。
RPC架构包含四个组件:
- 客户端(Client):服务调用方
- 客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方。
- 服务端存根(Sever Stub):接受客户端发过来的消息并解包,再调用本地服务。
- 服务端(Server):真正的服务提供者。
具体步骤:
- Client以本地调用方式调用服务。
- Client Stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体。
- Client Stub找到服务地址,并将消息通过网络发送到Server Stub。
- Server Stub收到消息后进行解码,根据解码结果调用Server服务。
- Server服务执行处理逻辑,将结果返回给Server Stub。
- Server Stub将返回结果打包后通过网络发送给Client Stub。
- Client Stub接受消息,解码,将解码结果(即最终结果)给Client。
- Client得到调用服务的最终结果。
RPC框架将2-7步封装,使用户能像调用本地服务一样调用远程服务。
RPC模块详解
- 服务端(Server):RPC服务的提供者,负责将RPC服务导出。
- 客户端(Client):RPC服务的消费者,负责调用RPC服务。
- 代理(Proxy):通过动态代理,提供对远程接口的代理实现。
- 执行器(Invoker):
- 对于客户端:主要负责服务调用的编码,调用请求发送和等待结果返回。
- 对于服务方:负责处理调用逻辑并返回调用结果。
- 协议管理(Protocol):协议管理组件,负责整个RPC通信协议的编/解码。
- 连接端口(Processor):负责维持客户方和服务方的长连接通道。
- 后台处理(Processor):负责整个调用服务中的管理调度,包括线程池,分发,异常处理等。
- 连接通道(Channel):客户端和服务端的数据传输通道。