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

53 阅读2分钟

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

一、本堂课重点内容

  • RPC框架

二、详细知识点介绍

1.基本概念

  • 本地函数调用

  • 远程函数调用(RPC-Remote Procedure Calls):需要解决的问题

    1. 函数映射
    2. 数据转化成字节流
    3. 网络传输
  • RPC概念模型

  • 一次RPC的完整过程

    1. IDL文件:通过中立的方式来描述接口,使得在不同平台上运行得对象和用不同语言编写得程序可以互相通信。
    2. 生成代码:通过编译器工具把IDL文件转换成语言对应得静态库。
    3. 编解码:从内存中表示到字节序列得转换称为编码,反之为解码,也常叫做序列化和发序列化。
    4. 通信协议:规范了数据在网络传输内容和格式。除必须得请求/响应数据外,通常还会包含额外的元数据。
    5. 网络传输:通常基于成熟得网络库走TCP/UDP传输。
  • RPC得好处

    1. 单一职责,有利于协助和运维开发。
    2. 可扩展性强,资源使用率更优。
    3. 故障隔离,服务的整体可靠性更高。
  • 问题:服务宕机、请求了突增服务无法及时处理

2.分层设计

  • 用户自己编写的业务逻辑代码

  • 通过代码生成工具把IDL文件转换成不同语言对应得lib代码,里面封装了编解码逻辑

  • 框架得编解码层

    数据格式:

    • 语言特定的格式:许多编程语言内建了将内存对象编码为字节序列的支持
    • 文本格式:JSON、XML、CSV等文本格式
    • 二进制编码:具备跨语言和高性能等优点。

    选型:

    • 兼容性
    • 通用性
    • 性能
  • 框架的协议层

    概念:

    • 特殊结束符:一个特殊字符作为每个协议单元结束的标示
    • 变长协议:一定长加不定长的部分组成,其中定长的部分需要描述不定长的内容长度
  • 框架的网络通信层

    • Sockets API
    • 网络库:提供易用API、优雅退出、高性能定时器

3.关键指标

  • 稳定性

    • 保障策略:熔断、限流、超时控制
    • 请求成功率
    • 长尾请求
    • 注册中间件
  • 易用性

    开箱即用、代码生成工具

  • 扩展性

    • Middleware
    • Option
    • 编解码层
    • 协议层
    • 网络传输层
    • 代码生成工具插件扩展
  • 观测性

    • Log、Metric、Tracing
    • 内置观测性服务
  • 高性能

三、课后个人总结

今天学习的是RPC框架的详细概念,了解到该框架的的一些实用工具和实现基本流程,从底层逻辑上把RPC看一遍使我对该框架有更深层次的了解,相信自己能好好消化,加油!