这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记。
主要内容
- RPC 相关的基本概念
- 衡量 RPC 框架的一些核心指标
- 字节内部 RPC 框架 Kitex 实践分享
背景
- 随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长的请求压力时,就需要多台服务器联合起来构成「服务集群」共同对外提供服务。
- 同时业务服务会随着产品需求的增多越来越肿,架构上必须进行服务拆分,一个完整的大型服务会被打散成很多很多独立的小服务,每个小服务会由独立的进程去管理来对外提供服务,这就是「微服务」。
- 当用户的请求到来时,我们需要将用户的请求分散到多个服务去各自处理,然后又需要将这些子服务的结果汇总起来呈现给用户。那么服务之间该使用何种方式进行交互就是需要解决的核心问题。RPC 就是为解决服务之间信息交互而发明和存在的。
RPC 相关的基本概念
一次RPC的完整过程
- IDL (Interface description language)文件 IDL通过—种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
- 生成代码 通过编译器工具把IDL文件转换成语言对应的静态库
- 编解码 从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做序列化和反序列化
- 通信协议 规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据
- 网络传输 通常基于成熟的网络库走 TCP/UDP传输
衡量 RPC 框架的一些核心指标
- 稳定性-请求成功率
- 稳定性-保障策略
- 稳定性-长尾请求
- 稳定性-注册中间件
- 易用性
- 扩展性
- 观测性
- 高性能