RPC丨青训营笔记

92 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 9 天

本文同步发布于博客(xblc.netlify.app),如果有更新博客会在第一时间更新

‌深入浅出 RPC 框架 副本.pptx - 飞书云文档

【后端专场 学习资料五】第五届字节跳动青训营 - 掘金

基本概念

RPC (Remote Procedure Calls) 调用和本地函数的区别

  1. 函数映射:远程调用的时候要如何知道该调用这个函数呢?还有定位问题,本地可以用指针,函数只能用id
  2. 数据流转换成字节流
  3. 网络传输

RPC 概念模型

这里的 Stub 是一个打包解包参数和结果的过程的过程,有点“票根”的意思

image.png

RPC 的完整过程

  • IDL 文件:接口通信语言,很重要,比如说 ProtoBuf ,使得不同平台上的不同语言可以相互通信
  • 生成代码:通过编译器工具将IDL文件转换成静态库
  • 解编码:数据流和字节流、序列化和反序列化
  • 通信协议:规范了格式,额外的元数据
  • 网络传输:成熟的网络库 + TCP / UDP传输

image.png

RPC 好处和带来的问题

好处主要是能够隔离分别处理,效率高 问题是服务器宕机不好处理

由RPC框架解决

分层设计

image.png

编解码层

不同的人使用同一份 IDL 文件生成不同的 CodeGen

数据格式

  • 语言特定的格式
  • 文本格式
  • 二进制编码:跨语言、高性能,ProtoBuf就是一种,常见的还有Thrift 的 BinaryProtocol

二进制编码

一般使用 TLV 编码

  • Tag 类似于类型
  • Length
  • Value 值也可以是另一个 TLV 结构

选型

  • 兼容性
  • 通用性

协议层

概念

  • 特殊结束符:以此作为协议单元结束的标志
  • 变长协议:类似于计组里的变长指令

协议构造

  • HEADER MAGIC:标识版本信息,用于快速校验
  • PROTOCOL:解编码方式 Binary or Compact
  • TRANSFORM ID:压缩方式
  • INFO ID: 定制元数据
  • PAYLOAD:消息体

image.png

……

网络通信层

Sockets API

image.png

……

关键指标分析

企业实践

主要是为了跳出课本以外,接触企业实践

整体架构 —— Kitex