RPC简介

Remote Procedue Call 远程过程调用

向调用本地方法一样调用远程方法

RPC原理

1. 设计

  1. RPC是基于接口的
  2. 本地应用程序与远程应用程序,需要共享POJO与接口定义

即,想获得什么?通过什么样的形式?
POJO + 接口定义 我们称为 接口契约

2. 代理

Java 下,代理可以选择动态代理,或者 AOP 实现

3. 序列化

对象在服务之间,需要经过序列化/反序列化,以字节流传输

  • 语言原生的序列化:RMI
  • 二进制、与平台无关:Hessian
  • 文本、JSON、XML

4. 网络传输

  • TCP
  • HTTP/HTTPS

5. 查找实现类

通过接口查找服务端的实现类
一般是注册方式
例如 dubbo默认将接口和实现类配置到Spring

RPC框架

Hessian

Thrift

gRPC

典型rpc架构图
image.png