自定义后端指标

gRPC 库中的一种机制,允许用户在 gRPC 服务器端注入自定义指标,并在 gRPC 客户端中消费这些指标,从而实现自定义的负载均衡算法。

概述

通过考虑后端负载的本地或全局知识(例如 CPU),可以做出简单的负载均衡决策。更复杂的负载均衡决策则可能基于特定应用的知识(例如队列深度),或结合多种指标来实现。

自定义后端指标功能暴露了 API,允许用户在负载均衡(LB)策略中实现指标反馈。

使用场景

该功能主要用于需要使用自定义 LB 策略的高级用例,以更智能地将流量路由到一组后端服务器,从而提高路由性能,例如加权轮询负载均衡策略。

gRPC 传统上允许用户插件化自己的负载均衡策略,参考 指南。对于 xDS 用户,可以配置 自定义负载均衡器 来选择自定义的 LB 策略。

指标报告

开放请求成本聚合( ORCA)是一个传递后端指标信息的开放标准。gRPC 使用 ORCA 服务和指标标准,并支持两种指标报告机制:

  1. 每个查询的指标报告:后端服务器在相应 RPC 完成时,将注入的自定义指标附加到尾部元数据中。这通常用于短时的 RPC,比如一元调用。

  2. 带外指标报告:后端服务器定期将指标数据(如 CPU 和内存使用情况)推送给客户端。这适用于所有情况:一元调用、长时间的流式 RPC,或者没有 RPC 的情况。然而,带外指标报告不会发送查询成本指标。指标的发射频率是用户可配置的,这些配置位于自定义负载均衡策略中。

下图展示了用户创建自己 LB 策略并实现后端指标反馈的架构。

image 2024 12 24 09 29 11 595

实现

更多详细信息,请参见 gRPC 提案 A51。

语言支持

语言 示例

Java

Java 示例

Go

Go 示例

C++

示例即将发布