RPC框架|青训营笔记

156 阅读5分钟

RPC框架|青训营笔记

这是我参与「第五届青训营」笔记创作活动的第十三天,学习了分布式基石RPC框架相关内容。

远程函数调用RPC

场景:

  • image.png 问题:
  • 函数映射
  • 数据转化为字节流
  • 网络传输

RPC概念模型

  • image.png
  • 组成:User,User-Stub,RPC-Runtime,Server-Stub,Server
  • 基本概念
    • IDL文件:中立方式描述双方接口,使不同平台上的对象和不同语言的程序可以相互通信
    • 生成代码:通过编译器工具把IDL转化为对应语言的静态库
    • 编解码:即序列化和反序列化
    • 通信协议:规范数据传输的内容和格式
    • 网络传输:成熟网络库 TCP/UDP传输。
  • 流程
    • image.png
  • 优点
    • 单一职责,便于分工协助和运维开发
    • 可扩展性强,资源利用率高
    • 故障隔离,可靠性更高
  • 弊端:
    • 服务宕机,对方无法处理
    • 调用过程中网络异常,保证消息可达
    • 请求量突增导致服务无法及时处理

分层设计

image.png

  • 编解码层(生成代码+框架的编解码层) k3u1fbpfcp/3add063cb9a5496a84d2b2c0a5ec7d6f~tplv-k3u1fbpfcp-watermark.image?)
    • 生成代码
      • image.png
    • 数据格式
      • 语言的格式
      • 文本格式:JSON,XML,CSV
      • 二进制编码:Protobuf,BinaryProtocol。跨语言,高性能。
    • 编码选型:
      • 兼容性,支持自动增加新字段,而不影响老服务。
      • 通用性:跨平台,语言
      • 性能:编码后数据大小和编码时长。
  • 协议层
    • 概念
      • 特殊结束符
        • 一个特殊字符作为每个协议单元结束的标示 eg:HTTP中的 \r\n
      • 变长协议
        • 以定长加不定长部分组成,其中定长部分需要描述不定长的内容长度
    • 协议构造 Theader (appache thrift)
      • image.png
      • 多路复用:一个连接中多个请求
    • 协议解析
      • image.png
  • 网络通信层
    • sockets API
      • 位置(应用层和传输层之间)
        • image.png
      • 流程
        • image.png
      • 网络库
        • image.png

关键指标

  • 稳定性
    • 保障策略(降级模式)
      • 熔断:保护调用方,防止被调用的服务出现问题影响整个链路
      • 限流:保护被调用方,防止大流量把服务压垮
      • 超时控制:避免浪费资源在不可用节点上。
    • 请求成功率
      • 负载均衡
      • 重试
    • 长尾请求
      • 概念: 明显高于平均响应时间的请求
      • Backup Request (备份请求)
        • image.png
      • 注册中间件
        • image.png
  • 易用性
    • 开箱即用:合理的默认参数选项,丰富文档
    • 周边工具:生成代码工具,脚手架工具
  • 扩展性
    • 中间件,参数,编解码层,协议层,网络层,插件扩展
      • image.png
  • 观测性
    • 内置观测性服务
    • Log(日志),Metric(监控),tracing(链路跟踪)
  • 高性能
    • image.png

标题:RPC 框架分层设计 - 掘金

网址:juejin.cn/course/byte…

远程函数调用RPC

场景:

  • image.png 问题:
  • 函数映射
  • 数据转化为字节流
  • 网络传输

RPC概念模型

  • image.png
  • 组成:User,User-Stub,RPC-Runtime,Server-Stub,Server
  • 基本概念
    • IDL文件:中立方式描述双方接口,使不同平台上的对象和不同语言的程序可以相互通信
    • 生成代码:通过编译器工具把IDL转化为对应语言的静态库
    • 编解码:即序列化和反序列化
    • 通信协议:规范数据传输的内容和格式
    • 网络传输:成熟网络库 TCP/UDP传输。
  • 流程
    • image.png
  • 优点
    • 单一职责,便于分工协助和运维开发
    • 可扩展性强,资源利用率高
    • 故障隔离,可靠性更高
  • 弊端:
    • 服务宕机,对方无法处理
    • 调用过程中网络异常,保证消息可达
    • 请求量突增导致服务无法及时处理

分层设计

image.png

  • 编解码层(生成代码+框架的编解码层) k3u1fbpfcp/3add063cb9a5496a84d2b2c0a5ec7d6f~tplv-k3u1fbpfcp-watermark.image?)
    • 生成代码
      • image.png
    • 数据格式
      • 语言的格式
      • 文本格式:JSON,XML,CSV
      • 二进制编码:Protobuf,BinaryProtocol。跨语言,高性能。
    • 编码选型:
      • 兼容性,支持自动增加新字段,而不影响老服务。
      • 通用性:跨平台,语言
      • 性能:编码后数据大小和编码时长。
  • 协议层
    • 概念
      • 特殊结束符
        • 一个特殊字符作为每个协议单元结束的标示 eg:HTTP中的 \r\n
      • 变长协议
        • 以定长加不定长部分组成,其中定长部分需要描述不定长的内容长度
    • 协议构造 Theader (appache thrift)
      • image.png
      • 多路复用:一个连接中多个请求
    • 协议解析
      • image.png
  • 网络通信层
    • sockets API
      • 位置(应用层和传输层之间)
        • image.png
      • 流程
        • image.png
      • 网络库
        • image.png

关键指标

  • 稳定性
    • 保障策略(降级模式)
      • 熔断:保护调用方,防止被调用的服务出现问题影响整个链路
      • 限流:保护被调用方,防止大流量把服务压垮
      • 超时控制:避免浪费资源在不可用节点上。
    • 请求成功率
      • 负载均衡
      • 重试
    • 长尾请求
      • 概念: 明显高于平均响应时间的请求
      • Backup Request (备份请求)
        • image.png
      • 注册中间件
        • image.png
  • 易用性
    • 开箱即用:合理的默认参数选项,丰富文档
    • 周边工具:生成代码工具,脚手架工具
  • 扩展性
    • 中间件,参数,编解码层,协议层,网络层,插件扩展
      • image.png
  • 观测性
    • 内置观测性服务
    • Log(日志),Metric(监控),tracing(链路跟踪)
  • 高性能
    • image.png

标题:RPC 框架分层设计 - 掘金

网址:juejin.cn/course/byte…