过载管理¶
过载管理是一个用于保护 Envoy 服务器避免因太多的客户端连接或请求而导致各种资源(例如内存、CPU 或文件描述符)负载太重的可扩展组件。注意它与 熔断器 不同,后者的主要目的是用于保护上游服务。
过载管理是可以 配置 的,可以配置一组资源来监视,并定义当资源的压力超过阈值时该如何操作。
架构¶
过载管理的工作机制是:周期性地检测**资源**的*压力*并把值传递给**触发器**,由触发器来执行**操作**。资源监视器、触发器和动作都是在启动时就配置好的。
触发器¶
触发器负责在每一次资源压力更新时进行评测,并把压力转换为一个操作状态。操作状态有一个处于 [0,1] 之间的值,并分为以下两组:
操作状态 |
值 |
描述 |
---|---|---|
scaling |
[0, 1) |
资源的压力低于配置项中的阈值,操作可能会被执行 |
saturated |
1 |
资源的压力等于或高于配置项中的阈值,操作一定会被执行 |
只要资源压力值更新后,相关的触发器就会再次进行评估。每个操作至少关联着一个触发器,操作状态的值的计算结果是超过阈值的那个最大值。操作状态产生的效果取决于操作的配置和具体实现。
操作¶
当一个触发器改变了状态,值就会被发送给注册好的操作,这会影响连接和请求的处理方式。每个操作对输入状态有不同的解析方式,有些可能会完全忽略 scaling 状态,只有 saturated 的才处理。