这是我参与「第五届青训营」伴学笔记创作活动的第 14 天
一、本堂课重点内容
本节课程主要分为四个方面:
- RPC 的基本概念
- RPC 框架的分层设计
- 衡量 RPC 框架的一些核心指标
- 字节内部 RPC 框架 Kitex 实践分享
二、详细知识点介绍
1 RPC 的基本概念
-
实现远程调用需要解决的问题
-
函数映射
-
数据转换成字节流
-
网络传输
-
-
概念模型:RPC的过程由五个模型组成:User、User-Stub、RPC-Runtime、Server-Stub、Server。
-
一次RPC的过程
- IDL文件:描述接口,使得在不同平台上运行的对象和不同语言编写的程序可以相互通信。
- 生成代码:把IDL文件转换成语言对应的静态库。
- 编解码:从内存中的表示到字节序列的转换。
- 通信协议:规范了数据在网络中的传输内容和格式。
- 网络传输:基于成熟的网络库走TCP/UDP传输。
-
RPC的优点
- 单一职责,有利于分工协作和运维开发。
- 可扩展性强,资源使用率更优。
- 故障隔离,服务的整体可靠性更高。
-
RPC框架需要解决的问题
- 服务宕机,对方如何处理?
- 调用过程中发生网络异常,如何保证消息的可达性?
- 请求量突增导致服务无法及时处理,有哪些应对措施?
2 RPC分层设计
-
整体架构(以Apache为例)
-
编解码层
- 数据格式:语言特定格式、文本格式、二进制编码。
- 编码选型:兼容性、通用性、高性能。
-
协议层
-
消息切分
- 特殊结束符。
- 变长协议:length+body。
-
协议构造
-
-
网络通信层
-
Socket API的调用流程
-
网络库选型:提供易用API、支持多种功能、高性能。
-
3 RPC 框架的核心指标
-
稳定性
-
保障策略:熔断、限流、超时。
-
请求成功率:复杂均衡、重试。
-
长尾请求:BackupRequest。
-
-
易用性:开箱即用、周边工具。
-
扩展性
-
观测性:Log、Metric、Tracing、内置观测性服务。
-
高性能