过载管理

过载管理是一个用于保护 Envoy 服务器避免因太多的客户端连接或请求而导致各种资源(例如内存、CPU 或文件描述符)负载太重的可扩展组件。注意它与 熔断器 不同,后者的主要目的是用于保护上游服务。

过载管理是可以 配置 的,可以配置一组资源来监视,并定义当资源的压力超过阈值时该如何操作。

架构

过载管理的工作机制是:周期性地检测**资源**的*压力*并把值传递给**触发器**,由触发器来执行**操作**。资源监视器、触发器和动作都是在启动时就配置好的。

资源

资源可以被过载管理监视,它们的*压力*表示为 [0,1] 这个区间的值。资源的压力是由*资源监视器*评估计算的。从 配置 页面可以查看资源监视器的配置。

触发器

触发器负责在每一次资源压力更新时进行评测,并把压力转换为一个操作状态。操作状态有一个处于 [0,1] 之间的值,并分为以下两组:

操作状态

描述

scaling

[0, 1)

资源的压力低于配置项中的阈值,操作可能会被执行

saturated

1

资源的压力等于或高于配置项中的阈值,操作一定会被执行

只要资源压力值更新后,相关的触发器就会再次进行评估。每个操作至少关联着一个触发器,操作状态的值的计算结果是超过阈值的那个最大值。操作状态产生的效果取决于操作的配置和具体实现。

操作

当一个触发器改变了状态,值就会被发送给注册好的操作,这会影响连接和请求的处理方式。每个操作对输入状态有不同的解析方式,有些可能会完全忽略 scaling 状态,只有 saturated 的才处理。