環狀雜湊負載平衡策略 (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 的明確區域加權負載平衡。
列舉 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 上則不會。