2

Envoy的负载均衡与限流设计

 1 year ago
source link: https://blog.51cto.com/key3feng/5982146
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Envoy的负载均衡与限流设计

精选 原创

key_3_feng 2022-12-31 16:04:40 博主文章分类:2022年12月 ©著作权

文章标签 Envoy 文章分类 其它 系统/运维 yyds干货盘点 阅读数237

负载均衡是高性能和高并发的基础,通过负载均衡,可以将流量均匀分布到集群的多个节点上,Envoy负载均衡的设计和实现如下。

1.优先级

Envoy集群管理也是以优先级为基础进行组织的,单个集群按照优先级划分为不同的节点集合,集群成员信息变化时也会按照优先级进行重新组织和整理。

负载均衡选取时,Envoy默认只在最高优先级的候选集中进行选取,出于高可用的考虑,一般都会指定比最高优先级小的可用优先级为备选,这样当最高优先级的候选集中的服务节点均不可用时,可以通过故障转移机制将流量转移到备选优先级对应的候选集中。

2.恐慌阈值

负载均衡选取过程中,Envoy默认优先选择健康的节点,但由于故障等,一个集群的健康节点比例过低时,按照健康节点的选取策略,集群的全部流量会全部涌向为数不多的健康节点上,容易引发健康节点因为流量过大而雪崩的现象,导致整个集群全部不可用。

为了解决这个问题,Envoy引入了恐慌阈值的概念,默认的恐慌阈值是50%,当健康节点占所有节点的比例下降到恐慌阈值时,选取节点时不再局限于健康节点范围内,而是在所有节点范围内选取。

3.区域感知负载均衡

区域感知负载均衡,顾名思义,负载均衡时优先选取和当前区域相同的服务节点,区域感知特性是Envoy中所有负载均衡算法的基石。

hostSourceToUse是区域感知路由的核心实现,首先基于优先级选取初始候选集,默认采用选取健康节点的策略,如果触发恐慌阈值,则退化到选取当前所有节点;然后判断当前是否满足区域感知负载均衡的条件,如果不满足,则直接返回,否则通过区域感知路由算法获取合适的节点列表。综合来看,目标候选节点集合的选取条件包括优先级、区域和是否需要健康节点这几个核心因素。

4.资源限制机制

任何系统的资源都是有一定限度的,如果使用超过一定限度,就会出现各种各样的问题,影响系统的整体可用性,因此为了保障系统的可用性,需要有相应的资源管理机制,保障关键资源的合理使用。

Envoy针对Upstream集群的一些关键资源,比如Upstream集群最大连接数、最大请求数等,通过resource manager进行管理。

resource manager进行资源管理的方式很简单,在资源创建时指定资源的配额限制,同时提供相应的资源更新和配额检查接口。当使用和归还资源时更新相应的资源计数;通过资源配额检查接口判断资源当前是否还有富余。

为了实现资源管理的灵活性,resource manager针对每个资源设置一个开关变量key,从而通过开关特性机制动态修改资源的当前值。

另外,针对每个资源设置一个stats项,当资源超过限额时设置stats状态为超出配额,这样外界通过HTTP管理接口实时查看Envoy运行状态时,也可以查看当前所有的资源状态,比如是否超出资源配额等。

5.全局限流机制

尽管Envoy提供了完善的资源限制机制,可以很大程度上保证顺利访问Upstream的资源和应对压力情况,但对于有大量客户端的服务端程序来说,从任何一个客户端都很难确切地了解服务端程序的真实压力情况,并进行准确的资源限制,因此需要有一个从服务端角度出发的全局视角,对客户端/服务器之间的通信和链路情况进行限制与管控,全局限流就是解决这个问题的一个很好的机制。

Envoy当前支持网络层面和HTTP层面两种限流方式。网络层面的限流可以针对需要限流的连接设置网络限流过滤器,这样当新连接创建时,Envoy会通过gRPC远程访问全局限流服务判断是否允许访问,如果不允许,限流插件会在新数据到来时直接返回出错提示。HTTP层面的限流是针对请求级别的,每个HTTP请求会有相应的路由,路由访问前,通过gRPC远程访问全局限流服务判断是否允许访问,如果不允许,则返回失败。

  • 1
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK