RPC框架|青训营笔记
这是我参与「第五届青训营」笔记创作活动的第十三天,学习了分布式基石RPC框架相关内容。
远程函数调用RPC
场景:
问题:
- 函数映射
- 数据转化为字节流
- 网络传输
RPC概念模型
- 组成:User,User-Stub,RPC-Runtime,Server-Stub,Server
- 基本概念
- IDL文件:中立方式描述双方接口,使不同平台上的对象和不同语言的程序可以相互通信
- 生成代码:通过编译器工具把IDL转化为对应语言的静态库
- 编解码:即序列化和反序列化
- 通信协议:规范数据传输的内容和格式
- 网络传输:成熟网络库 TCP/UDP传输。
- 流程
- 优点
- 单一职责,便于分工协助和运维开发
- 可扩展性强,资源利用率高
- 故障隔离,可靠性更高
- 弊端:
- 服务宕机,对方无法处理
- 调用过程中网络异常,保证消息可达
- 请求量突增导致服务无法及时处理
分层设计
- 编解码层(生成代码+框架的编解码层)
k3u1fbpfcp/3add063cb9a5496a84d2b2c0a5ec7d6f~tplv-k3u1fbpfcp-watermark.image?)
- 生成代码
- 数据格式
- 语言的格式
- 文本格式:JSON,XML,CSV
- 二进制编码:Protobuf,BinaryProtocol。跨语言,高性能。
- TLV编码
- Tag:标签
- Length:长度
- Value:值,value可以是TLV结构
- 
- 多路复用:一个连接中多个请求
- 协议解析
- 概念
- 网络通信层
- sockets API
- 位置(应用层和传输层之间)
- 流程
- 网络库
- 位置(应用层和传输层之间)
- sockets API
关键指标
- 稳定性
- 保障策略(降级模式)
- 熔断:保护调用方,防止被调用的服务出现问题影响整个链路
- 限流:保护被调用方,防止大流量把服务压垮
- 超时控制:避免浪费资源在不可用节点上。
- 请求成功率
- 负载均衡
- 重试
- 长尾请求
- 概念: 明显高于平均响应时间的请求
- Backup Request (备份请求)
- 注册中间件
- 保障策略(降级模式)
- 易用性
- 开箱即用:合理的默认参数选项,丰富文档
- 周边工具:生成代码工具,脚手架工具
- 扩展性
- 中间件,参数,编解码层,协议层,网络层,插件扩展
- 中间件,参数,编解码层,协议层,网络层,插件扩展
- 观测性
- 内置观测性服务
- Log(日志),Metric(监控),tracing(链路跟踪)
- 高性能
标题:RPC 框架分层设计 - 掘金
远程函数调用RPC
场景:
问题:
- 函数映射
- 数据转化为字节流
- 网络传输
RPC概念模型
- 组成:User,User-Stub,RPC-Runtime,Server-Stub,Server
- 基本概念
- IDL文件:中立方式描述双方接口,使不同平台上的对象和不同语言的程序可以相互通信
- 生成代码:通过编译器工具把IDL转化为对应语言的静态库
- 编解码:即序列化和反序列化
- 通信协议:规范数据传输的内容和格式
- 网络传输:成熟网络库 TCP/UDP传输。
- 流程
- 优点
- 单一职责,便于分工协助和运维开发
- 可扩展性强,资源利用率高
- 故障隔离,可靠性更高
- 弊端:
- 服务宕机,对方无法处理
- 调用过程中网络异常,保证消息可达
- 请求量突增导致服务无法及时处理
分层设计
- 编解码层(生成代码+框架的编解码层)
k3u1fbpfcp/3add063cb9a5496a84d2b2c0a5ec7d6f~tplv-k3u1fbpfcp-watermark.image?)
- 生成代码
- 数据格式
- 语言的格式
- 文本格式:JSON,XML,CSV
- 二进制编码:Protobuf,BinaryProtocol。跨语言,高性能。
- TLV编码
- Tag:标签
- Length:长度
- Value:值,value可以是TLV结构
- 
- 多路复用:一个连接中多个请求
- 协议解析
- 概念
- 网络通信层
- sockets API
- 位置(应用层和传输层之间)
- 流程
- 网络库
- 位置(应用层和传输层之间)
- sockets API
关键指标
- 稳定性
- 保障策略(降级模式)
- 熔断:保护调用方,防止被调用的服务出现问题影响整个链路
- 限流:保护被调用方,防止大流量把服务压垮
- 超时控制:避免浪费资源在不可用节点上。
- 请求成功率
- 负载均衡
- 重试
- 长尾请求
- 概念: 明显高于平均响应时间的请求
- Backup Request (备份请求)
- 注册中间件
- 保障策略(降级模式)
- 易用性
- 开箱即用:合理的默认参数选项,丰富文档
- 周边工具:生成代码工具,脚手架工具
- 扩展性
- 中间件,参数,编解码层,协议层,网络层,插件扩展
- 中间件,参数,编解码层,协议层,网络层,插件扩展
- 观测性
- 内置观测性服务
- Log(日志),Metric(监控),tracing(链路跟踪)
- 高性能
标题:RPC 框架分层设计 - 掘金