RPC原理与实现 | 青训营笔记

57 阅读2分钟

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

写在开头

本人是一个第一次参加字节青训营的学生,主要是简单记录一下自己学习的过程以及复习(详细的需要自己去看每天对应的课程),每天会发前一天课程的笔记或者是自己的思考

什么是RPC ?

RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。

  • 相比本地函数调用,RPC调用需要解决的问题

    • 函数映射
    • 数据转换成字节流
    • 网络传输
  • 一次 RPC 的完整过程(IDL文件,通过中立独立的方式描述接口,使不同平台的对象和不同语言的程序相互通信,把IDL文件转换成语言对应的静态库,然后序列化和反序列化,通讯协议和网络通讯)

  • RPC的好处(单一职责,利于分工和运维开发,可扩展性强,资源使用更优,故障隔离,整体可靠性高)

  • RPC 带来的问题将由 RPC 框架来解决

    • 服务宕机如何感知?
    • 遇到网络异常应该如何应对?
    • 请求量暴增怎么处理?

框架特性

  • RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销。
  • RPC框架一般都有注册中心,有丰富的监控管理。发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作协议私密,安全性较高
  • RPC 协议更简单内容更小,效率更高,服务化架构、服务化治理,RPC框架是一个强力的支撑。

RPC 框架核心指标

稳定性

  • 保障策略

    • 熔断(保护调用方,防止被调用的服务出现问题影响整个链路)
    • 限流(保护被调用方,防止大流量把服务压垮)
    • 超时控制(避免资源浪费在不可用节点)

从某种程度上讲超时、限流和熔断也是一种服务降级的手段 。

  • 请求成功率

    • 负载均衡
    • 重试(设置次数防止重试风暴)
  • 注册中间件

  • 长尾请求

    • BackupRequest