From bf3d4f4ca3ad0b6301876dca0b7c345d739c1bd8 Mon Sep 17 00:00:00 2001 From: namelessssssssssss <100946116+namelessssssssssss@users.noreply.github.com> Date: Thu, 31 Aug 2023 08:02:41 +0800 Subject: [PATCH] Metrics event split (#12888) * Split event-related api out of dubbo-metrics-api. * Add new module to .artifacts * Temporary remove dubbo-plugin-metrics * Fix pom * * Remove the use of dispatcher name * * Bug fix * * Bug fix * Update ScopeClusterInvokerTest.java * * Trigger test * * Fix ut --------- Co-authored-by: songxiaosheng --- .artifacts | 1 + .../support/AbstractClusterInvokerTest.java | 1 - dubbo-distribution/dubbo-all/pom.xml | 8 ++++ dubbo-distribution/dubbo-bom/pom.xml | 5 +++ dubbo-metrics/dubbo-metrics-api/pom.xml | 5 +++ .../collector/DefaultCollectorTest.java | 14 +++++-- dubbo-metrics/dubbo-metrics-event/pom.xml | 42 +++++++++++++++++++ .../dubbo/metrics/MetricsConstants.java | 0 .../dubbo/metrics/event/MetricsEvent.java | 23 +++++----- .../dubbo/metrics/event/MetricsEventBus.java | 13 +++--- .../event/MetricsEventMulticaster.java | 0 .../dubbo/metrics/event/TimeCounterEvent.java | 2 +- .../MetricsNeverHappenException.java | 0 .../metrics/listener/MetricsListener.java | 0 .../apache/dubbo/metrics/model/TimePair.java | 0 .../dubbo/metrics/model/key/MetricsKey.java | 0 .../dubbo/metrics/model/key/MetricsLevel.java | 0 .../dubbo/metrics/model/key/TypeWrapper.java | 0 dubbo-metrics/pom.xml | 1 + dubbo-test/dubbo-dependencies-all/pom.xml | 5 +++ 20 files changed, 96 insertions(+), 24 deletions(-) create mode 100644 dubbo-metrics/dubbo-metrics-event/pom.xml rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java (86%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java (91%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java (95%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/model/TimePair.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java (100%) rename dubbo-metrics/{dubbo-metrics-api => dubbo-metrics-event}/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java (100%) diff --git a/.artifacts b/.artifacts index be912a56f7..aa865b891a 100644 --- a/.artifacts +++ b/.artifacts @@ -66,6 +66,7 @@ dubbo-metrics-prometheus dubbo-metrics-registry dubbo-metrics-config-center dubbo-metrics-netty +dubbo-metrics-event dubbo-monitor dubbo-monitor-api dubbo-monitor-common diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java index 31c3af53f2..496e4369b2 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java +++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java @@ -60,7 +60,6 @@ import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY; import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_AVAILABLE_CHECK_KEY; -import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK; import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.same; diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml index 89e2b77abc..c2e4b05633 100644 --- a/dubbo-distribution/dubbo-all/pom.xml +++ b/dubbo-distribution/dubbo-all/pom.xml @@ -190,6 +190,13 @@ + + org.apache.dubbo + dubbo-metrics-event + ${project.version} + compile + true + org.apache.dubbo dubbo-metrics-api @@ -690,6 +697,7 @@ org.apache.dubbo:dubbo-metadata-report-nacos org.apache.dubbo:dubbo-metadata-report-redis org.apache.dubbo:dubbo-metadata-report-zookeeper + org.apache.dubbo:dubbo-metrics-event org.apache.dubbo:dubbo-metrics-api org.apache.dubbo:dubbo-metrics-default org.apache.dubbo:dubbo-metrics-registry diff --git a/dubbo-distribution/dubbo-bom/pom.xml b/dubbo-distribution/dubbo-bom/pom.xml index 9757c56352..bf3b0d3110 100644 --- a/dubbo-distribution/dubbo-bom/pom.xml +++ b/dubbo-distribution/dubbo-bom/pom.xml @@ -251,6 +251,11 @@ dubbo-metrics-api ${project.version} + + org.apache.dubbo + dubbo-metrics-event + ${project.version} + org.apache.dubbo dubbo-metrics-default diff --git a/dubbo-metrics/dubbo-metrics-api/pom.xml b/dubbo-metrics/dubbo-metrics-api/pom.xml index 3c31ae389c..3ee341dcba 100644 --- a/dubbo-metrics/dubbo-metrics-api/pom.xml +++ b/dubbo-metrics/dubbo-metrics-api/pom.xml @@ -36,6 +36,11 @@ dubbo-common ${project.parent.version} + + org.apache.dubbo + dubbo-metrics-event + ${project.parent.version} + org.apache.dubbo dubbo-rpc-api diff --git a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java index 450da8a7c6..9fd5257cc5 100644 --- a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java +++ b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/DefaultCollectorTest.java @@ -19,7 +19,10 @@ package org.apache.dubbo.metrics.collector; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.constants.CommonConstants; +import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; +import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.config.ApplicationConfig; +import org.apache.dubbo.metrics.MetricsConstants; import org.apache.dubbo.metrics.TestMetricsInvoker; import org.apache.dubbo.metrics.event.MetricsDispatcher; import org.apache.dubbo.metrics.event.RequestEvent; @@ -134,6 +137,9 @@ class DefaultCollectorTest { DefaultMetricsCollector collector = applicationModel.getBeanFactory().getOrRegisterBean(DefaultMetricsCollector.class); collector.setCollectEnabled(true); + ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(DefaultCollectorTest.class); + logger.warn("0-99","","","Test error code message."); + metricsFilter.invoke(new TestMetricsInvoker(side), invocation); try { Thread.sleep(50); @@ -150,8 +156,8 @@ class DefaultCollectorTest { // push finish rt +1 List metricSamples = collector.collect(); - //num(total+success+processing) + rt(5) = 8 - Assertions.assertEquals(8, metricSamples.size()); + //num(total+success+processing) + rt(5) + error code = 9 + Assertions.assertEquals(metricSamples.size(),9); List metricsNames = metricSamples.stream().map(MetricSample::getName).collect(Collectors.toList()); // No error will contain total+success+processing String REQUESTS = new MetricsKeyWrapper(METRIC_REQUESTS, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey(); @@ -192,8 +198,8 @@ class DefaultCollectorTest { long c2 = eventObj.getTimePair().calc(); metricSamples = collector.collect(); - // num(total+success+error+total_error+processing) + rt(5) = 5 - Assertions.assertEquals(10, metricSamples.size()); + // num(total+success+error+total_error+processing) + rt(5) + error code = 11 + Assertions.assertEquals(11, metricSamples.size()); String TIMEOUT = new MetricsKeyWrapper(METRIC_REQUESTS_TIMEOUT, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey(); String TOTAL_FAILED = new MetricsKeyWrapper(METRIC_REQUESTS_TOTAL_FAILED, MetricsPlaceValue.of(side, MetricsLevel.SERVICE)).targetKey(); diff --git a/dubbo-metrics/dubbo-metrics-event/pom.xml b/dubbo-metrics/dubbo-metrics-event/pom.xml new file mode 100644 index 0000000000..4db769019c --- /dev/null +++ b/dubbo-metrics/dubbo-metrics-event/pom.xml @@ -0,0 +1,42 @@ + + + 4.0.0 + + org.apache.dubbo + dubbo-metrics + ${revision} + ../pom.xml + + dubbo-metrics-event + jar + ${project.artifactId} + The metrics event-related api module of dubbo project + + false + + + + + org.apache.dubbo + dubbo-common + ${project.parent.version} + + + + diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/MetricsConstants.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java similarity index 86% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java index 3b22dfa818..b0e587a396 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java +++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEvent.java @@ -19,7 +19,6 @@ package org.apache.dubbo.metrics.event; import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; import org.apache.dubbo.metrics.exception.MetricsNeverHappenException; -import org.apache.dubbo.metrics.model.MethodMetric; import org.apache.dubbo.metrics.model.key.TypeWrapper; import org.apache.dubbo.rpc.model.ApplicationModel; @@ -33,13 +32,13 @@ import java.util.Map; public abstract class MetricsEvent { /** - * Metric object. (eg. {@link MethodMetric}) + * Metric object. (eg. MethodMetric) */ protected transient final ApplicationModel source; private boolean available = true; private final TypeWrapper typeWrapper; private final String appName; - private final MetricsDispatcher metricsDispatcher; + private final MetricsEventMulticaster metricsEventMulticaster; private final Map attachments = new IdentityHashMap<>(8); @@ -47,7 +46,7 @@ public abstract class MetricsEvent { this(source, null, null, typeWrapper); } - public MetricsEvent(ApplicationModel source, String appName, MetricsDispatcher metricsDispatcher, TypeWrapper typeWrapper) { + public MetricsEvent(ApplicationModel source, String appName, MetricsEventMulticaster metricsEventMulticaster, TypeWrapper typeWrapper) { this.typeWrapper = typeWrapper; if (source == null) { this.source = ApplicationModel.defaultModel(); @@ -56,20 +55,20 @@ public abstract class MetricsEvent { } else { this.source = source; } - if (metricsDispatcher == null) { + if (metricsEventMulticaster == null) { if (this.source.isDestroyed()) { - this.metricsDispatcher = null; + this.metricsEventMulticaster = null; } else { ScopeBeanFactory beanFactory = this.source.getBeanFactory(); if (beanFactory.isDestroyed()) { - this.metricsDispatcher = null; + this.metricsEventMulticaster = null; } else { - MetricsDispatcher dispatcher = beanFactory.getBean(MetricsDispatcher.class); - this.metricsDispatcher = dispatcher; + MetricsEventMulticaster dispatcher = beanFactory.getBean(MetricsEventMulticaster.class); + this.metricsEventMulticaster = dispatcher; } } } else { - this.metricsDispatcher = metricsDispatcher; + this.metricsEventMulticaster = metricsEventMulticaster; } if (appName == null) { this.appName = this.source.tryGetApplicationName(); @@ -115,8 +114,8 @@ public abstract class MetricsEvent { return source; } - public MetricsDispatcher getMetricsDispatcher() { - return metricsDispatcher; + public MetricsEventMulticaster getMetricsEventMulticaster() { + return metricsEventMulticaster; } public String appName() { diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java similarity index 91% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java index 74ef55e4c7..2d0888d17a 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java +++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventBus.java @@ -42,7 +42,7 @@ public class MetricsEventBus { if (event.getSource() == null) { return; } - MetricsDispatcher dispatcher = event.getMetricsDispatcher(); + MetricsEventMulticaster dispatcher = event.getMetricsEventMulticaster(); Optional.ofNullable(dispatcher).ifPresent(d -> { tryInvoke(() -> d.publishEvent(event)); }); @@ -106,13 +106,14 @@ public class MetricsEventBus { * eventSaveRunner saves the event, so that the calculation rt is introverted */ public static void before(MetricsEvent event) { - MetricsDispatcher dispatcher = validate(event); + MetricsEventMulticaster dispatcher = validate(event); + if (dispatcher == null) return; tryInvoke(() -> dispatcher.publishEvent(event)); } public static void after(MetricsEvent event, Object result) { - MetricsDispatcher dispatcher = validate(event); + MetricsEventMulticaster dispatcher = validate(event); if (dispatcher == null) return; tryInvoke(() -> { event.customAfterPost(result); @@ -121,13 +122,13 @@ public class MetricsEventBus { } public static void error(MetricsEvent event) { - MetricsDispatcher dispatcher = validate(event); + MetricsEventMulticaster dispatcher = validate(event); if (dispatcher == null) return; tryInvoke(() -> dispatcher.publishErrorEvent((TimeCounterEvent) event)); } - private static MetricsDispatcher validate(MetricsEvent event) { - MetricsDispatcher dispatcher = event.getMetricsDispatcher(); + private static MetricsEventMulticaster validate(MetricsEvent event) { + MetricsEventMulticaster dispatcher = event.getMetricsEventMulticaster(); if (dispatcher == null) { return null; } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/MetricsEventMulticaster.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java similarity index 95% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java index 69e7e42925..e814465b36 100644 --- a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java +++ b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/event/TimeCounterEvent.java @@ -33,7 +33,7 @@ public abstract class TimeCounterEvent extends MetricsEvent { this.timePair = TimePair.start(); } - public TimeCounterEvent(ApplicationModel source, String appName, MetricsDispatcher metricsDispatcher, TypeWrapper typeWrapper) { + public TimeCounterEvent(ApplicationModel source, String appName,MetricsEventMulticaster metricsDispatcher, TypeWrapper typeWrapper) { super(source, appName, metricsDispatcher, typeWrapper); this.timePair = TimePair.start(); } diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/exception/MetricsNeverHappenException.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/listener/MetricsListener.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/TimePair.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/TimePair.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/TimePair.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/TimePair.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsKey.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/MetricsLevel.java diff --git a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java b/dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java similarity index 100% rename from dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java rename to dubbo-metrics/dubbo-metrics-event/src/main/java/org/apache/dubbo/metrics/model/key/TypeWrapper.java diff --git a/dubbo-metrics/pom.xml b/dubbo-metrics/pom.xml index 014632df63..901a7888ec 100644 --- a/dubbo-metrics/pom.xml +++ b/dubbo-metrics/pom.xml @@ -19,6 +19,7 @@ 4.0.0 dubbo-metrics-api + dubbo-metrics-event dubbo-metrics-default dubbo-metrics-registry dubbo-metrics-metadata diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml b/dubbo-test/dubbo-dependencies-all/pom.xml index 0216003790..6afbac88e0 100644 --- a/dubbo-test/dubbo-dependencies-all/pom.xml +++ b/dubbo-test/dubbo-dependencies-all/pom.xml @@ -181,6 +181,11 @@ dubbo-metrics-api ${project.version} + + org.apache.dubbo + dubbo-metrics-event + ${project.version} + org.apache.dubbo dubbo-metrics-default