深入浅出RPC框架 | 青训营笔记

132 阅读4分钟

目标

  • 深入浅出RPC框架

1 RPC介绍

image.png

  • RPC - Remote Procedure Calls 远程函数调用

  • 函数映射

    • 远程设备上进程与请求进程地址空间不一致,通常通过函数ID来确定调用的函数
    • 数据转换为字节流
  • 数据转换成字节流

    • 序列化
  • 网络传输

  • 结构

    • User
    • User-Stub
    • RPC-Runtime
    • Server-Stub
    • Server
  • 一次RPC的流程

    1. IDL文件(Interface description language)
      • IDL通过中立的方式描述接口
      • 不同平台/语言上运行的对象可以相互通信
    2. 生成代码
      • 借助编译器将IDL文件转成语言对应的静态库
    3. 编解码
      • 序列化与反序列化
    4. 通信协议
      • 数据传输的格式和内容,包括额外的元数据
    5. 网络传输
      • 通常基于成熟网络库,走TCP/UDP
  • 优点

    • 单一职责,利于分工和运维
    • 可扩展性强,资源使用率高
    • 故障隔离
  • 挑战

    • 服务宕机,请求方如何应对
    • 调用过程中网络异常,保证消息可达
    • 请求量突增加,服务无法及时处理如何应对

2 RPC 框架分层设计

  • 编解码层

    • 将IDL文件转换成不同语言对应的lib代码
    • 编解码
      • 数据格式
        • 语言特定
        • 文本格式json,xml,csv
        • 二进制编码Protobuf等
      • 选型
        • 兼容、通用、性能
  • 协议层

    • 结束符
      • 特殊结束符:e.g. \r\n
      • 变长协议:Length + message
  • 网络通信层

    • 提供易用的API
      • 封装socketAPI
      • 连接管理和事件分发
    • 功能
      • 协议支持
      • 优雅退出、异常处理
    • 性能
      • 应用层buffer减少copy
      • 高性能定时器、对象池等

3 RPC 关键指标分析

  • 稳定性

    • 保障策略
      • 熔断、限流、超时控制
    • 请求成功率
      • 复杂均衡、重试
    • 长尾请求
      • Backup Request
    • 注册中间件
  • 易用性

    • 开箱即用
    • 周边工具
  • 扩展性

  • 观测性

  • 高性能

  • gpt的指标分析说明:

    • 延迟(Latency):表示从发送请求到接收到响应的时间。较低的延迟意味着系统响应更迅速。
    • 吞吐量(Throughput):表示单位时间内处理的请求数量。较高的吞吐量意味着系统可以处理更多的请求。
    • 可靠性(Reliability):表示系统在面对故障时的稳定性和可恢复性。可靠性高的系统能够正确处理异常情况,并保证数据的一致性。
    • 可扩展性(Scalability):表示系统在面对增加的负载时的能力。可扩展性好的系统能够通过增加资源来提高性能,而不会导致明显的性能下降。
    • 安全性(Security):表示系统对于未经授权的访问和数据泄露的防护能力。安全性好的系统能够保护用户数据和系统资源的安全。

4 RPC 企业实践

在企业实践中,RPC 技术广泛应用于构建分布式系统和微服务架构。以下是一些常见的 RPC 企业实践(gpt):

  • 服务治理
    • 通过使用RPC框架,企业可以实现服务的注册与发现、负载均衡、故障转移和限流等治理功能。这些功能能够提高系统的可靠性和性能。
  • 分布式事务
    • 在分布式系统中,RPC可以用于实现分布式事务的一致性。通过事务协调器和分布式事务管理器,RPC可以确保在不同的服务之间执行的操作具有原子性和一致性。
  • 性能优化
    • RPC技术可以用于提高系统的性能。通过合理的框架选择、网络协议优化和数据压缩等手段,可以降低延迟、提高吞吐量和节省带宽。
  • 安全防护
    • RPC技术可以用于实现安全防护机制,如身份认证、数据加密和访问控制等。这些机制能够保护系统免受恶意攻击和数据泄露。

总结

  • 重新复习了远程过程调用这个知识点,对之后面试可能会起到作用
  • 加深了使用RPC的应用场景的印象

引用