polaris load balancer: 提取负载均衡器公共抽象基类,实现加权轮训负载均衡

优化 code style

--issue=968
pull/1062/head
veteranchen 2 years ago
parent dc9129c518
commit 658276e14c

@ -17,6 +17,9 @@
package com.tencent.cloud.polaris.loadbalancer; package com.tencent.cloud.polaris.loadbalancer;
import java.util.List;
import java.util.stream.Collectors;
import com.tencent.cloud.common.metadata.MetadataContext; import com.tencent.cloud.common.metadata.MetadataContext;
import com.tencent.cloud.common.pojo.PolarisServiceInstance; import com.tencent.cloud.common.pojo.PolarisServiceInstance;
import com.tencent.polaris.api.pojo.DefaultServiceInstances; import com.tencent.polaris.api.pojo.DefaultServiceInstances;
@ -28,6 +31,8 @@ import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest;
import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceResponse; import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceResponse;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import reactor.core.publisher.Mono;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.DefaultResponse; import org.springframework.cloud.client.loadbalancer.DefaultResponse;
@ -37,10 +42,6 @@ import org.springframework.cloud.client.loadbalancer.Response;
import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer; import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import reactor.core.publisher.Mono;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* Abstract Loadbalancer of Polaris. * Abstract Loadbalancer of Polaris.
@ -88,7 +89,8 @@ public abstract class PolarisAbstractLoadBalancer implements ReactorServiceInsta
try { try {
ProcessLoadBalanceResponse response = routerAPI.processLoadBalance(req); ProcessLoadBalanceResponse response = routerAPI.processLoadBalance(req);
return new DefaultResponse(new PolarisServiceInstance(response.getTargetInstance())); return new DefaultResponse(new PolarisServiceInstance(response.getTargetInstance()));
} catch (Exception e) { }
catch (Exception e) {
log.warn("PolarisRoutingLoadbalancer error", e); log.warn("PolarisRoutingLoadbalancer error", e);
return new EmptyResponse(); return new EmptyResponse();
} }

@ -17,15 +17,16 @@
package com.tencent.cloud.polaris.loadbalancer; package com.tencent.cloud.polaris.loadbalancer;
import java.util.Optional;
import com.tencent.polaris.api.config.consumer.LoadBalanceConfig; import com.tencent.polaris.api.config.consumer.LoadBalanceConfig;
import com.tencent.polaris.api.rpc.Criteria; import com.tencent.polaris.api.rpc.Criteria;
import com.tencent.polaris.router.api.core.RouterAPI; import com.tencent.polaris.router.api.core.RouterAPI;
import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest; import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import java.util.Optional;
/** /**
* PolarisRingHashLoadBalancer. * PolarisRingHashLoadBalancer.
* *
@ -35,10 +36,9 @@ import java.util.Optional;
public class PolarisRingHashLoadBalancer extends PolarisAbstractLoadBalancer { public class PolarisRingHashLoadBalancer extends PolarisAbstractLoadBalancer {
public PolarisRingHashLoadBalancer(String serviceId, public PolarisRingHashLoadBalancer(String serviceId,
ObjectProvider<ServiceInstanceListSupplier> supplierObjectProvider, ObjectProvider<ServiceInstanceListSupplier> supplierObjectProvider,
RouterAPI routerAPI) { RouterAPI routerAPI) {
super(serviceId, supplierObjectProvider, routerAPI); super(serviceId, supplierObjectProvider, routerAPI);
} }
@Override @Override
@ -50,5 +50,4 @@ public class PolarisRingHashLoadBalancer extends PolarisAbstractLoadBalancer {
req.setCriteria(criteria); req.setCriteria(criteria);
return req; return req;
} }
} }

@ -21,6 +21,7 @@ import com.tencent.polaris.api.config.consumer.LoadBalanceConfig;
import com.tencent.polaris.api.rpc.Criteria; import com.tencent.polaris.api.rpc.Criteria;
import com.tencent.polaris.router.api.core.RouterAPI; import com.tencent.polaris.router.api.core.RouterAPI;
import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest; import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;

@ -21,6 +21,7 @@ import com.tencent.polaris.api.config.consumer.LoadBalanceConfig;
import com.tencent.polaris.api.rpc.Criteria; import com.tencent.polaris.api.rpc.Criteria;
import com.tencent.polaris.router.api.core.RouterAPI; import com.tencent.polaris.router.api.core.RouterAPI;
import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest; import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceRequest;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
@ -33,7 +34,6 @@ public class PolarisWeightedRoundRobinLoadBalancer extends PolarisAbstractLoadBa
public PolarisWeightedRoundRobinLoadBalancer(String serviceId, ObjectProvider<ServiceInstanceListSupplier> supplierObjectProvider, RouterAPI routerAPI) { public PolarisWeightedRoundRobinLoadBalancer(String serviceId, ObjectProvider<ServiceInstanceListSupplier> supplierObjectProvider, RouterAPI routerAPI) {
super(serviceId, supplierObjectProvider, routerAPI); super(serviceId, supplierObjectProvider, routerAPI);
} }
@Override @Override
@ -42,5 +42,4 @@ public class PolarisWeightedRoundRobinLoadBalancer extends PolarisAbstractLoadBa
req.setCriteria(new Criteria()); req.setCriteria(new Criteria());
return req; return req;
} }
} }

@ -18,6 +18,9 @@
package com.tencent.cloud.polaris.loadbalancer; package com.tencent.cloud.polaris.loadbalancer;
import java.util.ArrayList;
import java.util.List;
import com.tencent.cloud.common.pojo.PolarisServiceInstance; import com.tencent.cloud.common.pojo.PolarisServiceInstance;
import com.tencent.cloud.common.util.ApplicationContextAwareUtils; import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
import com.tencent.polaris.api.pojo.Instance; import com.tencent.polaris.api.pojo.Instance;
@ -32,16 +35,14 @@ import org.mockito.Mock;
import org.mockito.MockedStatic; import org.mockito.MockedStatic;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.Request; import org.springframework.cloud.client.loadbalancer.Request;
import org.springframework.cloud.client.loadbalancer.Response; import org.springframework.cloud.client.loadbalancer.Response;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier; import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.List;
import static com.tencent.cloud.common.metadata.MetadataContext.LOCAL_NAMESPACE; import static com.tencent.cloud.common.metadata.MetadataContext.LOCAL_NAMESPACE;
import static com.tencent.cloud.common.metadata.MetadataContext.LOCAL_SERVICE; import static com.tencent.cloud.common.metadata.MetadataContext.LOCAL_SERVICE;

Loading…
Cancel
Save