RPC框架 | 青训营笔记

79 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记

rpc需要解决的问题

  1. 函数映射
  2. 数据转换成字节流
  3. 网络传输

一次rpc的过程

image.png

RPC中的一些概念

IDL

接口定义语言,用于描述接口,使得不同平台上运行的对象和不同语言编写的程序可以互相通信

生成代码

通过编译工具吧IDL文件转换成语言对应的静态库

编解码

从内存中表示到字节序列的转换成为编码,反之是解码

通信协议

规范了数据在网络中的传输内容和格式。除了必须的的请求和响应数据外,通常包括额外的元数据

网络传输

通常基于成熟的网络库,TCP/UDP

RPC的好处

  1. 单一职责
  2. 可扩展性强,资源使用率更高
  3. 故障隔离,服务整体可靠性更好

RPC带来的问题(RPC框架可以解决)

  1. 服务宕机,调用方该如何处理
  2. 调用过程中网络出现异常,如何保证消息可达?
  3. 请求量突增,导致服务无法及时处理该怎么办?

RPC架构的分层设计

image.png

1. 编解码层

通过代码生成工具把IDL文件转换成不同语言对应的库,其中封装了编解码逻辑。

2. 协议层

定义数据传输的包头

3. 网络通信层

选择使用TCP或者UDP传输数据

RPC框架的指标

1. 稳定性

保障策略

  1. 熔断:保护调用方,防止被调用的服务出现问题,而影响整个链路
  2. 限流:保护被调用方,防止大流量把服务压垮
  3. 超时控制:避免浪费资源在不可用节点上 请求成功率
  4. 负载均衡
  5. 重试 实现方式:注册中间件

2. 易用性

开箱即用,有生成代码工具,脚手架工具

3. 扩展性

中间件,Option,编解码,协议层,网络传输,代码生成工具插件

4. 观测性

log,metric,tracing,内置观测服务

5. 高性能

通过连接池,多路复用,高性能编解码协议,高性能网络库实现高吞吐,低延迟