Envoy 边缘代理如何计算每个主机的请求数

How does Envoy edge proxy keep count of number of request per host

我很好奇 envoy 如何存储或管理每个主机的活动请求,然后将它们用于最少请求优先负载平衡。 由于 Envoy 的文档指出它随机选择 N 个主机,然后从中选择请求最少的主机。这个算法给出了 O(1) 的复杂度和非常好的结果。因此,如果特使存储所有活动请求计数,为什么它不使用可能在 O(logn) 中工作的算法来查找请求最少的主机。这可以用合适的数据结构来实现,比如线段树。

我已通读文档并尝试查看源代码。但是找不到我要找的东西。

Documentation

我认为 this comment 回答了你的问题:

// As with tryChooseLocalLocalityHosts, this can be refactored for efficiency
// but O(N) is good enough for now given the expected number of priorities is
// small.

所以这是关于积压工作中的优先级。欢迎加入并改进它 ;)