RPC框架笔记 | 青训营

132 阅读2分钟

RPC基本概念

RPC:Remote Procedure Calls,远程过程调用

需要解决的三个问题

  1. 函数映射
  2. 数据转换成字节流
  3. 网络传输

RPC概念模型

  • 由五个模型组成:User、User-Stub、RPC-Runtime、Server-Stub、Server
  • 2023-08-07-12-55-14.png

一次RPC完整过程

2023-08-07-13-15-21.png

RPC的优势与问题

  • 优势

    1. 单一职责,有利于分工协作和运维开发
    2. 可扩展性强,资源利用率更优
    3. 故障隔离,服务的整体可靠性更高
  • 问题

    1. 服务宕机,对方如何处理?
    2. 在调用过程中发生网络异常,如何保证消息的可达性?
    3. 请求量突增导致服务无法及时处理,有哪些应对措施?
  • 采用RPC框架来处理上述问题

RPC和RPC框架是一回事吗? 虽然RPC和RPC框架是密切相关的,但它们之间存在一些差异。RPC是一种通信机制的概念,而RPC框架是实现这种通信机制的一种具体工具集合。在使用RPC时,需要选择使用特定的RPC框架来简化开发和管理远程调用。

RPC框架

分层设计(以apache thrift为例)

  • image.png
  • 核心三层:编解码层、协议层、网络通信层

关键指标

  • 稳定性

    • 保障策略
      • 熔断:保护调用方,防止被调用的服务出现问题影响到整个问题,withCircuitBreaker()
      • 限流:保护被调用方,防止大流量把服务压垮,withRateLimiter()
      • 超时控制:避免资源浪费在不可用节点,withTimeout()
    • 请求成功率
      • 负载均衡:withLoadalancer()
      • 重试:withRetry()
    • 长尾请求:不太常见的、发生次数很少的请求。这些请求虽然不太常见,但由于种类很多,如果我们不妥善处理它们,可能会影响到整个系统的性能和稳定性。
      • backup request:withBackupRequest()
  • 易用性

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

  • 观测性

    • log、metrics、tracing
    • 内置观测性服务
  • 高性能

    • 多场景
    • 目标:高吞吐、低延迟
    • 手段:连接池、多路复用、高性能编解码协议、高性能网络库

企业实践

Kitex

  • 整体架构
  • image.png

参考资料