You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2020/03/31 15:30:59 UTC

[skywalking] 02/02: Add IDManager for further refactor.

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

wusheng pushed a commit to branch v8-core
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit 1e4a66c63525677b9c0faef0c5deda3f12a6c475
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Mar 31 23:28:09 2020 +0800

    Add IDManager for further refactor.
---
 .../oap/server/core/analysis/IDManager.java        | 275 +++++++++++++++++++++
 .../core/analysis/manual/RelationDefineUtil.java   |   9 +-
 .../analysis/manual/endpoint/EndpointTraffic.java  |  50 +---
 .../analysis/manual/service/ServiceTraffic.java    |  83 +++++++
 .../server/core/query/MetadataQueryService.java    |   2 +-
 .../core/register/NetworkAddressInventory.java     |   3 +-
 .../core/register/ServiceInstanceInventory.java    |   3 +-
 .../oap/server/core/register/ServiceInventory.java |   9 +-
 .../service/INetworkAddressInventoryRegister.java  |   2 +-
 .../service/IServiceInstanceInventoryRegister.java |   2 +-
 .../service/IServiceInventoryRegister.java         |   2 +-
 .../service/NetworkAddressInventoryRegister.java   |   2 +-
 .../service/ServiceInstanceInventoryRegister.java  |   2 +-
 .../register/service/ServiceInventoryRegister.java |   2 +-
 .../oap/server/core/source/DefaultScopeDefine.java |   2 +-
 .../server/core/{register => source}/NodeType.java |   6 +-
 .../skywalking/oap/server/core/source/Service.java |   4 +-
 .../handler/v6/grpc/RegisterServiceHandler.java    |   2 +-
 .../v6/rest/ServiceRegisterServletHandler.java     |   2 +-
 .../parser/standardization/SpanExchanger.java      |   2 +-
 .../transform/SpringSleuthSegmentBuilderTest.java  |   2 +-
 .../elasticsearch/query/MetadataQueryEsDAO.java    |   2 +-
 .../elasticsearch7/query/MetadataQueryEs7DAO.java  |   2 +-
 .../plugin/jdbc/h2/dao/H2MetadataQueryDAO.java     |   2 +-
 24 files changed, 391 insertions(+), 81 deletions(-)

diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/IDManager.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/IDManager.java
new file mode 100644
index 0000000..308ea0f
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/IDManager.java
@@ -0,0 +1,275 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.source.DetectPoint;
+import org.apache.skywalking.oap.server.core.source.NodeType;
+
+/**
+ * IDManager includes all ID encode/decode functions for service, service instance and endpoint.
+ */
+public class IDManager {
+    /**
+     * Service ID related functions.
+     */
+    public static class ServiceID {
+        /**
+         * @return encoded service id
+         */
+        public static String buildId(String name, NodeType type) {
+            return encode(name) + Const.ID_SPLIT + type.value();
+        }
+
+        /**
+         * @return service ID object decoded from {@link #buildId(String, NodeType)} result
+         */
+        public static ServiceIDDefinition analysisId(String id) {
+            final String[] strings = id.split(Const.ID_PARSER_SPLIT);
+            if (strings.length != 2) {
+                throw new UnexpectedException("Can't split service id into 2 parts, " + id);
+            }
+            return new ServiceID.ServiceIDDefinition(
+                decode(strings[0]),
+                NodeType.valueOf(Integer.parseInt(strings[1]))
+            );
+        }
+
+        /**
+         * @return encoded service relation id
+         */
+        public static String buildRelationId(ServiceRelationDefine define) {
+            return define.source + Const.ID_SPLIT + define.dest + Const.ID_SPLIT + define.componentId;
+        }
+
+        /**
+         * @return service relation ID object decoded from {@link #buildRelationId(ServiceRelationDefine)} result
+         */
+        public static ServiceRelationDefine analysisRelationId(String entityId) {
+            String[] parts = entityId.split(Const.ID_SPLIT);
+            if (parts.length != 3) {
+                throw new RuntimeException("Illegal Service Relation entity id");
+            }
+            return new ServiceRelationDefine(parts[0], parts[1], Integer.parseInt(parts[2]));
+        }
+
+        @RequiredArgsConstructor
+        @Getter
+        public static class ServiceIDDefinition {
+            private final String name;
+            private final NodeType type;
+        }
+
+        @RequiredArgsConstructor
+        @Getter
+        @EqualsAndHashCode
+        public static class ServiceRelationDefine {
+            private final String source;
+            private final String dest;
+            private final int componentId;
+        }
+    }
+
+    /**
+     * Service Instance ID related functions.
+     */
+    public static class ServiceInstanceID {
+        /**
+         * @param serviceId built by {@link ServiceID#buildId(String, NodeType)}
+         * @return service instance id
+         */
+        public static String buildId(String serviceId, String instanceName) {
+            return serviceId
+                + Const.ID_SPLIT
+                + encode(instanceName);
+        }
+
+        /**
+         * @return service instance id object decoded from {@link #buildId(String, String)} result
+         */
+        public static ServiceInstanceID.InstanceIDDefinition analysisId(String id) {
+            final String[] strings = id.split(Const.ID_PARSER_SPLIT);
+            if (strings.length != 2) {
+                throw new UnexpectedException("Can't split instance id into 2 parts, " + id);
+            }
+            return new ServiceInstanceID.InstanceIDDefinition(
+                strings[0],
+                decode(strings[1])
+            );
+        }
+
+        /**
+         * @return encoded service instance relation id
+         */
+        public static String buildRelationId(ServiceInstanceRelationDefine define) {
+            return define.source + Const.ID_SPLIT + define.dest + Const.ID_SPLIT + define.componentId;
+        }
+
+        /**
+         * @return service instance relation ID object decoded from {@link #buildRelationId(ServiceInstanceRelationDefine)}
+         * result
+         */
+        public static ServiceInstanceID.ServiceInstanceRelationDefine analysisRelationId(String entityId) {
+            String[] parts = entityId.split(Const.ID_SPLIT);
+            if (parts.length != 3) {
+                throw new RuntimeException("Illegal Service Instance Relation entity id");
+            }
+            return new ServiceInstanceID.ServiceInstanceRelationDefine(parts[0], parts[1], Integer.parseInt(parts[2]));
+        }
+
+        @RequiredArgsConstructor
+        @Getter
+        public static class InstanceIDDefinition {
+            /**
+             * Built by {@link ServiceID#buildId(String, NodeType)}
+             */
+            private final String serviceId;
+            private final String name;
+        }
+
+        @RequiredArgsConstructor
+        @Getter
+        @EqualsAndHashCode
+        public static class ServiceInstanceRelationDefine {
+            /**
+             * Built by {@link ServiceID#buildId(String, NodeType)}
+             */
+            private final String source;
+            /**
+             * Built by {@link ServiceID#buildId(String, NodeType)}
+             */
+            private final String dest;
+            private final int componentId;
+        }
+    }
+
+    /**
+     * Endpoint ID related functions.
+     */
+    public static class EndpointID {
+        /**
+         * @param serviceId built by {@link ServiceID#buildId(String, NodeType)}
+         * @return endpoint id
+         */
+        public static String buildId(String serviceId, String endpointName, DetectPoint detectPoint) {
+            return serviceId
+                + Const.ID_SPLIT
+                + encode(endpointName)
+                + Const.ID_SPLIT
+                + detectPoint.value();
+        }
+
+        /**
+         * @return Endpoint id object decoded from {@link #buildId(String, String, DetectPoint)} result.
+         */
+        public static EndpointIDDefinition analysisId(String id) {
+            final String[] strings = id.split(Const.ID_PARSER_SPLIT);
+            if (strings.length != 3) {
+                throw new UnexpectedException("Can't split endpoint id into 3 parts, " + id);
+            }
+            return new EndpointIDDefinition(
+                decode(strings[0]),
+                decode(strings[1]),
+                DetectPoint.valueOf(Integer.parseInt(strings[2]))
+            );
+        }
+
+        /**
+         * @return the endpoint relationship string id.
+         */
+        public static String buildRelationId(EndpointRelationDefine define) {
+            return define.sourceServiceId
+                + Const.ID_SPLIT
+                + encode(define.source)
+                + Const.ID_SPLIT
+                + define.destServiceId
+                + Const.ID_SPLIT
+                + encode(define.dest)
+                + Const.ID_SPLIT
+                + define.componentId;
+        }
+
+        /**
+         * @return endpoint relation ID object decoded from {@link #buildRelationId(EndpointRelationDefine)} result
+         */
+        public static EndpointRelationDefine splitEndpointRelationEntityId(String entityId) {
+            String[] parts = entityId.split(Const.ID_SPLIT);
+            if (parts.length != 5) {
+                throw new UnexpectedException("Illegal endpoint Relation entity id, " + entityId);
+            }
+            return new EndpointRelationDefine(
+                parts[0],
+                decode(parts[1]),
+                parts[2],
+                decode(parts[3]),
+                Integer.parseInt(parts[4])
+            );
+        }
+
+        @RequiredArgsConstructor
+        @Getter
+        public static class EndpointIDDefinition {
+            /**
+             * Built by {@link ServiceID#buildId(String, NodeType)}
+             */
+            private final String serviceId;
+            private final String endpointName;
+            private final DetectPoint detectPoint;
+        }
+
+        @RequiredArgsConstructor
+        @Getter
+        @EqualsAndHashCode
+        public static class EndpointRelationDefine {
+            /**
+             * Built by {@link ServiceID#buildId(String, NodeType)}
+             */
+            private final String sourceServiceId;
+            private final String source;
+            /**
+             * Built by {@link ServiceID#buildId(String, NodeType)}
+             */
+            private final String destServiceId;
+            private final String dest;
+            private final int componentId;
+        }
+    }
+
+    /**
+     * @param text normal literal string
+     * @return Base74 encoded UTF-8 string
+     */
+    private static String encode(String text) {
+        return new String(Base64.getEncoder().encode(text.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8);
+    }
+
+    /**
+     * @param base64text Base74 encoded UTF-8 string
+     * @return normal literal string
+     */
+    private static String decode(String base64text) {
+        return new String(Base64.getDecoder().decode(base64text), StandardCharsets.UTF_8);
+    }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/RelationDefineUtil.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/RelationDefineUtil.java
index 7efd78f..77cc232 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/RelationDefineUtil.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/RelationDefineUtil.java
@@ -76,14 +76,7 @@ public class RelationDefineUtil {
         );
     }
 
-    @RequiredArgsConstructor
-    @Getter
-    @EqualsAndHashCode
-    public static class RelationDefine {
-        private final int source;
-        private final int dest;
-        private final int componentId;
-    }
+
 
     @RequiredArgsConstructor
     @Getter
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
index cf73640..660f5d9 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/endpoint/EndpointTraffic.java
@@ -19,16 +19,13 @@
 package org.apache.skywalking.oap.server.core.analysis.manual.endpoint;
 
 import com.google.common.base.Strings;
-import java.nio.charset.StandardCharsets;
-import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 import lombok.Getter;
-import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
 import org.apache.skywalking.oap.server.core.analysis.MetricsExtension;
 import org.apache.skywalking.oap.server.core.analysis.Stream;
 import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
@@ -57,7 +54,7 @@ public class EndpointTraffic extends Metrics {
     @Setter
     @Getter
     @Column(columnName = SERVICE_ID)
-    private int serviceId;
+    private String serviceId;
     @Setter
     @Getter
     @Column(columnName = NAME, matchQuery = true)
@@ -67,51 +64,12 @@ public class EndpointTraffic extends Metrics {
     @Column(columnName = DETECT_POINT)
     private int detectPoint;
 
-    public static String buildId(int serviceId, String endpointName, DetectPoint detectPoint) {
-        return buildId(serviceId, endpointName, detectPoint.value());
-    }
-
-    public static String buildId(EndpointTraffic endpointTraffic) {
-        return buildId(endpointTraffic.serviceId, endpointTraffic.name, endpointTraffic.detectPoint);
-    }
-
-    private static String buildId(int serviceId, String endpointName, int detectPoint) {
-        return serviceId + Const.ID_SPLIT
-            + new String(
-            Base64.getEncoder().encode(endpointName.getBytes(StandardCharsets.UTF_8)), StandardCharsets.UTF_8)
-            + Const.ID_SPLIT + detectPoint;
-    }
-
-    /**
-     * @param id in the storage of endpoint traffic
-     * @return [serviceId, endpointName, detectPoint]
-     */
-    public static EndpointID splitID(String id) {
-        final String[] strings = id.split(Const.ID_PARSER_SPLIT);
-        if (strings.length != 3) {
-            throw new UnexpectedException("Can't split endpoint id into 3 parts, " + id);
-        }
-        return new EndpointID(
-            Integer.parseInt(strings[0]), new String(Base64.getDecoder().decode(strings[1]), StandardCharsets.UTF_8),
-            DetectPoint.valueOf(Integer.parseInt(strings[2]))
-        );
-    }
-
-    @RequiredArgsConstructor
-    public static class EndpointID {
-        @Getter
-        private final int serviceId;
-        @Getter
-        private final String endpointName;
-        @Getter
-        private final DetectPoint detectPoint;
-    }
-
     @Override
     public String id() {
         // Downgrade the time bucket to day level only.
         // supportDownSampling == false for this entity.
-        return buildId(this);
+        return IDManager.EndpointID.buildId(
+            this.getServiceId(), this.getName(), DetectPoint.valueOf(this.getDetectPoint()));
     }
 
     @Override
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java
new file mode 100644
index 0000000..6bc0528
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/manual/service/ServiceTraffic.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.analysis.manual.service;
+
+import org.apache.skywalking.oap.server.core.analysis.MetricsExtension;
+import org.apache.skywalking.oap.server.core.analysis.Stream;
+import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic;
+import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
+import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProcessor;
+import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
+
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_TRAFFIC;
+
+@ScopeDeclaration(id = SERVICE_TRAFFIC, name = "ServiceTraffic")
+@Stream(name = ServiceTraffic.INDEX_NAME, scopeId = DefaultScopeDefine.SERVICE_TRAFFIC,
+    builder = EndpointTraffic.Builder.class, processor = MetricsStreamProcessor.class)
+@MetricsExtension(supportDownSampling = false, supportUpdate = false)
+public class ServiceTraffic extends Metrics {
+    public static final String INDEX_NAME = "service_traffic";
+
+    @Override
+    public void combine(final Metrics metrics) {
+
+    }
+
+    @Override
+    public void calculate() {
+
+    }
+
+    @Override
+    public Metrics toHour() {
+        return null;
+    }
+
+    @Override
+    public Metrics toDay() {
+        return null;
+    }
+
+    @Override
+    public Metrics toMonth() {
+        return null;
+    }
+
+    @Override
+    public int remoteHashCode() {
+        return 0;
+    }
+
+    @Override
+    public void deserialize(final RemoteData remoteData) {
+
+    }
+
+    @Override
+    public RemoteData.Builder serialize() {
+        return null;
+    }
+
+    @Override
+    public String id() {
+        return null;
+    }
+}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
index 28af1e5..ad91567 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/MetadataQueryService.java
@@ -29,7 +29,7 @@ import org.apache.skywalking.oap.server.core.query.entity.Endpoint;
 import org.apache.skywalking.oap.server.core.query.entity.EndpointInfo;
 import org.apache.skywalking.oap.server.core.query.entity.Service;
 import org.apache.skywalking.oap.server.core.query.entity.ServiceInstance;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.storage.StorageModule;
 import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java
index 913a764..46372a1 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NetworkAddressInventory.java
@@ -29,6 +29,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream;
 import org.apache.skywalking.oap.server.core.register.worker.InventoryStreamProcessor;
 import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
 import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
 import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
@@ -58,7 +59,7 @@ public class NetworkAddressInventory extends RegisterSource {
     }
 
     public NodeType getNetworkAddressNodeType() {
-        return NodeType.get(this.nodeType);
+        return NodeType.valueOf(this.nodeType);
     }
 
     public static String buildId(String networkAddress) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
index 51e3b9e..a350596 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInstanceInventory.java
@@ -33,6 +33,7 @@ import org.apache.skywalking.oap.server.core.analysis.Stream;
 import org.apache.skywalking.oap.server.core.register.worker.InventoryStreamProcessor;
 import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
 import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
 import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
@@ -112,7 +113,7 @@ public class ServiceInstanceInventory extends RegisterSource {
     }
 
     public NodeType getServiceInstanceNodeType() {
-        return NodeType.get(nodeType);
+        return NodeType.valueOf(nodeType);
     }
 
     public void setServiceInstanceNodeType(NodeType nodeType) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
index 2480dcf..deb06a6 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/ServiceInventory.java
@@ -31,16 +31,17 @@ import org.apache.skywalking.oap.server.core.analysis.Stream;
 import org.apache.skywalking.oap.server.core.register.worker.InventoryStreamProcessor;
 import org.apache.skywalking.oap.server.core.remote.grpc.proto.RemoteData;
 import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.source.ScopeDeclaration;
 import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
 import org.apache.skywalking.oap.server.core.storage.annotation.QueryUnifiedIndex;
 import org.apache.skywalking.oap.server.library.util.BooleanUtils;
 
-import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INVENTORY;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_TRAFFIC;
 
-@ScopeDeclaration(id = SERVICE_INVENTORY, name = "ServiceInventory")
-@Stream(name = ServiceInventory.INDEX_NAME, scopeId = DefaultScopeDefine.SERVICE_INVENTORY, builder = ServiceInventory.Builder.class, processor = InventoryStreamProcessor.class)
+@ScopeDeclaration(id = SERVICE_TRAFFIC, name = "ServiceInventory")
+@Stream(name = ServiceInventory.INDEX_NAME, scopeId = DefaultScopeDefine.SERVICE_TRAFFIC, builder = ServiceInventory.Builder.class, processor = InventoryStreamProcessor.class)
 public class ServiceInventory extends RegisterSource {
 
     public static final String INDEX_NAME = "service_inventory";
@@ -91,7 +92,7 @@ public class ServiceInventory extends RegisterSource {
     private boolean resetServiceMapping = false;
 
     public NodeType getServiceNodeType() {
-        return NodeType.get(this.nodeType);
+        return NodeType.valueOf(this.nodeType);
     }
 
     public static String buildId(String serviceName) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/INetworkAddressInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/INetworkAddressInventoryRegister.java
index 81545f1..b014889 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/INetworkAddressInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/INetworkAddressInventoryRegister.java
@@ -19,7 +19,7 @@
 package org.apache.skywalking.oap.server.core.register.service;
 
 import com.google.gson.JsonObject;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.library.module.Service;
 
 public interface INetworkAddressInventoryRegister extends Service {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInstanceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInstanceInventoryRegister.java
index 0e7b066..48af1ee 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInstanceInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInstanceInventoryRegister.java
@@ -19,7 +19,7 @@
 package org.apache.skywalking.oap.server.core.register.service;
 
 import com.google.gson.JsonObject;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.library.module.Service;
 
 public interface IServiceInstanceInventoryRegister extends Service {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java
index 678f6ad..73c91d5 100755
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/IServiceInventoryRegister.java
@@ -19,7 +19,7 @@
 package org.apache.skywalking.oap.server.core.register.service;
 
 import com.google.gson.JsonObject;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.library.module.Service;
 
 public interface IServiceInventoryRegister extends Service {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java
index c77bc7d..05c599a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/NetworkAddressInventoryRegister.java
@@ -24,7 +24,7 @@ import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.cache.NetworkAddressInventoryCache;
 import org.apache.skywalking.oap.server.core.register.NetworkAddressInventory;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.worker.InventoryStreamProcessor;
 import org.apache.skywalking.oap.server.library.module.ModuleDefineHolder;
 import org.slf4j.Logger;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInstanceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInstanceInventoryRegister.java
index 7590cba..870bb19 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInstanceInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInstanceInventoryRegister.java
@@ -22,7 +22,7 @@ import com.google.gson.JsonObject;
 import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
 import org.apache.skywalking.oap.server.core.register.worker.InventoryStreamProcessor;
 import org.apache.skywalking.oap.server.library.module.ModuleDefineHolder;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java
index 161ab5f..eefea86 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/service/ServiceInventoryRegister.java
@@ -23,7 +23,7 @@ import java.util.Objects;
 import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.ServiceInventory;
 import org.apache.skywalking.oap.server.core.register.worker.InventoryStreamProcessor;
 import org.apache.skywalking.oap.server.library.module.ModuleDefineHolder;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
index 286b8b6..2802ec6 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -52,7 +52,7 @@ public class DefaultScopeDefine {
     public static final int SERVICE_INSTANCE_JVM_GC = 11;
     public static final int SEGMENT = 12;
     public static final int ALARM = 13;
-    public static final int SERVICE_INVENTORY = 14;
+    public static final int SERVICE_TRAFFIC = 14;
     public static final int SERVICE_INSTANCE_INVENTORY = 15;
     public static final int ENDPOINT_TRAFFIC = 16;
     public static final int DATABASE_ACCESS = 17;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/NodeType.java
similarity index 95%
rename from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/NodeType.java
index b1aa7ff..b46dcdc 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/NodeType.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oap.server.core.register;
+package org.apache.skywalking.oap.server.core.source;
 
 import org.apache.skywalking.apm.network.common.ServiceType;
 import org.apache.skywalking.oap.server.core.UnexpectedException;
@@ -67,7 +67,7 @@ public enum NodeType {
         return value;
     }
 
-    public static NodeType get(int value) {
+    public static NodeType valueOf(int value) {
         switch (value) {
             case 0:
                 return Normal;
@@ -92,7 +92,7 @@ public enum NodeType {
      * Right now, spanLayerValue is exact same as NodeType value.
      */
     public static NodeType fromSpanLayerValue(int spanLayerValue) {
-        return get(spanLayerValue);
+        return valueOf(spanLayerValue);
     }
 
     public static NodeType fromRegisterServiceType(ServiceType serviceType) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
index 5dc390e..a52ea9e 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
@@ -39,11 +39,9 @@ public class Service extends Source {
 
     @Getter
     @Setter
-    private int id;
-    @Getter
-    @Setter
     @ScopeDefaultColumn.DefinedByField(columnName = "name", requireDynamicActive = true)
     private String name;
+    private NodeType type;
     @Getter
     @Setter
     private String serviceInstanceName;
diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java
index a7385be..1a05853 100644
--- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java
+++ b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/grpc/RegisterServiceHandler.java
@@ -41,7 +41,7 @@ import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache;
 import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
 import org.apache.skywalking.oap.server.core.register.ServiceInventory;
 import org.apache.skywalking.oap.server.core.register.service.INetworkAddressInventoryRegister;
diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/rest/ServiceRegisterServletHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/rest/ServiceRegisterServletHandler.java
index 10242bc..a316428 100644
--- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/rest/ServiceRegisterServletHandler.java
+++ b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v6/rest/ServiceRegisterServletHandler.java
@@ -27,7 +27,7 @@ import javax.servlet.http.HttpServletRequest;
 import org.apache.skywalking.apm.network.register.v2.Service;
 import org.apache.skywalking.apm.network.register.v2.Services;
 import org.apache.skywalking.oap.server.core.CoreModule;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.service.IServiceInventoryRegister;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
 import org.apache.skywalking.oap.server.library.server.jetty.ArgumentsParseException;
diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanExchanger.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanExchanger.java
index c948990..b232898 100644
--- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanExchanger.java
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanExchanger.java
@@ -29,7 +29,7 @@ import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache;
 import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache;
 import org.apache.skywalking.oap.server.core.config.IComponentLibraryCatalogService;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
 import org.apache.skywalking.oap.server.core.register.ServiceInventory;
 import org.apache.skywalking.oap.server.core.register.service.INetworkAddressInventoryRegister;
diff --git a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java
index 0cc0b6c..15b1f01 100644
--- a/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java
+++ b/oap-server/server-receiver-plugin/zipkin-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/zipkin/analysis/transform/SpringSleuthSegmentBuilderTest.java
@@ -28,7 +28,7 @@ import org.apache.skywalking.apm.network.language.agent.SpanType;
 import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject;
 import org.apache.skywalking.apm.network.language.agent.v2.SegmentReference;
 import org.apache.skywalking.apm.network.language.agent.v2.SpanObjectV2;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.service.IServiceInstanceInventoryRegister;
 import org.apache.skywalking.oap.server.core.register.service.IServiceInventoryRegister;
 import org.apache.skywalking.oap.server.receiver.sharing.server.CoreRegisterLinker;
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
index 49afdac..9ce4684 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/MetadataQueryEsDAO.java
@@ -33,7 +33,7 @@ import org.apache.skywalking.oap.server.core.query.entity.Endpoint;
 import org.apache.skywalking.oap.server.core.query.entity.LanguageTrans;
 import org.apache.skywalking.oap.server.core.query.entity.Service;
 import org.apache.skywalking.oap.server.core.query.entity.ServiceInstance;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.RegisterSource;
 import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
 import org.apache.skywalking.oap.server.core.register.ServiceInventory;
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java b/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java
index 29ab5e2..ddb8179 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch7-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch7/query/MetadataQueryEs7DAO.java
@@ -20,7 +20,7 @@ package org.apache.skywalking.oap.server.storage.plugin.elasticsearch7.query;
 
 import java.io.IOException;
 import org.apache.skywalking.oap.server.core.analysis.manual.endpoint.EndpointTraffic;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.ServiceInventory;
 import org.apache.skywalking.oap.server.core.source.DetectPoint;
 import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
diff --git a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
index d9a8a0c..8b8fda6 100644
--- a/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-jdbc-hikaricp-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/jdbc/h2/dao/H2MetadataQueryDAO.java
@@ -36,7 +36,7 @@ import org.apache.skywalking.oap.server.core.query.entity.Endpoint;
 import org.apache.skywalking.oap.server.core.query.entity.LanguageTrans;
 import org.apache.skywalking.oap.server.core.query.entity.Service;
 import org.apache.skywalking.oap.server.core.query.entity.ServiceInstance;
-import org.apache.skywalking.oap.server.core.register.NodeType;
+import org.apache.skywalking.oap.server.core.source.NodeType;
 import org.apache.skywalking.oap.server.core.register.RegisterSource;
 import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory;
 import org.apache.skywalking.oap.server.core.register.ServiceInventory;