RPC:Remote Procedure Call 即远程过程调用
是一种常见的一种通信方法,从跨进程到跨物理机以及有即使年历史

理论知识:

跨进程交互形式:

RestFul、WebService、HTTP、基于DB做数据交互、基于MQ数据交互、以及RPC

图解交互形式:

image.png

现有框架对比

image.png

核心原理(整体架构)

RPC Server -->(暴露服务,具体信息注册到注册中心) Registry -->(通知给消费者) RPC Client

技术栈

基础知识:javaCore、maven、反射
动态代理:java动态代理(生成存根实际调用对象)
序列化:fastjson(java对象转为二进制数据再转java对象)
网络通信:jetty、URLConnection(传输序列化后的数据)

实战篇

一、准备就绪

1. 创建工程、制定协议、通用工具方法
2. 实现序列化模块
3. 实现网络模块
4. 实现server模块
5. 实现client模块
6. gk-rpc实用案例

二、类图
image.png

1. 协议模块:描述信息、请求数据,响应数据
2. 序列化模块:序列化和反序列化
3. 网络模块:client和Server
4. server模块:将服务信息暴露到ServiceManager
5. client模块:RemoteInvoker请求数据和返回数据,多个请求就TransportSelecter抽象进行随机选择器