首页 > 其他分享 >Envoy的负载均衡与限流设计

Envoy的负载均衡与限流设计

时间:2022-12-31 16:31:59浏览次数:36  
标签:负载 优先级 Envoy 限流 节点 资源

负载均衡是高性能和高并发的基础,通过负载均衡,可以将流量均匀分布到集群的多个节点上,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远程访问全局限流服务判断是否允许访问,如果不允许,则返回失败。

标签:负载,优先级,Envoy,限流,节点,资源
From: https://blog.51cto.com/key3feng/5982146

相关文章

  • 华为云弹性负载均衡服务,如何助企业应付流量压力
    随着企业的云上业务不断发展,企业对于应用系统的性能要求越来越高,而企业应用系统的性能受到带宽流量和网络备份及负载的压力的影响。​为了帮助企业提升应用系统的对外服务能......
  • nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
    文章目录​​前言​​​​一、对上一篇博文的分析​​​​二、配置文件分析​​​​1.nginx官方网址(很详细)​​​​2、配置文件(全)​​​​3、配置文件(去掉注释)​​​​4、......
  • 分布式、集群、微服务、微前端、负载均衡的概念
    0、前言本人对这些分布式、集群、微服务、微前端、负载均衡的概念很模糊,甚至混淆。因此收集网上各路大神的博客,在这篇随笔中一口气简述这些概念。想要详细了解可以点击......
  • Linux 的 top 命令平均负载
    每次发现系统变慢时,我们通常做的第一件事就是使用​​uptime​​​或​​top​​命令查看系统的“平均负载”[root@rocketmq-n2~]#uptime11:33:53up2:18,2user......
  • 服务的熔断、降级与限流
    1、引言在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC)。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能......
  • [TOP]load average 负载相关
    如何判断系统是否已经OverLoad?loadaverage的值小于CPU数量+1为正常 loadaverage的值/CPU数量=每个核消息等待处理数 一般是会根据15分钟那个load平均值为首先。loa......
  • EnvoyFilter详解
     欢迎关注我的公众号: 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:​​istio多集群探秘,部署了50次多集群后我得出的结论​​​​istio多集群链路追踪,附实操视频​......
  • 如何进行晶体负载电容的调试
    晶体为什么需要外接电容?晶体的负载电容是晶体的一个重要参数。负载电容就是晶振起振的电容,这个负载电容决定着晶体是否可以在产品中正常起作用,外面并联的电容与晶体内部电容......
  • 技术架构(10)- 负载均衡
    负载均衡(LoadBalance,简称LB)是高并发、高可用系统必不可少的关键组件,作用是将网络流量按策略分发到多个服务器上,以提高系统整体的响应速度和可用性。硬件负载均衡硬件负......
  • nacos负载均衡
         ......