RPC框架需要由以下几个角色构成
- 服务注册与发现中心
- 服务提供方
- 服务消费方
1. 服务注册与发现中心
提供以下几个功能
- 服务注册
- 服务状态监控
- 服务状态更新通知
成熟的产品有:
- Nacos(AP/CP)
- Eureka(AP)
- Consul(CP)
- Zookeeper(CP)
建议使用AP架构的产品
2. 服务提供方
服务提供方有以下几个职责:
- 当服务启动的时候, 向注册中心, 注册自己
- 维持与注册中心的心跳连接
- 向服务消费方提供服务
3. 服务消费方
服务消费方有以下几个职责:
- 当启动的时候, 向注册中心获取依赖的服务信息
- 向注册中心监听服务变更
- 向服务提供方请求服务
- 创建一个连接池, 动态的管理服务的连接
4. 通信方式
4.1 使用通用的应用层协议
目前有不少框架是通过现有的应用层协议去做通信, 例如feign使用的是HTTP协议
4.2 使用自定的应用层协议
也有不少框架是自己设计的协议, 比如Dubbo
4.3 TCP还是UDP
各种RPC框架基本都是建立在TCP协议上
当服务消费方发现服务提供方的时候, 建立TCP的长连接
目前使用UDP协议不太适合做RPC框架的网络层协议, 因为调用方是需要知道执行结果的, 使用UDP编程比较麻烦
而且RPC框架一般使用在内网环境, TCP协议也能够提供非常好的性能