envoy源码分析(九) -- circuit breakers

 

故名思意,就是防环。方式类似限速,超过一定值之后,增量的请求将被限制。是cluster级别的,

所以,如果有限速需求,或规格限制需求的话,天然在这个结构里做,也十分的不错。

 

image

 

如上图所示。

circuit breakers对象在ClusterInfo类中初始化。

ClusterInfo对象是Cluster对象的成员。Cluster由ClusterManagerImpl::loadCluster()函数,在clusterManager的初始化中调用,Cluster ManagerImpl::initialize()

在ResourceManagers::load() 函数中读取 xds config,进行ResourceLimit对象的进一步初始化。

如果 xds 中没有配置 circuit breakers,load()将使用其中设置的默认值。

 

xds中的位置:

image

 https://www.envoyproxy.io/docs/envoy/v1.32.13/api-v3/config/cluster/v3/cluster.proto#config-cluster-v3-cluster

 

参考资料:

https://www.envoyproxy.io/docs/envoy/v1.32.13/intro/arch_overview/upstream/circuit_breaking#arch-overview-circuit-break-cluster-maximum-connection-pools

https://www.envoyproxy.io/docs/envoy/v1.32.13/faq/load_balancing/disable_circuit_breaking#faq-disable-circuit-breaking

 

posted on 2025-12-17 14:28  toong  阅读(2)  评论(0)    收藏  举报