Optimize FizzServiceRegistration.java
This commit is contained in:
@@ -21,8 +21,14 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.cloud.client.serviceregistry.Registration;
|
||||
import org.springframework.cloud.client.serviceregistry.ServiceRegistry;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import we.service_registry.eureka.FizzEurekaHelper;
|
||||
import we.service_registry.nacos.FizzNacosHelper;
|
||||
import we.util.PropertiesUtils;
|
||||
import we.util.YmlUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author hongqiaowei
|
||||
@@ -32,14 +38,45 @@ public abstract class FizzServiceRegistration {
|
||||
|
||||
protected static final Logger log = LoggerFactory.getLogger(FizzServiceRegistration.class);
|
||||
|
||||
public enum Type {
|
||||
EUREKA, NACOS;
|
||||
}
|
||||
|
||||
public enum ConfigFormat {
|
||||
YML, PROPERTIES;
|
||||
}
|
||||
|
||||
public enum ServerStatus {
|
||||
UP, DOWN, STARTING, OUT_OF_SERVICE, UNKNOWN;
|
||||
}
|
||||
|
||||
private String id;
|
||||
|
||||
private Type type;
|
||||
|
||||
private Registration registration;
|
||||
|
||||
private ServiceRegistry serviceRegistry;
|
||||
|
||||
public FizzServiceRegistration(String id, Registration registration, ServiceRegistry serviceRegistry) {
|
||||
public static FizzServiceRegistration getFizzServiceRegistration(ApplicationContext applicationContext, Type type, ConfigFormat configFormat, String config) {
|
||||
Properties configProperties;
|
||||
if (configFormat == ConfigFormat.YML) {
|
||||
configProperties = YmlUtils.string2properties(config);
|
||||
} else {
|
||||
configProperties = PropertiesUtils.from(config);
|
||||
}
|
||||
FizzServiceRegistration fizzServiceRegistration;
|
||||
if (type == Type.EUREKA) {
|
||||
fizzServiceRegistration = FizzEurekaHelper.getServiceRegistration(applicationContext, configProperties);
|
||||
} else {
|
||||
fizzServiceRegistration = FizzNacosHelper. getServiceRegistration(applicationContext, configProperties);
|
||||
}
|
||||
return fizzServiceRegistration;
|
||||
}
|
||||
|
||||
public FizzServiceRegistration(String id, Type type, Registration registration, ServiceRegistry serviceRegistry) {
|
||||
this.id = id;
|
||||
this.type = type;
|
||||
this.registration = registration;
|
||||
this.serviceRegistry = serviceRegistry;
|
||||
}
|
||||
@@ -48,6 +85,10 @@ public abstract class FizzServiceRegistration {
|
||||
return id;
|
||||
}
|
||||
|
||||
public Type getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void register() {
|
||||
serviceRegistry.register(registration);
|
||||
}
|
||||
@@ -56,7 +97,7 @@ public abstract class FizzServiceRegistration {
|
||||
serviceRegistry.deregister(registration);
|
||||
}
|
||||
|
||||
public abstract RegistryCenter.Status getRegistryCenterStatus();
|
||||
public abstract ServerStatus getServerStatus();
|
||||
|
||||
public abstract List<String> getServices();
|
||||
|
||||
|
||||
@@ -21,13 +21,7 @@ import com.fasterxml.jackson.annotation.JsonCreator;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import we.Fizz;
|
||||
import we.service_registry.eureka.FizzEurekaHelper;
|
||||
import we.service_registry.nacos.FizzNacosHelper;
|
||||
import we.util.JacksonUtils;
|
||||
import we.util.PropertiesUtils;
|
||||
import we.util.YmlUtils;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author hongqiaowei
|
||||
@@ -35,14 +29,6 @@ import java.util.Properties;
|
||||
|
||||
public class RegistryCenter {
|
||||
|
||||
public enum Status {
|
||||
UP,
|
||||
DOWN,
|
||||
STARTING,
|
||||
OUT_OF_SERVICE,
|
||||
UNKNOWN;
|
||||
}
|
||||
|
||||
public static final int EUREKA = 1;
|
||||
public static final int NACOS = 2;
|
||||
|
||||
@@ -84,17 +70,12 @@ public class RegistryCenter {
|
||||
@JsonIgnore
|
||||
public FizzServiceRegistration getFizzServiceRegistration() {
|
||||
if (fizzServiceRegistration == null) {
|
||||
Properties properties;
|
||||
if (this.clientConfigFormat == YML) {
|
||||
properties = YmlUtils.string2properties(clientConfig);
|
||||
} else {
|
||||
properties = PropertiesUtils.from(clientConfig);
|
||||
}
|
||||
if (type == EUREKA) {
|
||||
fizzServiceRegistration = FizzEurekaHelper.getServiceRegistration(Fizz.context, properties);
|
||||
} else {
|
||||
fizzServiceRegistration = FizzNacosHelper. getServiceRegistration(Fizz.context, properties);
|
||||
}
|
||||
fizzServiceRegistration = FizzServiceRegistration.getFizzServiceRegistration(
|
||||
Fizz.context,
|
||||
type == EUREKA ? FizzServiceRegistration.Type.EUREKA : FizzServiceRegistration.Type.NACOS,
|
||||
clientConfigFormat == YML ? FizzServiceRegistration.ConfigFormat.YML : FizzServiceRegistration.ConfigFormat.PROPERTIES,
|
||||
clientConfig
|
||||
);
|
||||
}
|
||||
return fizzServiceRegistration;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaRegistrati
|
||||
import org.springframework.cloud.netflix.eureka.serviceregistry.EurekaServiceRegistry;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import we.service_registry.FizzServiceRegistration;
|
||||
import we.service_registry.RegistryCenter;
|
||||
import we.util.Consts;
|
||||
import we.util.Utils;
|
||||
|
||||
@@ -44,7 +43,7 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
||||
private final CloudEurekaClient client;
|
||||
|
||||
public FizzEurekaServiceRegistration(String id, EurekaRegistration registration, EurekaServiceRegistry serviceRegistry, CloudEurekaClient client) {
|
||||
super(id, registration, serviceRegistry);
|
||||
super(id, Type.EUREKA, registration, serviceRegistry);
|
||||
this.client = client;
|
||||
}
|
||||
|
||||
@@ -53,7 +52,7 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegistryCenter.Status getRegistryCenterStatus() {
|
||||
public ServerStatus getServerStatus() {
|
||||
EurekaClientConfig eurekaClientConfig = client.getEurekaClientConfig();
|
||||
List<String> eurekaServerServiceUrls = eurekaClientConfig.getEurekaServerServiceUrls(EurekaClientConfigBean.DEFAULT_ZONE);
|
||||
Map<String, Integer> registryCenterVip2port = new HashMap<>();
|
||||
@@ -107,21 +106,21 @@ public class FizzEurekaServiceRegistration extends FizzServiceRegistration {
|
||||
throw Utils.runtimeExceptionWithoutStack("can't find any server with " + join);
|
||||
}
|
||||
|
||||
private RegistryCenter.Status transfrom(InstanceInfo.InstanceStatus status) {
|
||||
private ServerStatus transfrom(InstanceInfo.InstanceStatus status) {
|
||||
if ( status == InstanceInfo.InstanceStatus.UP) {
|
||||
return RegistryCenter.Status.UP;
|
||||
return ServerStatus.UP;
|
||||
|
||||
} else if (status == InstanceInfo.InstanceStatus.DOWN) {
|
||||
return RegistryCenter.Status.DOWN;
|
||||
return ServerStatus.DOWN;
|
||||
|
||||
} else if (status == InstanceInfo.InstanceStatus.OUT_OF_SERVICE) {
|
||||
return RegistryCenter.Status.OUT_OF_SERVICE;
|
||||
return ServerStatus.OUT_OF_SERVICE;
|
||||
|
||||
} else if (status == InstanceInfo.InstanceStatus.STARTING) {
|
||||
return RegistryCenter.Status.STARTING;
|
||||
return ServerStatus.STARTING;
|
||||
|
||||
} else {
|
||||
return RegistryCenter.Status.UNKNOWN;
|
||||
return ServerStatus.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ import com.alibaba.nacos.api.naming.pojo.Instance;
|
||||
import com.alibaba.nacos.api.naming.pojo.ListView;
|
||||
import org.springframework.util.StringUtils;
|
||||
import we.service_registry.FizzServiceRegistration;
|
||||
import we.service_registry.RegistryCenter;
|
||||
import we.util.Consts;
|
||||
import we.util.Utils;
|
||||
|
||||
@@ -50,7 +49,7 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration {
|
||||
private boolean userClusterName;
|
||||
|
||||
public FizzNacosServiceRegistration(String id, NacosRegistration registration, NacosServiceRegistry serviceRegistry, NamingService namingService) {
|
||||
super(id, registration, serviceRegistry);
|
||||
super(id, Type.NACOS, registration, serviceRegistry);
|
||||
this.namingService = namingService;
|
||||
NacosDiscoveryProperties discoveryProperties = registration.getNacosDiscoveryProperties();
|
||||
groupName = discoveryProperties.getGroup();
|
||||
@@ -69,21 +68,21 @@ public class FizzNacosServiceRegistration extends FizzServiceRegistration {
|
||||
}
|
||||
|
||||
@Override
|
||||
public RegistryCenter.Status getRegistryCenterStatus() {
|
||||
public ServerStatus getServerStatus() {
|
||||
String status = namingService.getServerStatus();
|
||||
return transfrom(status);
|
||||
}
|
||||
|
||||
private RegistryCenter.Status transfrom(String status) {
|
||||
private ServerStatus transfrom(String status) {
|
||||
if (status.equals("UP")) {
|
||||
return RegistryCenter.Status.UP;
|
||||
return ServerStatus.UP;
|
||||
|
||||
} else if (status.equals("DOWN")) {
|
||||
return RegistryCenter.Status.DOWN;
|
||||
return ServerStatus.DOWN;
|
||||
|
||||
} else {
|
||||
log.warn("{} status is {}", getId(), status);
|
||||
return RegistryCenter.Status.UNKNOWN;
|
||||
return ServerStatus.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user