Зачем создавать балансировщики для каждой зоны в методе ZoneAwareLoadBalancer.chooseServer? - PullRequest
0 голосов
/ 14 марта 2019

Я не могу выяснить использование этого поведения

Кто-нибудь разрешает мои сомнения?

исходный код выглядит так:

public Server chooseServer(Object key) {
    ...
    getLoadBalancer(zone).setServersList(entry.getValue());
    ...
}

BaseLoadBalancer getLoadBalancer(String zone) {
    zone = zone.toLowerCase();
    BaseLoadBalancer loadBalancer = balancers.get(zone);
    if (loadBalancer == null) {
        // We need to create rule object for load balancer for each zone
        IRule rule = cloneRule(this.getRule());
        loadBalancer = new BaseLoadBalancer(this.getName() + "_" + zone, rule, this.getLoadBalancerStats());
        BaseLoadBalancer prev = balancers.putIfAbsent(zone, loadBalancer);
        if (prev != null) {
            loadBalancer = prev;
        }
    } 
    return loadBalancer;        
}
...