Пример #1
0
 @Override
 public void initWithNiwsConfig(IClientConfig clientConfig) {
   predicate =
       CompositePredicate.withPredicate(new AvailabilityPredicate(this, clientConfig))
           .addFallbackPredicate(AbstractServerPredicate.alwaysTrue())
           .build();
 }
Пример #2
0
 public AvailabilityFilteringRule() {
   super();
   predicate =
       CompositePredicate.withPredicate(new AvailabilityPredicate(this, null))
           .addFallbackPredicate(AbstractServerPredicate.alwaysTrue())
           .build();
 }
Пример #3
0
 @Monitor(name = "AvailableServersCount", type = DataSourceType.GAUGE)
 public int getAvailableServersCount() {
   ILoadBalancer lb = getLoadBalancer();
   List<Server> servers = lb.getAllServers();
   if (servers == null) {
     return 0;
   }
   return Collections2.filter(servers, predicate.getServerOnlyPredicate()).size();
 }
Пример #4
0
 /**
  * This method is overridden to provide a more efficient implementation which does not iterate
  * through all servers. This is under the assumption that in most cases, there are more available
  * instances than not.
  */
 @Override
 public Server choose(Object key) {
   int count = 0;
   Server server = roundRobinRule.choose(key);
   while (count++ <= 10) {
     if (predicate.apply(new PredicateKey(server))) {
       return server;
     }
     server = roundRobinRule.choose(key);
   }
   return super.choose(key);
 }