自定义的RPC框架:从脚手架到框架
文章目录
- 自定义的RPC框架:从脚手架到框架
- 一、RPC框架的关键点
- 二、V1版:RPC脚手架
- 三、V2版:RPC框架
- 3.1 [`rpcfx-core`](https://github.com/hefrankeleyn/JAVARebuild/tree/main/projects/myrpcfxpro02/rpcfx-core) rpc框架的核心内容
- 3.2 [`rpcfx-demo-api`](https://github.com/hefrankeleyn/JAVARebuild/tree/main/projects/myrpcfxpro02/rpcfx-demo-api) 实体类和服务接口
- 3.3 [`rpcfx-demo-consumer`](https://github.com/hefrankeleyn/JAVARebuild/tree/main/projects/myrpcfxpro02/rpcfx-demo-consumer) 客户端
- 3.4 [`rpcfx-demo-provider`](https://github.com/hefrankeleyn/JAVARebuild/tree/main/projects/myrpcfxpro02/rpcfx-demo-provider) 服务端
一、RPC框架的关键点
- 本地和服务器端都需要实体类和接口定义;
- 代理
- 序列化
- 网络传输
- 查找实现类
二、V1版:RPC脚手架
项目:myrpcfxpro01,分为三个部分:rpcfx-api、rpcfx-client、rpcfx-server。
(1)rpcfx-api
- 封装了请求参数对象类RpcfxRequest和响应的返回值对象类RpcfxResponse;
- 定义了本地(client端)和远程(server端)都需要的POJO实体类和接口类,例如:实体类User、接口类UserService;
(2)rpcfx-client
- 定义的
Rpcfx类为核心,通过动态代理创建出远程服务的对象; - 动态代理中,通过
OkHttpClient请求远程服务; - 在
RpcfxClientApplication中测试,通过运行main方法,想调用本地方法一样调用远程服务的功能;
(3)rpcfx-server
RpcfxServerApplication中通过Spring容器查找实现类,通过反射调用实现类的方法;UserServiceImpl为具体的实现类;
三、V2版:RPC框架
项目:myrpcfxpro02,重构升级为RPC框架。
3.1 rpcfx-core rpc框架的核心内容
(1)api 部分
- 封装了请求参数对象类RpcfxRequest和响应的返回值对象类RpcfxResponse。
- 定义用于查找服务对象的接口RpcfxResolver。
(2)client部分
- 定义了Rpcfx类,创建代理对象,代理对象调用远程服务方法;
(3)server部分
- 提取出RpcfxInvoker,查找本地服务,通过反射执行服务方法;
3.2 rpcfx-demo-api 实体类和服务接口
定义客户端和服务器端都需要的实体类和接口定义。
需要时,可以不断的扩展,例如添加订单实体和订单服务接口
3.3 rpcfx-demo-consumer 客户端
定义客户端,像调用本地一样调用远程服务:RpcfxClientApplication
3.4 rpcfx-demo-provider 服务端
- 提供真实的服务实现:UserServiceImpl、OrderServiceImpl
- 定义用于查找服务对象的接口的实现类:DemoResolver
- 用Spring容器管理Bean:BeanConfig
- 提供远程调用的接口:RpcfxServerApplication
538



被折叠的 条评论
为什么被折叠?



