什么是RPC
- RPC,全称Remote procedure calls,即远程过程调用,在Go中也称为远程函数调用
- 不同于本地函数调用,RPC一般部署在不同的服务里,由于不在同一内存空间,RPC需要用网络来传输数据
- 通过RPC,可以更方便快捷地构建分布式计算
RPC的优势
- 由于RPC可以跨多种开发工具和平台,使其更适合于协作开发
- RPC可以提高资源的复用率,提高系统的可拓展性
- 更高的传输效率以及更小的性能损耗,在提供了强大的远程调用能力时不失本地调用能力的简洁性
RPC框架
RPC框架一般采用分层设计的结构 ↓
- 编解码层
- 协议层
- 网络通信层
1. 编解码层
生成代码
- Client和Server依赖同一份IDL文件生成不同语言的CodeGen
- IDL文件: Interface definition file即接口定义文件吗,描述了服务接口的规范规则信息
2. 协议层
将通过编解码层转换成字节流的数据根据协议内容进行打包
- 数据在经过编解码层后并没有直接打包发送,只不过被转换成字节流形式
- 在协议层,会添加一些额外的数据,并根据协议内容,进行数据的打包
3. 网络通信层
一般会直接采用封装好的网络库来作为框架的网络通信层
网络库
- 提供简单易用的API
- 支持uds、tcp、udp协议,支持异常处理、优雅退出等
- 利用高性能定时器、对象池等实现性能的优化
文末小结
- 学习了RPC框架的基本概念以及框架结构
- 了解了RPC框架的优势
- 了解了二进制编码的实现原理
- 了解了网络库的基本架构和选型时需要考察的性能指标