萌新笔记06 Go语言RPC框架学习总结 | 青训营

83 阅读2分钟

什么是RPC

  • RPC,全称Remote procedure calls,即远程过程调用,在Go中也称为远程函数调用
  • 不同于本地函数调用,RPC一般部署在不同的服务里,由于不在同一内存空间,RPC需要用网络来传输数据
  • 通过RPC,可以更方便快捷地构建分布式计算

RPC的优势

  • 由于RPC可以跨多种开发工具和平台,使其更适合于协作开发
  • RPC可以提高资源的复用率,提高系统的可拓展性
  • 更高的传输效率以及更小的性能损耗,在提供了强大的远程调用能力时不失本地调用能力的简洁性

RPC框架

RPC框架一般采用分层设计的结构

  1. 编解码层
  2. 协议层
  3. 网络通信层 1.png

1. 编解码层

2.png

生成代码
  • Client和Server依赖同一份IDL文件生成不同语言的CodeGen
  • IDL文件: Interface definition file即接口定义文件吗,描述了服务接口的规范规则信息

2. 协议层

将通过编解码层转换成字节流的数据根据协议内容进行打包 3.png

  • 数据在经过编解码层后并没有直接打包发送,只不过被转换成字节流形式
  • 在协议层,会添加一些额外的数据,并根据协议内容,进行数据的打包

3. 网络通信层

一般会直接采用封装好的网络库来作为框架的网络通信层 4.png

网络库
  • 提供简单易用的API
  • 支持uds、tcp、udp协议,支持异常处理、优雅退出等
  • 利用高性能定时器、对象池等实现性能的优化

文末小结

  • 学习了RPC框架的基本概念以及框架结构
  • 了解了RPC框架的优势
  • 了解了二进制编码的实现原理
  • 了解了网络库的基本架构和选型时需要考察的性能指标