RPC--| 青训营

119 阅读2分钟

RPC框架关键指标

  • 稳定性(保障策略)

    • 熔断

      • 在底层服务相应超时后,为了防止上层服务调用时堆积大量请求而宕机,这个时候就需要熔断,防止被调用的部分影响整个链路
    • 限流

      • 调用端发送请求到服务端,服务端需在执行业务前执行检查限流逻辑,若访问量过大超出限流条件,让服务端直接降级处理或返回给调用方一个限流异常
    • 超时控制

      • 当下层的服务由种种原因响应过慢,下层服务直接主动停掉一些不太重要的业务,释放出服务器资源,避免浪费
    • 请求成功率

      • 实现负载均衡和重试就可以提高请求成功率,但是重试有放大故障的风险,会加大直接下游的负载(防止重试风暴,限制单点重试和限制链路重试)
      • 1692284181192.png
    • 长尾请求

      • 响应时间明显大于平均的请求(P99标准)
      • 1692284456843.png
  • 易用性

这些增强稳定性的策略,主要通过注册中间件来实现(开箱即用,有轮子。Kitex使用Suite来打包自定义的功能,提供一键配置基础依赖)

1692284682269.png

  • 扩展性

    提供很多的扩展,Middleware、Option、编解码层、协议层、网络传输层、代码生成工具插件这些都能扩展 1692284874608.png 一个请求发起首先经过治理层面,治理相关的逻辑封装在Middleware中,而一个个Middleware会构造成一个有序调用连接逐个执行,比如服务发现路由、负载均衡、超时控制等,mw执行后进入remote模块完成与远端的通信

  • 观测性

    对于观测性,传统的Log、Metric、Tracing三件套有点不满足于框架,有些框架自身需要暴露出来,例如当前的环境变量、配置、Cient/Server初始化参数、缓存信息等

  • 高性能

    • 高吞吐、低延迟(有时更重要)
    • 多路复用(大大减少链接带来的资源消耗,并提升了服务端性能,能提高了吞吐30%呢)
      • 非连接多路复用,每个请求持有一个链接,直到请求结束才会被关闭或者放入连接池复用,并发量与连接数是对等的关系。
      • 连接多路复用,所有请求都可以在同一个连接完成,二者对比一下连接资源利用上的差异。