环形哈希负载均衡策略 (proto)
此扩展的限定名称为 envoy.load_balancing_policies.ring_hash
注意
此扩展旨在对不可信的下游和上游流量都具有鲁棒性。
提示
此扩展扩展并可与以下扩展类别一起使用
此扩展必须使用以下类型 URL 之一进行配置
extensions.load_balancing_policies.ring_hash.v3.RingHash
[extensions.load_balancing_policies.ring_hash.v3.RingHash proto]
此配置允许通过 LB 策略扩展点配置内置的 RING_HASH LB 策略。有关更多信息,请参阅 负载均衡架构概述。
{
"hash_function": ...,
"minimum_ring_size": {...},
"maximum_ring_size": {...},
"use_hostname_for_hashing": ...,
"hash_balance_factor": {...},
"consistent_hashing_lb_config": {...},
"locality_weighted_lb_config": {...}
}
- hash_function
(extensions.load_balancing_policies.ring_hash.v3.RingHash.HashFunction) 用于将主机哈希到 ketama 环上的哈希函数。该值默认为 XX_HASH。
- minimum_ring_size
(UInt64Value) 最小哈希环大小。环越大(即每个提供的宿主有越多的哈希值),请求分布越能反映所需的权重。默认为 1024 个条目,限制为 8M 个条目。另请参阅 maximum_ring_size。
- maximum_ring_size
(UInt64Value) 最大哈希环大小。默认为 8M 个条目,限制为 8M 个条目,但可以降低以进一步限制资源使用。另请参阅 minimum_ring_size。
- use_hostname_for_hashing
(bool) 如果设置为
true
,集群将使用主机名而不是解析的地址作为密钥来一致地哈希到上游主机。仅对解析到单个 IP 地址的主机名的 StrictDNS 集群有效。注意
此项已弃用,请使用 consistent_hashing_lb_config 代替。
- hash_balance_factor
(UInt32Value) 配置每个上游主机限制的平均集群负载百分比。例如,值为 150 时,任何上游主机都不会获得超过集群中所有主机平均负载的 1.5 倍的负载。如果未指定,则不会对任何上游主机限制负载。此参数的典型值介于 120 和 200 之间。最小值为 100。
这是根据论文 https://arxiv.org/abs/1608.01350 中描述的方法实现的。对于指定的
hash_balance_factor
,对任何上游主机的请求上限为hash_balance_factor/100
倍的集群平均请求数。当到达正在其最大容量下提供服务的某个上游主机的请求时,使用线性探测来识别合格主机。此外,线性探测是使用主机环/表中的随机跳跃来实现的,以识别合格主机(此技术如论文 https://arxiv.org/abs/1908.08762 中所述 - 随机跳跃避免了在选择环/表中的下一个主机时的级联溢出效应)。如果对主机指定了权重,则会尊重这些权重。
这是一种 O(N) 算法,与其他负载均衡器不同。使用较低的
hash_balance_factor
会导致探测更多主机,因此如果您需要更好的性能,请使用较高的值。注意
此项已弃用,请使用 consistent_hashing_lb_config 代替。
- consistent_hashing_lb_config
(extensions.load_balancing_policies.common.v3.ConsistentHashingLbConfig) 基于哈希的负载均衡策略的通用配置。
- locality_weighted_lb_config
(extensions.load_balancing_policies.common.v3.LocalityLbConfig.LocalityWeightedLbConfig) 明确为环形哈希 lb 启用区域加权负载均衡。
Enum extensions.load_balancing_policies.ring_hash.v3.RingHash.HashFunction
[extensions.load_balancing_policies.ring_hash.v3.RingHash.HashFunction proto]
用于将主机哈希到 ketama 环上的哈希函数。
- DEFAULT_HASH
(默认) 目前默认为 XX_HASH。
- XX_HASH
使用 xxHash。
- MURMUR_HASH_2
使用 MurmurHash2,这与 GNU libstdc++ 3.4.20 或更高版本中的 std:hash<string> 兼容。这通常是在 Linux 上编译而不是 macOS 上编译时的情况。