后端day14-RPC原理与实践 | 青训营笔记

85 阅读2分钟

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

一、本堂课重点内容

本节课程主要分为四个方面:

  1. RPC 的基本概念
  2. RPC 框架的分层设计
  3. 衡量 RPC 框架的一些核心指标
  4. 字节内部 RPC 框架 Kitex 实践分享

二、详细知识点介绍

1 RPC 的基本概念
  • 实现远程调用需要解决的问题

    • 函数映射

    • 数据转换成字节流

    • 网络传输

  • 概念模型:RPC的过程由五个模型组成:User、User-Stub、RPC-Runtime、Server-Stub、Server。

    image-20230210113709201

  • 一次RPC的过程

    • IDL文件:描述接口,使得在不同平台上运行的对象和不同语言编写的程序可以相互通信。
    • 生成代码:把IDL文件转换成语言对应的静态库。
    • 编解码:从内存中的表示到字节序列的转换。
    • 通信协议:规范了数据在网络中的传输内容和格式。
    • 网络传输:基于成熟的网络库走TCP/UDP传输。
  • RPC的优点

    • 单一职责,有利于分工协作和运维开发。
    • 可扩展性强,资源使用率更优。
    • 故障隔离,服务的整体可靠性更高。
  • RPC框架需要解决的问题

    • 服务宕机,对方如何处理?
    • 调用过程中发生网络异常,如何保证消息的可达性?
    • 请求量突增导致服务无法及时处理,有哪些应对措施?
2 RPC分层设计
  • 整体架构(以Apache为例)

    image-20230210114133758

  • 编解码层

    • 数据格式:语言特定格式、文本格式、二进制编码。
    • 编码选型:兼容性、通用性、高性能。
  • 协议层

    • 消息切分

      • 特殊结束符。
      • 变长协议:length+body。
    • 协议构造

      image-20230210114320028

  • 网络通信层

    • Socket API的调用流程

      image-20230210114515453

    • 网络库选型:提供易用API、支持多种功能、高性能。

3 RPC 框架的核心指标
  • 稳定性

    • 保障策略:熔断、限流、超时。

    • 请求成功率:复杂均衡、重试。

    • 长尾请求:BackupRequest。

  • 易用性:开箱即用、周边工具。

  • 扩展性

  • 观测性:Log、Metric、Tracing、内置观测性服务。

  • 高性能

4 字节内部 Kitex 实践分享(略)