![JAR search and dependency download from the Maven repository](/logo.png)
com.zhizus.forest.thrift.client.cluster.loadbalance.AbstractLoadBalance Maven / Gradle / Ivy
package com.zhizus.forest.thrift.client.cluster.loadbalance;
import com.google.common.collect.Lists;
import com.zhizus.forest.thrift.client.ServerInfo;
import com.zhizus.forest.thrift.client.cluster.IsolationStrategy;
import com.zhizus.forest.thrift.client.cluster.LoadBalance;
import com.zhizus.forest.thrift.client.registry.Registry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Set;
/**
* Created by Dempe on 2016/12/26.
*/
public abstract class AbstractLoadBalance implements LoadBalance {
private final static Logger LOGGER = LoggerFactory.getLogger(AbstractLoadBalance.class);
public Registry registry;
private List serverInfoList = Lists.newArrayList();
private IsolationStrategy isolationStrategy;
public AbstractLoadBalance(Registry registry, IsolationStrategy isolationStrategy) {
this.registry = registry;
this.isolationStrategy = isolationStrategy;
}
public List getAvailableServerList() {
List availableList = Lists.newArrayList();
Set failed = isolationStrategy.getFailed();
for (ServerInfo serverInfo : serverInfoList) {
if (!failed.contains(serverInfo)) {
availableList.add(serverInfo);
}
}
if (availableList.isEmpty()) {
for (ServerInfo serverInfo : serverInfoList) {
availableList.add(serverInfo);
}
LOGGER.warn("available server list is empty, use failed back list instead");
}
return serverInfoList;
}
@Override
public void setList(List list) {
serverInfoList =list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy