optimize code

pull/379/head
wulingxiao 3 years ago
parent 8cc1f7bed3
commit 0233036082

@ -35,12 +35,40 @@ import org.springframework.util.CollectionUtils;
/** /**
* load balancer utils. * load balancer utils.
* *
*@author lepdou 2022-05-17 * @author lepdou 2022-05-17
*/ */
public class LoadBalancerUtils { public class LoadBalancerUtils {
private static final int DEFAULT_WEIGHT = 100;
/**
* transfer servers to ServiceInstances
*
* @param servers servers
* @return ServiceInstances
*/
public static ServiceInstances transferServersToServiceInstances(Flux<List<ServiceInstance>> servers) { public static ServiceInstances transferServersToServiceInstances(Flux<List<ServiceInstance>> servers) {
List<Instance> instances = servers.toStream().flatMap(List::stream).map(serviceInstance -> { List<Instance> instances = servers.toStream()
.flatMap(List::stream)
.map(LoadBalancerUtils::transferServerToServiceInstance)
.collect(Collectors.toList());
String serviceName = null;
if (!CollectionUtils.isEmpty(instances)) {
serviceName = instances.get(0).getService();
}
ServiceKey serviceKey = new ServiceKey(MetadataContext.LOCAL_NAMESPACE, serviceName);
return new DefaultServiceInstances(serviceKey, instances);
}
/**
* transfer ServiceInstance to DefaultInstance
*
* @param serviceInstance serviceInstance
* @return defaultInstance
*/
public static DefaultInstance transferServerToServiceInstance(ServiceInstance serviceInstance) {
DefaultInstance instance = new DefaultInstance(); DefaultInstance instance = new DefaultInstance();
instance.setNamespace(MetadataContext.LOCAL_NAMESPACE); instance.setNamespace(MetadataContext.LOCAL_NAMESPACE);
instance.setService(serviceInstance.getServiceId()); instance.setService(serviceInstance.getServiceId());
@ -48,18 +76,9 @@ public class LoadBalancerUtils {
instance.setId(serviceInstance.getInstanceId()); instance.setId(serviceInstance.getInstanceId());
instance.setHost(serviceInstance.getHost()); instance.setHost(serviceInstance.getHost());
instance.setPort(serviceInstance.getPort()); instance.setPort(serviceInstance.getPort());
instance.setWeight(100); instance.setWeight(DEFAULT_WEIGHT);
instance.setMetadata(serviceInstance.getMetadata()); instance.setMetadata(serviceInstance.getMetadata());
return instance; return instance;
}).collect(Collectors.toList());
String serviceName = null;
if (!CollectionUtils.isEmpty(instances)) {
serviceName = instances.get(0).getService();
} }
ServiceKey serviceKey = new ServiceKey(MetadataContext.LOCAL_NAMESPACE, serviceName);
return new DefaultServiceInstances(serviceKey, instances);
}
} }

@ -17,10 +17,9 @@
package com.tencent.cloud.polaris.loadbalancer; package com.tencent.cloud.polaris.loadbalancer;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
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.DefaultInstance; import com.tencent.polaris.api.pojo.DefaultInstance;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -63,20 +62,10 @@ public class PolarisServiceInstanceListSupplier extends DelegatingServiceInstanc
throw new IllegalStateException( throw new IllegalStateException(
"PolarisRoutingLoadBalancer only Server with AppName or ServiceIdForDiscovery attribute"); "PolarisRoutingLoadBalancer only Server with AppName or ServiceIdForDiscovery attribute");
} }
List<ServiceInstance> serviceInstances = new ArrayList<>(allServers.size()); return allServers.stream().map(server -> {
for (ServiceInstance server : allServers) { DefaultInstance instance = LoadBalancerUtils.transferServerToServiceInstance(server);
DefaultInstance instance = new DefaultInstance(); return new PolarisServiceInstance(instance);
instance.setNamespace(MetadataContext.LOCAL_NAMESPACE); }).collect(Collectors.toList());
instance.setService(serviceName);
instance.setProtocol(server.getScheme());
instance.setId(server.getInstanceId());
instance.setHost(server.getHost());
instance.setPort(server.getPort());
instance.setWeight(100);
instance.setMetadata(server.getMetadata());
serviceInstances.add(new PolarisServiceInstance(instance));
}
return serviceInstances;
} }
} }

Loading…
Cancel
Save