Skip to content

Commit 3c46683

Browse files
committed
feat(): refactor
2 parents a4da395 + 8a09ec8 commit 3c46683

29 files changed

+582
-236
lines changed

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,6 @@ public interface ConfigManager {
3838
* @return the config file instance for the namespace
3939
*/
4040
ConfigFile getConfigFile(String namespace, ConfigFileFormat configFileFormat);
41+
42+
4143
}

apollo-client/src/main/java/com/ctrip/framework/apollo/internals/ConfigMonitorInitializer.java

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,18 @@
3737
import com.ctrip.framework.apollo.tracer.spi.MessageProducer;
3838
import com.ctrip.framework.apollo.util.ConfigUtil;
3939
import com.ctrip.framework.foundation.internals.ServiceBootstrap;
40+
import com.google.common.collect.Lists;
4041
import java.util.List;
4142

4243
/**
4344
* ConfigMonitorInitializer initializes the Apollo Config Monitor.
4445
*/
4546
public class ConfigMonitorInitializer {
4647

47-
protected static boolean hasInitialized = false;
48-
private static ConfigUtil m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
49-
private static ApolloClientMonitorContext monitorContext = ApolloInjector.getInstance(
48+
private static final ApolloClientMonitorContext MONITOR_CONTEXT = ApolloInjector.getInstance(
5049
ApolloClientMonitorContext.class);
50+
protected static volatile boolean hasInitialized = false;
51+
private static ConfigUtil m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
5152

5253
public static void initialize() {
5354
if (m_configUtil.isClientMonitorEnabled() && !hasInitialized) {
@@ -64,41 +65,49 @@ private static void doInit() {
6465
initializeMetricsEventListener();
6566
initializeMetricsExporter();
6667
initializeJmxMonitoring();
67-
hasInitialized = true;
6868
}
6969

7070

7171
private static void initializeJmxMonitoring() {
7272
if (m_configUtil.isClientMonitorJmxEnabled()) {
73-
monitorContext.getCollectors().forEach(metricsCollector ->
73+
MONITOR_CONTEXT.getApolloClientMonitorEventListeners().forEach(metricsListener ->
7474
ApolloClientJmxMBeanRegister.register(
75-
MBEAN_NAME + metricsCollector.getName(), metricsCollector)
75+
MBEAN_NAME + metricsListener.getName(), metricsListener)
7676
);
7777
}
7878
}
7979

8080
private static void initializeMetricsEventListener() {
81-
DefaultConfigManager configManager = (DefaultConfigManager) ApolloInjector.getInstance(
81+
ConfigManager configManager = ApolloInjector.getInstance(
8282
ConfigManager.class);
83-
monitorContext.setApolloClientBootstrapArgsMonitorApi(new DefaultApolloClientBootstrapArgsApi(
84-
m_configUtil));
85-
monitorContext.setApolloClientExceptionMonitorApi(new DefaultApolloClientExceptionApi());
86-
monitorContext.setApolloClientNamespaceMonitorApi(new DefaultApolloClientNamespaceApi(
87-
configManager.m_configs, configManager.m_configFiles));
88-
monitorContext.setApolloClientThreadPoolMonitorApi(new DefaultApolloClientThreadPoolApi(
83+
DefaultApolloClientBootstrapArgsApi defaultApolloClientBootstrapArgsApi = new DefaultApolloClientBootstrapArgsApi(
84+
m_configUtil);
85+
DefaultApolloClientExceptionApi defaultApolloClientExceptionApi = new DefaultApolloClientExceptionApi(m_configUtil);
86+
DefaultApolloClientNamespaceApi defaultApolloClientNamespaceApi = new DefaultApolloClientNamespaceApi(
87+
configManager);
88+
DefaultApolloClientThreadPoolApi defaultApolloClientThreadPoolApi = new DefaultApolloClientThreadPoolApi(
8989
RemoteConfigRepository.m_executorService,
9090
AbstractConfig.m_executorService, AbstractConfigFile.m_executorService,
91-
AbstractApolloClientMetricsExporter.m_executorService));
91+
AbstractApolloClientMetricsExporter.m_executorService);
92+
93+
MONITOR_CONTEXT.setApolloClientBootstrapArgsMonitorApi(defaultApolloClientBootstrapArgsApi);
94+
MONITOR_CONTEXT.setApolloClientExceptionMonitorApi(defaultApolloClientExceptionApi);
95+
MONITOR_CONTEXT.setApolloClientNamespaceMonitorApi(defaultApolloClientNamespaceApi);
96+
MONITOR_CONTEXT.setApolloClientThreadPoolMonitorApi(defaultApolloClientThreadPoolApi);
97+
MONITOR_CONTEXT.setApolloClientMonitorEventListeners(
98+
Lists.newArrayList(defaultApolloClientBootstrapArgsApi,
99+
defaultApolloClientNamespaceApi, defaultApolloClientThreadPoolApi,
100+
defaultApolloClientExceptionApi));
92101
}
93102

94103
private static void initializeMetricsExporter(
95104
) {
96105
ApolloClientMetricsExporterFactory exporterFactory = ApolloInjector.getInstance(
97106
ApolloClientMetricsExporterFactory.class);
98107
ApolloClientMetricsExporter metricsReporter = exporterFactory.getMetricsReporter(
99-
monitorContext.getCollectors());
100-
if(metricsReporter != null) {
101-
monitorContext.setApolloClientMetricsExporter(metricsReporter);
108+
MONITOR_CONTEXT.getApolloClientMonitorEventListeners());
109+
if (metricsReporter != null) {
110+
MONITOR_CONTEXT.setApolloClientMetricsExporter(metricsReporter);
102111
}
103112
}
104113

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/api/ApolloClientNamespaceMonitorApi.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,6 @@ public interface ApolloClientNamespaceMonitorApi {
3535
*/
3636
Integer getNamespacePropertySize(String namespace);
3737

38-
/**
39-
* get ConfigFile namespaces
40-
*/
41-
List<String> getConfigFileNamespaces();
42-
4338
/**
4439
* get not found namespaces
4540
*/

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/ApolloClientMonitorConstant.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,11 @@
1616
*/
1717
package com.ctrip.framework.apollo.monitor.internal;
1818

19-
import java.time.ZoneId;
20-
import java.time.format.DateTimeFormatter;
21-
2219
/**
2320
* @author Rawven
2421
*/
2522
public class ApolloClientMonitorConstant {
2623

27-
/**
28-
* util
29-
*/
30-
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern(
31-
"yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
32-
3324
/**
3425
* common
3526
*/
@@ -61,7 +52,7 @@ public class ApolloClientMonitorConstant {
6152
public static final String APOLLO_CLIENT_NAMESPACE_FIRST_LOAD_SPEND = "Apollo.Client.NamespaceFirstLoadSpendTime";
6253

6354
/**
64-
* collector tag
55+
* listener tag
6556
*/
6657
public static final String TAG_ERROR = "ErrorMonitor";
6758
public static final String TAG_NAMESPACE = "NamespaceMonitor";
@@ -73,7 +64,6 @@ public class ApolloClientMonitorConstant {
7364
*/
7465
public static final String METRICS_NAMESPACE_LATEST_UPDATE_TIME = "apollo_client_namespace_latest_update_time";
7566
public static final String METRICS_NAMESPACE_ITEM_NUM = "apollo_client_namespace_item_num";
76-
public static final String METRICS_CONFIG_FILE_NUM = "apollo_client_config_file_num";
7767
public static final String METRICS_EXCEPTION_NUM = "apollo_client_exception_num";
7868
public static final String METRICS_NAMESPACE_FIRST_LOAD_SPEND = "apollo_client_namespace_first_load_time_spend_in_ms";
7969
public static final String METRICS_NAMESPACE_USAGE = "apollo_client_namespace_usage";

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/ApolloClientMonitorContext.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.ctrip.framework.apollo.monitor.internal.listener.impl.NullClientNamespaceMonitorApi;
2929
import com.ctrip.framework.apollo.monitor.internal.listener.impl.NullClientThreadPoolMonitorApi;
3030
import com.google.common.collect.Lists;
31+
import java.util.Collections;
3132
import java.util.List;
3233

3334
/**
@@ -40,6 +41,20 @@ public class ApolloClientMonitorContext {
4041
private ApolloClientBootstrapArgsMonitorApi apolloClientBootstrapArgsMonitorApi = new NullClientBootstrapArgsMonitorApi();
4142
private ApolloClientThreadPoolMonitorApi apolloClientThreadPoolMonitorApi = new NullClientThreadPoolMonitorApi();
4243
private ApolloClientMetricsExporter apolloClientMetricsExporter = new NullApolloClientMetricsExporter();
44+
private List<ApolloClientMonitorEventListener> listener = Lists.newArrayList();
45+
46+
public void addApolloClientMonitorEventListener(ApolloClientMonitorEventListener listener) {
47+
this.listener.add(listener);
48+
}
49+
50+
public List<ApolloClientMonitorEventListener> getApolloClientMonitorEventListeners() {
51+
return Collections.unmodifiableList(listener);
52+
}
53+
54+
public void setApolloClientMonitorEventListeners(
55+
List<ApolloClientMonitorEventListener> listeners) {
56+
listener = listeners;
57+
}
4358

4459
public void setApolloClientExceptionMonitorApi(
4560
ApolloClientExceptionMonitorApi apolloClientExceptionMonitorApi) {
@@ -66,14 +81,6 @@ public void setApolloClientMetricsExporter(
6681
this.apolloClientMetricsExporter = apolloClientMetricsExporter;
6782
}
6883

69-
public List<ApolloClientMonitorEventListener> getCollectors() {
70-
return Lists.newArrayList(
71-
(ApolloClientMonitorEventListener) apolloClientBootstrapArgsMonitorApi,
72-
(ApolloClientMonitorEventListener) apolloClientThreadPoolMonitorApi,
73-
(ApolloClientMonitorEventListener) apolloClientExceptionMonitorApi,
74-
(ApolloClientMonitorEventListener) apolloClientNamespaceMonitorApi);
75-
}
76-
7784
public ApolloClientExceptionMonitorApi getExceptionApi() {
7885
return apolloClientExceptionMonitorApi;
7986
}

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/DefaultConfigMonitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
*/
3131
public class DefaultConfigMonitor implements ConfigMonitor {
3232

33-
private ApolloClientMonitorContext apolloClientMonitorContext = ApolloInjector.getInstance(
33+
private final ApolloClientMonitorContext apolloClientMonitorContext = ApolloInjector.getInstance(
3434
ApolloClientMonitorContext.class);
3535

3636
@Override

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/event/ApolloClientMonitorEventFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
*/
2525
public class ApolloClientMonitorEventFactory {
2626

27-
public static volatile ApolloClientMonitorEventFactory INSTANCE;
27+
private static volatile ApolloClientMonitorEventFactory INSTANCE;
2828

2929
private ApolloClientMonitorEventFactory() {
3030
}

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/event/ApolloClientMonitorEventPublisher.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@
2626
*/
2727
public class ApolloClientMonitorEventPublisher {
2828

29-
private static ApolloClientMonitorContext COLLECTOR_MANAGER = ApolloInjector.getInstance(
29+
private static ApolloClientMonitorContext MONITOR_CONTEXT = ApolloInjector.getInstance(
3030
ApolloClientMonitorContext.class);
3131
private static ConfigUtil m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
3232

3333
public static void publish(ApolloClientMonitorEvent event) {
3434
if (m_configUtil.isClientMonitorEnabled()) {
35-
for (ApolloClientMonitorEventListener collector : COLLECTOR_MANAGER.getCollectors()) {
36-
if (collector.isSupported(event)) {
37-
collector.collect(event);
35+
for (ApolloClientMonitorEventListener listener : MONITOR_CONTEXT.getApolloClientMonitorEventListeners()) {
36+
if (listener.isSupported(event)) {
37+
listener.collect(event);
3838
return;
3939
}
4040
}
4141
}
4242
}
4343

4444
protected static void reset() {
45-
COLLECTOR_MANAGER = ApolloInjector.getInstance(
45+
MONITOR_CONTEXT = ApolloInjector.getInstance(
4646
ApolloClientMonitorContext.class);
4747
m_configUtil = ApolloInjector.getInstance(ConfigUtil.class);
4848

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/AbstractApolloClientMetricsExporter.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,14 @@ public abstract class AbstractApolloClientMetricsExporter implements ApolloClien
4444
ApolloThreadFactory.create(ApolloClientMetricsExporter.class.getName(), true));
4545
}
4646

47-
protected List<ApolloClientMonitorEventListener> collectors;
47+
protected List<ApolloClientMonitorEventListener> listeners;
4848

4949
@Override
50-
public void init(List<ApolloClientMonitorEventListener> collectors, long collectPeriod) {
51-
log.info("Initializing metrics exporter with {} collectors and collect period of {} seconds.",
52-
collectors.size(), collectPeriod);
50+
public void init(List<ApolloClientMonitorEventListener> listeners, long collectPeriod) {
51+
log.info("Initializing metrics exporter with {} listeners and collect period of {} seconds.",
52+
listeners.size(), collectPeriod);
5353
doInit();
54-
this.collectors = collectors;
54+
this.listeners = listeners;
5555
initScheduleMetricsCollectSync(collectPeriod);
5656
log.info("Metrics collection scheduled with a period of {} seconds.", collectPeriod);
5757
}
@@ -73,10 +73,10 @@ private void initScheduleMetricsCollectSync(long collectPeriod) {
7373

7474
protected void updateMetricsData() {
7575
log.debug("Start to update metrics data job");
76-
collectors.forEach(collector -> {
77-
if (collector.isMetricsSampleUpdated()) {
78-
log.debug("Collector {} has updated samples.", collector.getName());
79-
collector.export().forEach(this::registerSample);
76+
listeners.forEach(listener -> {
77+
if (listener.isMetricsSampleUpdated()) {
78+
log.debug("Listener {} has updated samples.", listener.getName());
79+
listener.export().forEach(this::registerSample);
8080
}
8181
});
8282
}

apollo-client/src/main/java/com/ctrip/framework/apollo/monitor/internal/exporter/ApolloClientMetricsExporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public interface ApolloClientMetricsExporter extends Ordered {
2929
/**
3030
* init method
3131
*/
32-
void init(List<ApolloClientMonitorEventListener> collectors, long collectPeriod);
32+
void init(List<ApolloClientMonitorEventListener> listeners, long collectPeriod);
3333

3434
/**
3535
* Used to access custom monitoring systems

0 commit comments

Comments
 (0)