这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
本节课程主要分为四个方面:
- RPC 相关的基本概念
- RPC 框架的分层设计
- 衡量 RPC 框架的一些核心指标
- 字节内部 RPC 框架 Kitex 实践分享
基本概念
rpc远程函数调用:解决的问题
1.函数映射 2.数据转换成字节流 3.网络传输
概念模型
任何 RPC 客户机-服务器程序的重要实体都包括 IDL 文件(接口定义文件)、客户机 stub、服务器 stub 以及由客户机和服务器程序共用的头文件。客户机和服务器 stub 使用 RPC 运行时库通信。RPC 运行时库提供一套标准的运行时例程来支持 RPC 应用程序。
分层设计
编解码层-生成代码:
客户端和服务端通过一份idl文件生成不同语言的codeGen
协议层:
特殊结束符 一个特殊字符作为每个协议单元结束的标示
变长协议 以定长加不定长的部分组成,其中定长的部分需要描述不定长的内容长度
协议构造
LENGTH:数据包大小,不包含自身
HEADER MAGIC:标识版本信息,协议解析时候快速校验
SEQUENCE NUMBER:表示数据包的seqID,可用于多路复用,单连接内递增
HEADER SIZE:头部长度,从第14个字节开始计算一直到 PAYLOAD前
PROTOCOL ID:编解码方式,有Binary和Compact两种
TRANSFORM ID:压缩方式,如zlib和 snappy
INFO ID:传递一些定制的meta 信息
PAYLOAD:消息体
协议解析
网络通信层
Sockets API
核心指标
-
稳定性
-
保障策略
- 熔断
- 限流
- 超时
-
请求成功率
- 负载均衡
- 重试
-
长尾请求
- BackupRequest
-
-
易用性
- 开箱即用
- 周边工具
- 扩展性
-
观测性
- Log
- Metric
- Tracing
- 内置观测性服务
-
高性能