Skip to content

Commit 310add6

Browse files
committed
refactor: Optimize codes found in code review
Service id Service information storage valueCache usage
1 parent f43ca34 commit 310add6

File tree

10 files changed

+90
-428
lines changed

10 files changed

+90
-428
lines changed

dynamic-config/config-consul/src/main/java/org/apache/servicecomb/config/consul/ConsulConfigClient.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
import static org.apache.servicecomb.config.consul.ConsulConfig.PATH_VERSION;
4848

4949
public class ConsulConfigClient {
50-
private static final Logger logger = LoggerFactory.getLogger(ConsulConfigClient.class);
50+
private static final Logger LOGGER = LoggerFactory.getLogger(ConsulConfigClient.class);
5151

5252
public class GetDataRunnable implements Runnable {
5353

@@ -81,7 +81,7 @@ public void run() {
8181
}
8282
}
8383

84-
private UpdateHandler updateHandler;
84+
private ConsulDynamicPropertiesSource.UpdateHandler updateHandler;
8585

8686
private ConsulConfig consulConfig;
8787

@@ -107,7 +107,7 @@ public void run() {
107107

108108
private Map<String, Object> allLast = new HashMap<>();
109109

110-
public ConsulConfigClient(UpdateHandler updateHandler, Environment environment, ConsulConfigProperties consulConfigProperties, Consul consulClient) {
110+
public ConsulConfigClient(ConsulDynamicPropertiesSource.UpdateHandler updateHandler, Environment environment, ConsulConfigProperties consulConfigProperties, Consul consulClient) {
111111
this.updateHandler = updateHandler;
112112
this.consulConfig = new ConsulConfig(environment);
113113
this.environment = environment;
@@ -240,7 +240,7 @@ public Map<String, Object> parseData(String path) {
240240
try {
241241
return getValues(path);
242242
} catch (Exception e) {
243-
logger.error(e.getMessage(), e);
243+
LOGGER.error(e.getMessage(), e);
244244
}
245245
return new HashMap<>();
246246
}
@@ -266,7 +266,7 @@ private Map<String, Object> getValues(String path) {
266266
try {
267267
properties.load(new StringReader(decodedValue));
268268
} catch (IOException e) {
269-
logger.error(e.getMessage(), e);
269+
LOGGER.error(e.getMessage(), e);
270270
}
271271
values.putAll(toMap(properties));
272272
} else {

dynamic-config/config-consul/src/main/java/org/apache/servicecomb/config/consul/ConsulDynamicPropertiesSource.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@
1919

2020
import com.google.common.net.HostAndPort;
2121
import org.apache.commons.lang3.StringUtils;
22+
import org.apache.servicecomb.config.ConfigurationChangedEvent;
2223
import org.apache.servicecomb.config.DynamicPropertiesSource;
24+
import org.apache.servicecomb.foundation.common.event.EventManager;
2325
import org.kiwiproject.consul.Consul;
26+
import org.slf4j.Logger;
27+
import org.slf4j.LoggerFactory;
2428
import org.springframework.core.env.Environment;
2529
import org.springframework.core.env.MapPropertySource;
2630
import org.springframework.core.env.PropertySource;
@@ -29,6 +33,8 @@
2933
import java.util.concurrent.ConcurrentHashMap;
3034

3135
public class ConsulDynamicPropertiesSource implements DynamicPropertiesSource {
36+
private static final Logger LOGGER = LoggerFactory.getLogger(ConsulDynamicPropertiesSource.class);
37+
3238
public static final String SOURCE_NAME = "consul";
3339

3440
private final Map<String, Object> valueCache = new ConcurrentHashMap<>();
@@ -38,6 +44,18 @@ public class ConsulDynamicPropertiesSource implements DynamicPropertiesSource {
3844
public ConsulDynamicPropertiesSource() {
3945
}
4046

47+
private final UpdateHandler updateHandler = new UpdateHandler();
48+
public class UpdateHandler {
49+
public void handle(Map<String, Object> current, Map<String, Object> last) {
50+
ConfigurationChangedEvent event = ConfigurationChangedEvent.createIncremental(current, last);
51+
LOGGER.info("Dynamic configuration changed: {}", event.getChanged());
52+
valueCache.putAll(event.getAdded());
53+
valueCache.putAll(event.getUpdated());
54+
event.getDeleted().forEach((k, v) -> valueCache.remove(k));
55+
EventManager.post(event);
56+
}
57+
}
58+
4159
private ConsulConfigProperties consulConfigProperties(Environment environment) {
4260
ConsulConfig consulConfig = new ConsulConfig(environment);
4361
ConsulConfigProperties consulConfigProperties = new ConsulConfigProperties();
@@ -60,7 +78,7 @@ private Consul consulClient(ConsulConfigProperties consulConfigProperties) {
6078
private ConsulConfigClient consulConfigClient(Environment environment) {
6179
ConsulConfigProperties consulConfigProperties = consulConfigProperties(environment);
6280
Consul consulClient = consulClient(consulConfigProperties);
63-
return new ConsulConfigClient(new UpdateHandler(), environment, consulConfigProperties, consulClient);
81+
return new ConsulConfigClient(updateHandler, environment, consulConfigProperties, consulClient);
6482
}
6583

6684
@Override

dynamic-config/config-consul/src/main/java/org/apache/servicecomb/config/consul/UpdateHandler.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

service-registry/registry-consul/src/main/java/org/apache/servicecomb/registry/consul/ConsulConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.apache.servicecomb.registry.RegistrationId;
2424
import org.apache.servicecomb.registry.consul.config.ConsulDiscoveryProperties;
2525
import org.apache.servicecomb.registry.consul.config.ConsulProperties;
26-
import org.apache.servicecomb.registry.consul.utils.InetUtils;
2726
import org.kiwiproject.consul.Consul;
2827
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2928
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -48,7 +47,7 @@ public ConsulProperties consulProperties() {
4847
@ConfigurationProperties(prefix = ConsulConst.CONSUL_DISCOVERY_REGISTRY_PREFIX)
4948
@ConditionalOnMissingBean
5049
public ConsulDiscoveryProperties consulDiscoveryProperties() {
51-
return new ConsulDiscoveryProperties(new InetUtils());
50+
return new ConsulDiscoveryProperties();
5251
}
5352

5453
@Bean
@@ -65,7 +64,7 @@ public Consul consulClient(ConsulProperties consulProperties, ConsulDiscoveryPro
6564
@Bean
6665
@ConditionalOnBean(value = {Consul.class, Environment.class, RegistrationId.class, DataCenterProperties.class})
6766
@ConditionalOnMissingBean
68-
public ConsulDiscovery etcdDiscovery() {
67+
public ConsulDiscovery consulDiscovery() {
6968
return new ConsulDiscovery();
7069
}
7170

service-registry/registry-consul/src/main/java/org/apache/servicecomb/registry/consul/ConsulDiscovery.java

Lines changed: 9 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@
2020
import com.google.common.collect.Lists;
2121
import com.google.gson.Gson;
2222
import com.google.gson.GsonBuilder;
23-
import com.google.gson.reflect.TypeToken;
2423
import jakarta.annotation.Resource;
2524
import jakarta.validation.constraints.NotNull;
26-
import org.apache.commons.lang3.StringUtils;
2725
import org.apache.servicecomb.config.BootStrapProperties;
2826
import org.apache.servicecomb.registry.api.Discovery;
2927
import org.apache.servicecomb.registry.consul.config.ConsulDiscoveryProperties;
@@ -37,18 +35,16 @@
3735
import org.kiwiproject.consul.option.Options;
3836
import org.slf4j.Logger;
3937
import org.slf4j.LoggerFactory;
40-
import org.springframework.beans.factory.annotation.Value;
4138
import org.springframework.core.env.Environment;
4239
import org.springframework.util.CollectionUtils;
4340

44-
import java.lang.reflect.Type;
4541
import java.util.ArrayList;
4642
import java.util.List;
4743
import java.util.Map;
4844

4945
public class ConsulDiscovery implements Discovery<ConsulDiscoveryInstance> {
5046

51-
private static final Logger logger = LoggerFactory.getLogger(ConsulDiscovery.class);
47+
private static final Logger LOGGER = LoggerFactory.getLogger(ConsulDiscovery.class);
5248

5349
@Resource
5450
private ConsulProperties consulProperties;
@@ -62,11 +58,6 @@ public class ConsulDiscovery implements Discovery<ConsulDiscoveryInstance> {
6258
@Resource
6359
private Environment environment;
6460

65-
@Value("${servicecomb.rest.address:127.0.0.1:8080}")
66-
private String restAddress;
67-
68-
private String serverPort = "";
69-
7061
private List<ConsulDiscoveryInstance> consulDiscoveryInstanceList;
7162

7263
private InstanceChangedListener<ConsulDiscoveryInstance> instanceChangedListener;
@@ -85,14 +76,14 @@ public boolean enabled(String application, String serviceName) {
8576

8677
@Override
8778
public List<ConsulDiscoveryInstance> findServiceInstances(String application, String serviceName) {
88-
logger.info("findServiceInstances application:{}, serviceName:{}", application, serviceName);
79+
LOGGER.info("findServiceInstances application:{}, serviceName:{}", application, serviceName);
8980
consulDiscoveryInstanceList = getInstances(serviceName);
9081
return consulDiscoveryInstanceList;
9182
}
9283

9384
@Override
9485
public List<String> findServices(String application) {
95-
logger.info("ConsulDiscovery findServices(application={})", application);
86+
LOGGER.info("ConsulDiscovery findServices(application={})", application);
9687
Map<String, Service> services = consulClient.agentClient().getServices();
9788
return Lists.newArrayList(services.keySet());
9889
}
@@ -109,17 +100,12 @@ public boolean enabled() {
109100

110101
@Override
111102
public void init() {
112-
logger.info("ConsulDiscovery init");
113-
if (restAddress.contains("?")) {
114-
serverPort = restAddress.substring(restAddress.indexOf(":") + 1, restAddress.indexOf("?"));
115-
} else {
116-
serverPort = restAddress.substring(restAddress.indexOf(":") + 1);
117-
}
103+
LOGGER.info("ConsulDiscovery init");
118104
}
119105

120106
@Override
121107
public void run() {
122-
logger.info("ConsulDiscovery run");
108+
LOGGER.info("ConsulDiscovery run");
123109
String serviceName = BootStrapProperties.readServiceName(environment);
124110
HealthClient healthClient = consulClient.healthClient();
125111
svHealth = ServiceHealthCache.newCache(healthClient, serviceName, true, Options.BLANK_QUERY_OPTIONS, consulDiscoveryProperties.getWatchSeconds());
@@ -133,11 +119,10 @@ public void destroy() {
133119
if (svHealth != null) {
134120
svHealth.stop();
135121
}
136-
String serviceName = BootStrapProperties.readServiceName(environment);
137-
String serviceId = serviceName + "-" + serverPort;
138-
logger.info("ConsulDiscovery destroy consul service id={}", serviceId);
122+
String serviceId = consulDiscoveryProperties.getServiceId();
123+
LOGGER.info("ConsulDiscovery destroy consul service id={}", serviceId);
139124
if (consulClient != null) {
140-
logger.info("ConsulDiscovery consulClient destroy");
125+
LOGGER.info("ConsulDiscovery consulClient destroy");
141126
consulClient.agentClient().deregister(serviceId);
142127
consulClient.destroy();
143128
}
@@ -154,24 +139,8 @@ private void addInstancesToList(List<ConsulDiscoveryInstance> instances, String
154139
if (!CollectionUtils.isEmpty(healthServices)) {
155140
for (ServiceHealth serviceHealth : healthServices) {
156141
Service service = serviceHealth.getService();
157-
logger.info("healthService:{}", service.getId());
158-
Map<String, String> meta = service.getMeta();
159-
ConsulInstance consulInstance = new ConsulInstance();
160-
consulInstance.setServiceId(service.getId());
161-
consulInstance.setServiceName(meta.get("serviceName"));
162-
consulInstance.setInstanceId(meta.get("instanceId"));
163-
consulInstance.setApplication(meta.get("application"));
164-
consulInstance.setEnvironment(meta.get("env"));
165-
consulInstance.setAlias(meta.get("alias"));
166-
consulInstance.setVersion(meta.get("version"));
167142
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
168-
String[] endpoints = gson.fromJson(meta.get("endpoints"), String[].class);
169-
consulInstance.setEndpoints(Lists.newArrayList(endpoints));
170-
if (StringUtils.isNotBlank(meta.get("properties"))) {
171-
Type type = new TypeToken<Map<String, String>>() {
172-
}.getType();
173-
consulInstance.setProperties(gson.fromJson(meta.get("properties"), type));
174-
}
143+
ConsulInstance consulInstance = gson.fromJson(service.getMeta().get("meta"), ConsulInstance.class);
175144
instances.add(new ConsulDiscoveryInstance(consulInstance));
176145
}
177146
}

0 commit comments

Comments
 (0)