这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
写在开头
本人是一个第一次参加字节青训营的学生,主要是简单记录一下自己学习的过程以及复习(详细的需要自己去看每天对应的课程),每天会发前一天课程的笔记或者是自己的思考
什么是RPC ?
RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。
-
相比本地函数调用,RPC调用需要解决的问题
- 函数映射
- 数据转换成字节流
- 网络传输
-
一次 RPC 的完整过程(IDL文件,通过中立独立的方式描述接口,使不同平台的对象和不同语言的程序相互通信,把IDL文件转换成语言对应的静态库,然后序列化和反序列化,通讯协议和网络通讯)
-
RPC的好处(单一职责,利于分工和运维开发,可扩展性强,资源使用更优,故障隔离,整体可靠性高)
-
RPC 带来的问题将由 RPC 框架来解决
- 服务宕机如何感知?
- 遇到网络异常应该如何应对?
- 请求量暴增怎么处理?
框架特性
- RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销。
- RPC框架一般都有注册中心,有丰富的监控管理。发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作协议私密,安全性较高
- RPC 协议更简单内容更小,效率更高,服务化架构、服务化治理,RPC框架是一个强力的支撑。
RPC 框架核心指标
稳定性
-
保障策略
- 熔断(保护调用方,防止被调用的服务出现问题影响整个链路)
- 限流(保护被调用方,防止大流量把服务压垮)
- 超时控制(避免资源浪费在不可用节点)
从某种程度上讲超时、限流和熔断也是一种服务降级的手段 。
-
请求成功率
- 负载均衡
- 重试(设置次数防止重试风暴)
-
注册中间件
-
长尾请求
- BackupRequest