RPC框架的基础 - 图1

RPC框架需要由以下几个角色构成

  1. 服务注册与发现中心
  2. 服务提供方
  3. 服务消费方

1. 服务注册与发现中心

提供以下几个功能

  1. 服务注册
  2. 服务状态监控
  3. 服务状态更新通知

成熟的产品有:

  1. Nacos(AP/CP)
  2. Eureka(AP)
  3. Consul(CP)
  4. Zookeeper(CP)

建议使用AP架构的产品

2. 服务提供方

服务提供方有以下几个职责:

  1. 当服务启动的时候, 向注册中心, 注册自己
  2. 维持与注册中心的心跳连接
  3. 向服务消费方提供服务

3. 服务消费方

服务消费方有以下几个职责:

  1. 当启动的时候, 向注册中心获取依赖的服务信息
  2. 向注册中心监听服务变更
  3. 向服务提供方请求服务
  4. 创建一个连接池, 动态的管理服务的连接

4. 通信方式

4.1 使用通用的应用层协议

目前有不少框架是通过现有的应用层协议去做通信, 例如feign使用的是HTTP协议

4.2 使用自定的应用层协议

也有不少框架是自己设计的协议, 比如Dubbo

4.3 TCP还是UDP

各种RPC框架基本都是建立在TCP协议上
当服务消费方发现服务提供方的时候, 建立TCP的长连接

目前使用UDP协议不太适合做RPC框架的网络层协议, 因为调用方是需要知道执行结果的, 使用UDP编程比较麻烦
而且RPC框架一般使用在内网环境, TCP协议也能够提供非常好的性能