负载报告服务 (LRS) (proto)

负载报告服务是 Envoy 的一个 API,用于发出负载报告。Envoy 将与管理服务器启动一个双向流。连接后,管理服务器可以向它感兴趣的节点发送一个 LoadStatsResponse,以获取该节点的负载报告。该节点中的 Envoy 将开始发送 LoadStatsRequest。这将根据 负载报告间隔 定期进行。有关详细信息,请查看 负载报告服务沙盒示例

service.load_stats.v3.LoadStatsRequest

[service.load_stats.v3.LoadStatsRequest proto]

Envoy 发送给管理服务器的负载报告。

{
  "node": {...},
  "cluster_stats": []
}
node

(config.core.v3.Node) Envoy 实例的节点标识符。

cluster_stats

(repeated config.endpoint.v3.ClusterStats) 要报告的负载统计信息的列表。

service.load_stats.v3.LoadStatsResponse

[service.load_stats.v3.LoadStatsResponse proto]

管理服务器向 Envoy 发送一个 LoadStatsResponse,其中包含所有它感兴趣的学习负载统计信息的集群。

{
  "clusters": [],
  "send_all_clusters": ...,
  "load_reporting_interval": {...},
  "report_endpoint_granularity": ...
}
clusters

(repeated string) 要报告统计信息的集群。如果 send_all_clusters 为真,则不填充。

send_all_clusters

(bool) 如果为真,则客户端应发送所有已知的集群。只有在其 client_features 字段中宣传“envoy.lrs.supports_send_all_clusters”功能的客户端才会遵守此字段。

load_reporting_interval

(Duration) 收集统计信息的最小时间间隔。这仅仅是最小值,原因有两个

  1. 从计时器触发到统计信息采样可能存在一些延迟。

  2. 对于之前已在 LoadStatsResponse 中列出的集群,在相应的先前 LoadStatsRequest 和此 LoadStatsResponse 之间观察到的任何流量也将被累积并计入该集群。这避免了可能在消息之间存在的不可观察性。新的集群不受此考虑因素的影响。

report_endpoint_granularity

(bool) 如果管理服务器支持端点粒度报告,则设置为 true