RPC框架学习总结 | 青训营

69 阅读3分钟

RPC框架基础简介

RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,它允许程序在不同的地址空间(通常在不同的机器上)调用远程的子程序(或称为过程、函数),就像调用本地的函数一样。RPC框架是为了简化和抽象远程调用过程,提供一套工具和机制,使得远程调用更加方便和可靠。

分层设计

RPC框架的编解码层、协议层和网络通信层是实现远程调用的关键组成部分。它们一起协同工作,负责将方法调用、参数和结果在不同机器间进行传输和通信。

编解码层

  • 编码:编码层负责将应用层的方法调用、参数和结果转化为协议层指定的格式,通常是序列化为字节流。不同的RPC框架可能支持不同的序列化格式,如JSON、Protocol Buffers、XML等。
  • 解码:在接收端,编解码层将字节流解码为应用层可用的数据结构,以便进行方法调用和参数传递。这样,远程调用就可以在网络上传输复杂的数据类型和对象。

协议层

  • 协议定义:协议层定义了远程调用的通信协议,包括请求和响应的结构、错误处理、身份验证和安全性要求等。它规定了如何封装方法调用、参数和结果,以及如何进行通信的各个方面。
  • 数据格式:协议层定义了数据的格式,使得不同的系统可以理解并解析请求和响应。例如,协议层可以指定请求包含方法名、参数列表等信息,以及响应包含结果或错误信息。

网络通信层

  • 连接管理:网络通信层负责建立、维护和关闭网络连接。在大多数情况下,RPC框架会使用底层的网络协议,如TCP或HTTP/2,来实现稳定的数据传输。
  • 数据传输:网络通信层将编码后的数据通过网络传输到远程服务端。它处理数据的分割、传输和接收,确保数据完整性和正确性。
  • 异常处理:网络通信层处理网络异常,如连接断开、超时等情况。它可以触发错误处理机制,确保远程调用的可靠性。

关键指标

稳定性

  • 熔断保护调用方,防止被调用的服务出现问题而影响到整个链路
  • 限流保护被调用方,防止大流量把服务压垮,让服务器直接降级处理或者返回给调用方一个限流异常
  • 超时控制下游服务主动停掉一些不太重要的业务,释放出服务器资源,避免浪费资源在不可用节点上

易用性

  • 开箱即用合理的默认参数选项、丰富的文档
  • 周边工具生成代码工具、脚手架工具

扩展性

拥有Middleware、Option、编解码层、协议层、网络传输层、代码生成工具插件这样的扩展。

观测性

Log、Metirc、Tracing、内置观测性服务如当前的环境变量、配置、Client/Server初始化参数、缓存信息等。

高性能

高性能意味着高吞吐和低延迟,两者都很重要,甚至大部分场景下低延迟更重要。多路复用可以大大减少连接带来的资源消耗,并且提升服务器端的性能。

学习建议

学习RPC框架可以帮助你理解远程调用的概念、实现和应用,从而构建分布式系统。可以阅读文档、示例代码,尝试编写代码并解决问题。