You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/01/02 10:44:23 UTC

[incubator-servicecomb-java-chassis] 05/14: JAV-508 & SCB-11 move metric dto from metrics-core to metrics-common and add metrics publish via rest schema

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit ccdde770347b246b89efe6776345a86137426025
Author: zhengyangyong <ya...@huawei.com>
AuthorDate: Tue Dec 26 15:54:47 2017 +0800

    JAV-508 & SCB-11 move metric dto from metrics-core to metrics-common and add metrics publish via rest schema
    
    Signed-off-by: zhengyangyong <ya...@huawei.com>
---
 java-chassis-dependencies/pom.xml                     | 10 ++++++++++
 metrics/{ => metrics-common}/pom.xml                  | 19 ++++++++++---------
 .../io/servicecomb/metrics/common}/CallMetric.java    |  7 +++++--
 .../metrics/common}/ConsumerInvocationMetric.java     | 10 +++++++---
 .../servicecomb/metrics/common}/InstanceMetric.java   | 10 ++++++----
 .../servicecomb/metrics/common}/InvocationMetric.java |  2 +-
 .../io/servicecomb/metrics/common}/MetricsConst.java  |  2 +-
 .../metrics/common}/ProducerInvocationMetric.java     | 13 ++++++++++---
 .../servicecomb/metrics/common}/RegistryMetric.java   | 18 ++++++++----------
 .../io/servicecomb/metrics/common}/SystemMetric.java  | 13 +++++++++----
 .../io/servicecomb/metrics/common}/TimerMetric.java   |  8 ++++++--
 metrics/metrics-core/pom.xml                          | 17 +++++++++--------
 .../servicecomb/metrics/core/monitor/CallMonitor.java |  2 +-
 .../core/monitor/ConsumerInvocationMonitor.java       |  5 +++--
 .../metrics/core/monitor/DefaultSystemMonitor.java    |  2 +-
 .../core/monitor/ProducerInvocationMonitor.java       |  4 ++--
 .../metrics/core/monitor/RegistryMonitor.java         |  6 +++---
 .../metrics/core/monitor/SystemMonitor.java           |  2 +-
 .../metrics/core/monitor/TimerMonitor.java            |  2 +-
 .../servicecomb/metrics/core/publish/DataSource.java  |  6 +++---
 .../metrics/core/publish/DefaultDataSource.java       |  2 +-
 .../metrics/core/publish/DefaultMetricsPublisher.java |  2 +-
 .../metrics/core/publish/MetricsPublisher.java        |  2 +-
 .../servicecomb/metrics/core/TestEventAndRunner.java  |  2 +-
 .../io/servicecomb/metrics/core/TestPublisher.java    |  2 +-
 metrics/pom.xml                                       |  1 +
 26 files changed, 103 insertions(+), 66 deletions(-)

diff --git a/java-chassis-dependencies/pom.xml b/java-chassis-dependencies/pom.xml
index 78ea724..70f1c02 100644
--- a/java-chassis-dependencies/pom.xml
+++ b/java-chassis-dependencies/pom.xml
@@ -926,6 +926,16 @@
         <artifactId>edge-core</artifactId>
         <version>0.6.0-SNAPSHOT</version>
       </dependency>
+      <dependency>
+        <groupId>io.servicecomb</groupId>
+        <artifactId>metrics-core</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>io.servicecomb</groupId>
+        <artifactId>metrics-common</artifactId>
+        <version>0.6.0-SNAPSHOT</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
diff --git a/metrics/pom.xml b/metrics/metrics-common/pom.xml
similarity index 82%
copy from metrics/pom.xml
copy to metrics/metrics-common/pom.xml
index 80203af..76d3651 100644
--- a/metrics/pom.xml
+++ b/metrics/metrics-common/pom.xml
@@ -19,19 +19,20 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <packaging>pom</packaging>
   <parent>
+    <artifactId>metrics</artifactId>
     <groupId>io.servicecomb</groupId>
-    <artifactId>java-chassis-parent</artifactId>
     <version>0.6.0-SNAPSHOT</version>
-    <relativePath>../parent</relativePath>
   </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>metrics-common</artifactId>
 
-  <artifactId>metrics</artifactId>
+  <dependencies>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+    </dependency>
+  </dependencies>
 
-  <modules>
-    <module>metrics-core</module>
-    <module>metrics-sample</module>
-  </modules>
 </project>
\ No newline at end of file
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/CallMetric.java
similarity index 87%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/CallMetric.java
index 9c3b0a7..6de66b5 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/CallMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/CallMetric.java
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public class CallMetric {
   private final String prefix;
 
@@ -39,7 +41,8 @@ public class CallMetric {
     this(prefix, 0, 0);
   }
 
-  public CallMetric(String prefix, long total, double tps) {
+  public CallMetric(@JsonProperty("prefix") String prefix, @JsonProperty("total") long total,
+      @JsonProperty("tps") double tps) {
     this.prefix = prefix;
     this.total = total;
     this.tps = tps;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/ConsumerInvocationMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/ConsumerInvocationMetric.java
similarity index 83%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/ConsumerInvocationMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/ConsumerInvocationMetric.java
index 0c0ddfe..d4aee4a 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/ConsumerInvocationMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/ConsumerInvocationMetric.java
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public class ConsumerInvocationMetric extends InvocationMetric {
   private final TimerMetric consumerLatency;
 
@@ -33,8 +35,10 @@ public class ConsumerInvocationMetric extends InvocationMetric {
     return consumerCall;
   }
 
-  public ConsumerInvocationMetric(String operationName, String prefix,
-      TimerMetric consumerLatency, CallMetric consumerCall) {
+  public ConsumerInvocationMetric(@JsonProperty("operationName") String operationName,
+      @JsonProperty("prefix") String prefix,
+      @JsonProperty("consumerLatency") TimerMetric consumerLatency,
+      @JsonProperty("consumerCall") CallMetric consumerCall) {
     super(operationName, prefix);
     this.consumerLatency = consumerLatency;
     this.consumerCall = consumerCall;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/InstanceMetric.java
similarity index 80%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/InstanceMetric.java
index 614fa48..b8dd03e 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InstanceMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/InstanceMetric.java
@@ -15,7 +15,9 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class InstanceMetric {
   private final SystemMetric systemMetric;
@@ -36,9 +38,9 @@ public class InstanceMetric {
     return producerMetric;
   }
 
-  public InstanceMetric(SystemMetric systemMetric,
-      ConsumerInvocationMetric consumerMetric,
-      ProducerInvocationMetric producerMetric) {
+  public InstanceMetric(@JsonProperty("systemMetric") SystemMetric systemMetric,
+      @JsonProperty("consumerMetric") ConsumerInvocationMetric consumerMetric,
+      @JsonProperty("producerMetric") ProducerInvocationMetric producerMetric) {
     this.systemMetric = systemMetric;
     this.consumerMetric = consumerMetric;
     this.producerMetric = producerMetric;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/InvocationMetric.java
similarity index 96%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/InvocationMetric.java
index c452a4e..8ecd1b9 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/InvocationMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/InvocationMetric.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 public class InvocationMetric {
   private final String operationName;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/MetricsConst.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricsConst.java
similarity index 96%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/MetricsConst.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricsConst.java
index 5554796..b0d58f8 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/MetricsConst.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/MetricsConst.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core;
+package io.servicecomb.metrics.common;
 
 public class MetricsConst {
   public static final String CONSUMER_PREFIX_TEMPLATE = "servicecomb.%s.consumer";
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/ProducerInvocationMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/ProducerInvocationMetric.java
similarity index 82%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/ProducerInvocationMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/ProducerInvocationMetric.java
index 0692e90..aced1c7 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/ProducerInvocationMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/ProducerInvocationMetric.java
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public class ProducerInvocationMetric extends InvocationMetric {
   private final long waitInQueue;
 
@@ -51,8 +53,13 @@ public class ProducerInvocationMetric extends InvocationMetric {
     return producerCall;
   }
 
-  public ProducerInvocationMetric(String operationName, String prefix, long waitInQueue,
-      TimerMetric lifeTimeInQueue, TimerMetric executionTime, TimerMetric producerLatency, CallMetric producerCall) {
+  public ProducerInvocationMetric(@JsonProperty("operationName") String operationName,
+      @JsonProperty("prefix") String prefix,
+      @JsonProperty("waitInQueue") long waitInQueue,
+      @JsonProperty("lifeTimeInQueue") TimerMetric lifeTimeInQueue,
+      @JsonProperty("executionTime") TimerMetric executionTime,
+      @JsonProperty("producerLatency") TimerMetric producerLatency,
+      @JsonProperty("producerCall") CallMetric producerCall) {
     super(operationName, prefix);
     this.waitInQueue = waitInQueue;
     this.lifeTimeInQueue = lifeTimeInQueue;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/RegistryMetric.java
similarity index 85%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/RegistryMetric.java
index 7bafee7..2612e72 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/RegistryMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/RegistryMetric.java
@@ -15,20 +15,19 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import io.servicecomb.metrics.core.MetricsConst;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class RegistryMetric {
+  private InstanceMetric instanceMetric;
 
-  private final InstanceMetric instanceMetric;
+  private Map<String, ConsumerInvocationMetric> consumerMetrics;
 
-  private final Map<String, ConsumerInvocationMetric> consumerMetrics;
-
-  private final Map<String, ProducerInvocationMetric> producerMetrics;
+  private Map<String, ProducerInvocationMetric> producerMetrics;
 
   public InstanceMetric getInstanceMetric() {
     return instanceMetric;
@@ -42,10 +41,9 @@ public class RegistryMetric {
     return producerMetrics;
   }
 
-  public RegistryMetric(SystemMetric systemMetric,
-      Map<String, ConsumerInvocationMetric> consumerMetrics,
-      Map<String, ProducerInvocationMetric> producerMetrics) {
-
+  public RegistryMetric(@JsonProperty("systemMetric") SystemMetric systemMetric,
+      @JsonProperty("consumerMetrics") Map<String, ConsumerInvocationMetric> consumerMetrics,
+      @JsonProperty("producerMetrics") Map<String, ProducerInvocationMetric> producerMetrics) {
     this.consumerMetrics = consumerMetrics;
     this.producerMetrics = producerMetrics;
 
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/SystemMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/SystemMetric.java
similarity index 82%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/SystemMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/SystemMetric.java
index 68fff72..d75f311 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/SystemMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/SystemMetric.java
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public class SystemMetric {
   private final double cpuLoad;
 
@@ -81,9 +83,12 @@ public class SystemMetric {
     return nonHeapUsed;
   }
 
-  public SystemMetric(double cpuLoad, int cpuRunningThreads,
-      long heapInit, long heapMax, long heapCommit, long heapUsed,
-      long nonHeapInit, long nonHeapMax, long nonHeapCommit, long nonHeapUsed) {
+  public SystemMetric(@JsonProperty("cpuLoad") double cpuLoad,
+      @JsonProperty("cpuRunningThreads") int cpuRunningThreads,
+      @JsonProperty("heapInit") long heapInit, @JsonProperty("heapMax") long heapMax,
+      @JsonProperty("heapCommit") long heapCommit, @JsonProperty("heapUsed") long heapUsed,
+      @JsonProperty("nonHeapInit") long nonHeapInit, @JsonProperty("nonHeapMax") long nonHeapMax,
+      @JsonProperty("nonHeapCommit") long nonHeapCommit, @JsonProperty("nonHeapUsed") long nonHeapUsed) {
     this.cpuLoad = cpuLoad;
     this.cpuRunningThreads = cpuRunningThreads;
     this.heapInit = heapInit;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/TimerMetric.java
similarity index 88%
rename from metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
rename to metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/TimerMetric.java
index 0c38480..fc7a2c4 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/metric/TimerMetric.java
+++ b/metrics/metrics-common/src/main/java/io/servicecomb/metrics/common/TimerMetric.java
@@ -15,11 +15,13 @@
  * limitations under the License.
  */
 
-package io.servicecomb.metrics.core.metric;
+package io.servicecomb.metrics.common;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 public class TimerMetric {
   private final String prefix;
 
@@ -57,7 +59,9 @@ public class TimerMetric {
     this(prefix, 0, 0, 0, 0);
   }
 
-  public TimerMetric(String prefix, long total, long count, long min, long max) {
+  public TimerMetric(@JsonProperty("prefix") String prefix,
+      @JsonProperty("total") long total, @JsonProperty("count") long count,
+      @JsonProperty("min") long min, @JsonProperty("max") long max) {
     this.prefix = prefix;
     this.total = total;
     this.count = count;
diff --git a/metrics/metrics-core/pom.xml b/metrics/metrics-core/pom.xml
index 9a61c21..8f8fdeb 100644
--- a/metrics/metrics-core/pom.xml
+++ b/metrics/metrics-core/pom.xml
@@ -30,6 +30,14 @@
 
   <dependencies>
     <dependency>
+      <groupId>com.netflix.servo</groupId>
+      <artifactId>servo-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.servicecomb</groupId>
+      <artifactId>metrics-common</artifactId>
+    </dependency>
+    <dependency>
       <groupId>io.servicecomb</groupId>
       <artifactId>provider-rest-common</artifactId>
     </dependency>
@@ -41,14 +49,7 @@
       <groupId>io.servicecomb</groupId>
       <artifactId>java-chassis-core</artifactId>
     </dependency>
-    <dependency>
-      <groupId>io.servicecomb</groupId>
-      <artifactId>foundation-metrics</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.netflix.servo</groupId>
-      <artifactId>servo-core</artifactId>
-    </dependency>
+
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/CallMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/CallMonitor.java
index 76778ca..ab2e72d 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/CallMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/CallMonitor.java
@@ -21,7 +21,7 @@ import com.netflix.servo.monitor.BasicCounter;
 import com.netflix.servo.monitor.MonitorConfig;
 import com.netflix.servo.monitor.StepCounter;
 
-import io.servicecomb.metrics.core.metric.CallMetric;
+import io.servicecomb.metrics.common.CallMetric;
 
 public class CallMonitor {
   private final String prefix;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java
index a297ec4..bd49e51 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ConsumerInvocationMonitor.java
@@ -17,8 +17,9 @@
 
 package io.servicecomb.metrics.core.monitor;
 
-import io.servicecomb.metrics.core.MetricsConst;
-import io.servicecomb.metrics.core.metric.ConsumerInvocationMetric;
+
+import io.servicecomb.metrics.common.ConsumerInvocationMetric;
+import io.servicecomb.metrics.common.MetricsConst;
 
 public class ConsumerInvocationMonitor extends InvocationMonitor {
   private final TimerMonitor consumerLatency;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
index d027a2c..21b42ad 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/DefaultSystemMonitor.java
@@ -24,7 +24,7 @@ import java.lang.management.ThreadMXBean;
 
 import org.springframework.stereotype.Component;
 
-import io.servicecomb.metrics.core.metric.SystemMetric;
+import io.servicecomb.metrics.common.SystemMetric;
 
 @Component
 public class DefaultSystemMonitor implements SystemMonitor {
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java
index b1f945f..6d63ae1 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/ProducerInvocationMonitor.java
@@ -20,8 +20,8 @@ package io.servicecomb.metrics.core.monitor;
 import com.netflix.servo.monitor.BasicCounter;
 import com.netflix.servo.monitor.MonitorConfig;
 
-import io.servicecomb.metrics.core.MetricsConst;
-import io.servicecomb.metrics.core.metric.ProducerInvocationMetric;
+import io.servicecomb.metrics.common.MetricsConst;
+import io.servicecomb.metrics.common.ProducerInvocationMetric;
 
 public class ProducerInvocationMonitor extends InvocationMonitor {
   private final BasicCounter waitInQueue;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
index 0772463..387c050 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/RegistryMonitor.java
@@ -24,9 +24,9 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import io.servicecomb.metrics.core.metric.ConsumerInvocationMetric;
-import io.servicecomb.metrics.core.metric.ProducerInvocationMetric;
-import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.common.ConsumerInvocationMetric;
+import io.servicecomb.metrics.common.ProducerInvocationMetric;
+import io.servicecomb.metrics.common.RegistryMetric;
 
 @Component
 public class RegistryMonitor {
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
index 1780e3f..602d039 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/SystemMonitor.java
@@ -17,7 +17,7 @@
 
 package io.servicecomb.metrics.core.monitor;
 
-import io.servicecomb.metrics.core.metric.SystemMetric;
+import io.servicecomb.metrics.common.SystemMetric;
 
 public interface SystemMonitor {
   double getCpuLoad();
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/TimerMonitor.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/TimerMonitor.java
index 1a15571..28fac96 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/TimerMonitor.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/monitor/TimerMonitor.java
@@ -24,7 +24,7 @@ import com.netflix.servo.monitor.MinGauge;
 import com.netflix.servo.monitor.MonitorConfig;
 import com.netflix.servo.monitor.StepCounter;
 
-import io.servicecomb.metrics.core.metric.TimerMetric;
+import io.servicecomb.metrics.common.TimerMetric;
 
 public class TimerMonitor {
   private final String prefix;
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DataSource.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DataSource.java
index 53ad61e..4eb89a6 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DataSource.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DataSource.java
@@ -19,12 +19,12 @@ package io.servicecomb.metrics.core.publish;
 
 import java.util.List;
 
-import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.common.RegistryMetric;
 
 public interface DataSource {
 
   /**  What's the WindowTime ?
-  We all know there are two major type of metric :
+   We all know there are two major type of metric :
    1.Time-unrelated,you can get the latest value any time immediately:
    Counter -> increase or decrease
    Guage -> set a certain one value
@@ -34,7 +34,7 @@ public interface DataSource {
    Rate -> like TPS,algorithm is f = sum / second
 
    Will be return "servicecomb.metrics.window_time" setting in microservice.yaml
-  */
+   */
   List<Long> getAppliedWindowTime();
 
   //return getRegistryMetric(0)
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultDataSource.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultDataSource.java
index 9549884..d1ce74b 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultDataSource.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultDataSource.java
@@ -25,7 +25,7 @@ import org.springframework.stereotype.Component;
 import com.netflix.config.DynamicPropertyFactory;
 import com.netflix.servo.monitor.Pollers;
 
-import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.common.RegistryMetric;
 import io.servicecomb.metrics.core.monitor.RegistryMonitor;
 
 @Component
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java
index ebc8f89..9efe24e 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/DefaultMetricsPublisher.java
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.common.RegistryMetric;
 import io.servicecomb.provider.rest.common.RestSchema;
 
 @RestSchema(schemaId = "metricsEndpoint")
diff --git a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/MetricsPublisher.java b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/MetricsPublisher.java
index 9f3873f..e87e288 100644
--- a/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/MetricsPublisher.java
+++ b/metrics/metrics-core/src/main/java/io/servicecomb/metrics/core/publish/MetricsPublisher.java
@@ -17,7 +17,7 @@
 
 package io.servicecomb.metrics.core.publish;
 
-import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.common.RegistryMetric;
 
 public interface MetricsPublisher {
   RegistryMetric metrics();
diff --git a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
index 368b572..69e66f6 100644
--- a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestEventAndRunner.java
@@ -35,8 +35,8 @@ import io.servicecomb.core.metrics.InvocationFinishedEvent;
 import io.servicecomb.core.metrics.InvocationStartProcessingEvent;
 import io.servicecomb.core.metrics.InvocationStartedEvent;
 import io.servicecomb.foundation.common.utils.EventUtils;
+import io.servicecomb.metrics.common.RegistryMetric;
 import io.servicecomb.metrics.core.event.DefaultEventListenerManager;
-import io.servicecomb.metrics.core.metric.RegistryMetric;
 import io.servicecomb.metrics.core.monitor.DefaultSystemMonitor;
 import io.servicecomb.metrics.core.monitor.RegistryMonitor;
 import io.servicecomb.metrics.core.publish.DefaultDataSource;
diff --git a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestPublisher.java b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestPublisher.java
index 7096937..537c69c 100644
--- a/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestPublisher.java
+++ b/metrics/metrics-core/src/test/java/io/servicecomb/metrics/core/TestPublisher.java
@@ -23,7 +23,7 @@ import java.util.Map;
 import org.junit.Assert;
 import org.junit.Test;
 
-import io.servicecomb.metrics.core.metric.RegistryMetric;
+import io.servicecomb.metrics.common.RegistryMetric;
 import io.servicecomb.metrics.core.monitor.DefaultSystemMonitor;
 import io.servicecomb.metrics.core.monitor.RegistryMonitor;
 import io.servicecomb.metrics.core.monitor.SystemMonitor;
diff --git a/metrics/pom.xml b/metrics/pom.xml
index 80203af..f3cc665 100644
--- a/metrics/pom.xml
+++ b/metrics/pom.xml
@@ -33,5 +33,6 @@
   <modules>
     <module>metrics-core</module>
     <module>metrics-sample</module>
+    <module>metrics-common</module>
   </modules>
 </project>
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.