超载管理器 (proto)

超载管理器提供了一个可扩展的框架来保护 Envoy 实例免受各种资源(内存、cpu、文件描述符等)的超载。它监控一组可配置的资源,并在与这些资源相关的触发器触发时通知已注册的监听器。

config.overload.v3.ResourceMonitor

[config.overload.v3.ResourceMonitor proto]

{
  "name": ...,
  "typed_config": {...}
}
name

(string, REQUIRED) 要实例化的资源监控器的名称。必须与注册的资源监控器类型匹配。有关可用的默认资源监控器列表,请参阅 typed_config 下面的扩展列表

typed_config

(Any) 要实例化的资源监控器的配置。

config.overload.v3.ThresholdTrigger

[config.overload.v3.ThresholdTrigger proto]

{
  "value": ...
}
value

(double) 如果资源压力大于或等于此值,则触发器将进入饱和状态。

config.overload.v3.ScaledTrigger

[config.overload.v3.ScaledTrigger proto]

{
  "scaling_threshold": ...,
  "saturation_threshold": ...
}
scaling_threshold

(double) 如果资源压力大于此值,则触发器将处于 扩展 状态,值为 (pressure - scaling_threshold) / (saturation_threshold - scaling_threshold)

saturation_threshold

(double) 如果资源压力大于此值,则触发器将进入饱和状态。

config.overload.v3.Trigger

[config.overload.v3.Trigger proto]

{
  "name": ...,
  "threshold": {...},
  "scaled": {...}
}
name

(string, REQUIRED) 这是触发器所针对的资源的名称。

threshold

(config.overload.v3.ThresholdTrigger)

必须设置 thresholdscaled 中的其中一个。

scaled

(config.overload.v3.ScaledTrigger)

必须设置 thresholdscaled 中的其中一个。

config.overload.v3.ScaleTimersOverloadActionConfig

[config.overload.v3.ScaleTimersOverloadActionConfig proto]

“envoy.overload_actions.reduce_timeouts” 操作的类型化配置。有关如何使用不同的超时和最小值配置操作的示例,请参阅 文档

{
  "timer_scale_factors": []
}
timer_scale_factors

(repeated config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer, REQUIRED) 要应用的一组定时器缩放规则。

config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer

[config.overload.v3.ScaleTimersOverloadActionConfig.ScaleTimer proto]

{
  "timer": ...,
  "min_timeout": {...},
  "min_scale": {...}
}
timer

(config.overload.v3.ScaleTimersOverloadActionConfig.TimerType) 此最小值适用的定时器类型。

min_timeout

(Duration) 将最小持续时间设置为绝对值。

必须设置 min_timeoutmin_scale 中的其中一个。

min_scale

(type.v3.Percent) 将最小持续时间设置为最大值的百分比。

必须设置 min_timeoutmin_scale 中的其中一个。

Enum config.overload.v3.ScaleTimersOverloadActionConfig.TimerType

[config.overload.v3.ScaleTimersOverloadActionConfig.TimerType proto]

UNSPECIFIED

(DEFAULT) ⁣不支持的值;用户必须显式指定他们想要缩放的定时器。

HTTP_DOWNSTREAM_CONNECTION_IDLE

⁣调整下游 HTTP 连接的空闲定时器,该定时器在没有活动流时生效。这会影响 HttpConnectionManager.common_http_protocol_options.idle_timeout 的值

HTTP_DOWNSTREAM_STREAM_IDLE

⁣调整由下游客户端启动的 HTTP 流的空闲定时器。这会影响 RouteAction.idle_timeoutHttpConnectionManager.stream_idle_timeout 的值

TRANSPORT_SOCKET_CONNECT

⁣调整下游客户端在连接关闭之前完成传输级协商的时间。这会影响 FilterChain.transport_socket_connect_timeout 的值。

HTTP_DOWNSTREAM_CONNECTION_MAX

⁣调整下游 HTTP 连接的最大连接持续时间定时器。这会影响 HttpConnectionManager.common_http_protocol_options.max_connection_duration 的值。

config.overload.v3.OverloadAction

[config.overload.v3.OverloadAction proto]

{
  "name": ...,
  "triggers": [],
  "typed_config": {...}
}
name

(string, REQUIRED) 超载操作的名称。这只是一个监听器可以用来注册回调的众所周知的字符串。自定义超载操作应使用反向 DNS 命名以确保唯一性。

triggers

(repeated config.overload.v3.Trigger, REQUIRED) 此操作的一组触发器。操作的状态是所有触发器状态中的最大值,可以是介于 0 和 1 之间的标量值或饱和值。监听器会在超载操作状态发生变化时收到通知。超载管理器操作对于给定资源只能有一个触发器,例如 Trigger.name 在此列表中必须是唯一的。

typed_config

(Any) 要实例化的操作的配置。

config.overload.v3.LoadShedPoint

[config.overload.v3.LoadShedPoint proto]

连接或请求生命周期中的一个点,它提供了关于在给定阶段是否为当前实体在该点处丢弃负载的上下文。

{
  "name": ...,
  "triggers": []
}
name

(string, REQUIRED) 这只是一个 LoadShedPoint 的众所周知的字符串。部署特定的 LoadShedPoint(例如,自定义扩展中的 LoadShedPoint)应以公司/部署名称为前缀以避免与任何开源 LoadShedPoint 冲突。

triggers

(repeated config.overload.v3.Trigger, REQUIRED) 此 LoadShedPoint 的一组触发器。LoadShedPoint 将使用所有触发器状态中的最大值,可以是介于 0 和 1 之间的标量值或饱和值。LoadShedPoint 对于给定资源只能有一个触发器,例如 Trigger.name 在此列表中必须是唯一的。

config.overload.v3.BufferFactoryConfig

[config.overload.v3.BufferFactoryConfig proto]

用于 WatermarkBuffer 工厂应跟踪哪些帐户的配置。

{
  "minimum_account_to_track_power_of_two": ...
}
minimum_account_to_track_power_of_two

(uint32) Envoy 开始跟踪帐户的最小 2 的幂。

Envoy 从以下提供的指数开始有 8 个 2 的幂桶。具体来说,第一个桶包含使用 [2^minimum_account_to_track_power_of_two, 2^(minimum_account_to_track_power_of_two + 1)) 字节的流的帐户。第八个桶跟踪大于等于 128 * 2^minimum_account_to_track_power_of_two 的帐户。

最大值为 56,因为我们使用 uint64_t 进行字节计数,而这是使用 8 个桶的最后一个值。实际上,我们不希望代理持有 2^56 字节。

如果省略,Envoy 不应执行任何跟踪。

config.overload.v3.OverloadManager

[config.overload.v3.OverloadManager proto]

{
  "refresh_interval": {...},
  "resource_monitors": [],
  "actions": [],
  "loadshed_points": [],
  "buffer_factory_config": {...}
}
refresh_interval

(Duration) 刷新资源使用情况的间隔。

resource_monitors

(repeated config.overload.v3.ResourceMonitor, REQUIRED) 要监控的资源集。

actions

(repeated config.overload.v3.OverloadAction) 超载操作集。

loadshed_points

(repeated config.overload.v3.LoadShedPoint) 丢弃负载点集。

buffer_factory_config

(config.overload.v3.BufferFactoryConfig) 缓冲区工厂的配置。