RPC简介
Remote Procedue Call 远程过程调用
向调用本地方法一样调用远程方法
RPC原理
1. 设计
- RPC是基于接口的
- 本地应用程序与远程应用程序,需要共享POJO与接口定义
即,想获得什么?通过什么样的形式?
POJO + 接口定义 我们称为 接口契约
2. 代理
Java 下,代理可以选择动态代理,或者 AOP 实现
3. 序列化
对象在服务之间,需要经过序列化/反序列化,以字节流传输
- 语言原生的序列化:RMI
- 二进制、与平台无关:Hessian
- 文本、JSON、XML
4. 网络传输
- TCP
- HTTP/HTTPS
5. 查找实现类
通过接口查找服务端的实现类
一般是注册方式
例如 dubbo默认将接口和实现类配置到Spring
RPC框架
Hessian
Thrift
gRPC
典型rpc架构图