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 2018/12/15 18:11:18 UTC
[incubator-skywalking] branch nodetype updated: NodeType value
refactor.
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch nodetype
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/nodetype by this push:
new ebc49d9 NodeType value refactor.
ebc49d9 is described below
commit ebc49d9c4d3d356c60ac35c2f731ada56a41ef47
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Sat Dec 15 10:11:09 2018 -0800
NodeType value refactor.
---
.../server/core/query/MetadataQueryService.java | 8 +-
.../core/register/NetworkAddressInventory.java | 10 ++-
.../oap/server/core/register/NodeType.java | 88 ++++++++++++++++++++++
.../oap/server/core/register/ServiceInventory.java | 11 ++-
.../service/INetworkAddressInventoryRegister.java | 3 +-
.../service/NetworkAddressInventoryRegister.java | 27 ++++---
.../core/storage/query/IMetadataQueryDAO.java | 2 +-
.../elasticsearch/query/MetadataQueryEsDAO.java | 4 +-
.../plugin/jdbc/h2/dao/H2MetadataQueryDAO.java | 4 +-
9 files changed, 136 insertions(+), 21 deletions(-)
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 6390827..a9b3dd6 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
@@ -24,7 +24,7 @@ import org.apache.skywalking.apm.network.language.agent.SpanLayer;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.cache.*;
import org.apache.skywalking.oap.server.core.query.entity.*;
-import org.apache.skywalking.oap.server.core.register.EndpointInventory;
+import org.apache.skywalking.oap.server.core.register.*;
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;
@@ -68,9 +68,9 @@ public class MetadataQueryService implements org.apache.skywalking.oap.server.li
ClusterBrief clusterBrief = new ClusterBrief();
clusterBrief.setNumOfService(getMetadataQueryDAO().numOfService(startTimestamp, endTimestamp));
clusterBrief.setNumOfEndpoint(getMetadataQueryDAO().numOfEndpoint(startTimestamp, endTimestamp));
- clusterBrief.setNumOfDatabase(getMetadataQueryDAO().numOfConjectural(startTimestamp, endTimestamp, SpanLayer.Database_VALUE));
- clusterBrief.setNumOfCache(getMetadataQueryDAO().numOfConjectural(startTimestamp, endTimestamp, SpanLayer.Cache_VALUE));
- clusterBrief.setNumOfMQ(getMetadataQueryDAO().numOfConjectural(startTimestamp, endTimestamp, SpanLayer.MQ_VALUE));
+ clusterBrief.setNumOfDatabase(getMetadataQueryDAO().numOfConjectural(startTimestamp, endTimestamp, NodeType.Database.value()));
+ clusterBrief.setNumOfCache(getMetadataQueryDAO().numOfConjectural(startTimestamp, endTimestamp, NodeType.Cache.value()));
+ clusterBrief.setNumOfMQ(getMetadataQueryDAO().numOfConjectural(startTimestamp, endTimestamp, NodeType.MQ.value()));
return clusterBrief;
}
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 1d9aefe..0647a2c 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
@@ -43,7 +43,15 @@ public class NetworkAddressInventory extends RegisterSource {
public static final String NODE_TYPE = "node_type";
@Setter @Getter @Column(columnName = NAME, matchQuery = true) private String name = Const.EMPTY_STRING;
- @Setter @Getter @Column(columnName = NODE_TYPE) private int nodeType;
+ @Setter(AccessLevel.PRIVATE) @Getter(AccessLevel.PRIVATE) @Column(columnName = NODE_TYPE) private int nodeType;
+
+ public void setNetworkAddressNodeType(NodeType nodeType) {
+ this.nodeType = nodeType.value();
+ }
+
+ public NodeType getNetworkAddressNodeType() {
+ return NodeType.get(this.nodeType);
+ }
public static String buildId(String networkAddress) {
return networkAddress;
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/register/NodeType.java
new file mode 100644
index 0000000..fc06b95
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/register/NodeType.java
@@ -0,0 +1,88 @@
+/*
+ * 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.register;
+
+import org.apache.skywalking.oap.server.core.UnexpectedException;
+
+/**
+ * Node type describe which kind of node of Service or Network address represents to.
+ *
+ * The value comes from 'org.apache.skywalking.apm.network.language.agent.SpanLayer' at first place, but most likely it
+ * will extend and be used directly from different sources, such as Mesh.
+ *
+ * @author wusheng
+ */
+public enum NodeType {
+ /**
+ * <code>Unknown = 0;</code>
+ */
+ Unknown(0),
+ /**
+ * <code>Database = 1;</code>
+ */
+ Database(1),
+ /**
+ * <code>RPCFramework = 2;</code>
+ */
+ RPCFramework(2),
+ /**
+ * <code>Http = 3;</code>
+ */
+ Http(3),
+ /**
+ * <code>MQ = 4;</code>
+ */
+ MQ(4),
+ /**
+ * <code>Cache = 5;</code>
+ */
+ Cache(5),
+ UNRECOGNIZED(-1);
+
+ private final int value;
+
+ NodeType(int value) {
+ this.value = value;
+ }
+
+ public int value() {
+ return value;
+ }
+
+ public static NodeType get(int value) {
+ switch (value) {
+ case 0:
+ return Unknown;
+ case 1:
+ return Database;
+ case 2:
+ return RPCFramework;
+ case 3:
+ return Http;
+ case 4:
+ return MQ;
+ case 5:
+ return Cache;
+ case -1:
+ return UNRECOGNIZED;
+ default:
+ throw new UnexpectedException("Unknown NodeType value");
+ }
+ }
+}
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 7af54b8..7591994 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
@@ -50,10 +50,15 @@ public class ServiceInventory extends RegisterSource {
@Setter @Getter @Column(columnName = NAME, matchQuery = true) private String name = Const.EMPTY_STRING;
@Setter @Getter @Column(columnName = IS_ADDRESS) private int isAddress;
@Setter @Getter @Column(columnName = ADDRESS_ID) private int addressId;
- @Setter @Getter @Column(columnName = NODE_TYPE) private int nodeType;
+ @Setter(AccessLevel.PRIVATE) @Getter(AccessLevel.PRIVATE) @Column(columnName = NODE_TYPE) private int nodeType;
@Setter @Getter @Column(columnName = MAPPING_SERVICE_ID) private int mappingServiceId;
@Setter @Getter @Column(columnName = MAPPING_LAST_UPDATE_TIME) private long mappingLastUpdateTime;
+
+ public NodeType getServiceNodeType() {
+ return NodeType.get(this.nodeType);
+ }
+
public static String buildId(String serviceName) {
return serviceName + Const.ID_SPLIT + BooleanUtils.FALSE + Const.ID_SPLIT + Const.NONE;
}
@@ -62,6 +67,10 @@ public class ServiceInventory extends RegisterSource {
return BooleanUtils.TRUE + Const.ID_SPLIT + addressId;
}
+ public void setServiceNodeType(NodeType nodeType){
+ this.nodeType = nodeType.value();
+ }
+
@Override public String id() {
if (BooleanUtils.TRUE == isAddress) {
return buildId(addressId);
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 02c93b1..d5f190f 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
@@ -18,6 +18,7 @@
package org.apache.skywalking.oap.server.core.register.service;
+import org.apache.skywalking.oap.server.core.register.NodeType;
import org.apache.skywalking.oap.server.library.module.Service;
/**
@@ -30,5 +31,5 @@ public interface INetworkAddressInventoryRegister extends Service {
void heartbeat(int addressId, long heartBeatTime);
- void update(int addressId, int srcLayer);
+ void update(int addressId, NodeType nodeType);
}
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 d0d1321..fee0890 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
@@ -115,27 +115,36 @@ public class NetworkAddressInventoryRegister implements INetworkAddressInventory
}
}
- @Override public void update(int addressId, int nodeType) {
- if (!this.compare(addressId, nodeType)) {
+ @Override public void update(int addressId, NodeType nodeType) {
+ NetworkAddressInventory networkAddress = getNetworkAddressInventoryCache().get(addressId);
+
+ if (!this.compare(networkAddress, nodeType)) {
NetworkAddressInventory newNetworkAddress = getNetworkAddressInventoryCache().get(addressId);
- newNetworkAddress.setNodeType(nodeType);
+ newNetworkAddress.setNetworkAddressNodeType(nodeType);
newNetworkAddress.setHeartbeatTime(System.currentTimeMillis());
InventoryProcess.INSTANCE.in(newNetworkAddress);
+ }
- ServiceInventory newServiceInventory = getServiceInventoryCache().get(getServiceInventoryCache().getServiceId(newNetworkAddress.id()));
- newServiceInventory.setNodeType(nodeType);
+ ServiceInventory newServiceInventory = getServiceInventoryCache().get(getServiceInventoryCache().getServiceId(networkAddress.id()));
+ if (!this.compare(newServiceInventory, nodeType)) {
+ newServiceInventory.setServiceNodeType(nodeType);
newServiceInventory.setHeartbeatTime(System.currentTimeMillis());
InventoryProcess.INSTANCE.in(newServiceInventory);
}
}
- private boolean compare(int addressId, int srcLayer) {
- NetworkAddressInventory networkAddress = getNetworkAddressInventoryCache().get(addressId);
+ private boolean compare(NetworkAddressInventory newNetworkAddress, NodeType srcLayer) {
+ if (Objects.nonNull(newNetworkAddress)) {
+ return srcLayer == newNetworkAddress.getNetworkAddressNodeType();
+ }
+ return true;
+ }
- if (Objects.nonNull(networkAddress)) {
- return srcLayer == networkAddress.getNodeType();
+ private boolean compare(ServiceInventory newServiceInventory, NodeType srcLayer) {
+ if (Objects.nonNull(newServiceInventory)) {
+ return srcLayer == newServiceInventory.getServiceNodeType();
}
return true;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
index e4d66b2..79d0edb 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IMetadataQueryDAO.java
@@ -32,7 +32,7 @@ public interface IMetadataQueryDAO extends DAO {
int numOfEndpoint(final long startTimestamp, final long endTimestamp) throws IOException;
- int numOfConjectural(final long startTimestamp, final long endTimestamp, final int srcLayer) throws IOException;
+ int numOfConjectural(final long startTimestamp, final long endTimestamp, final int nodeTypeValue) throws IOException;
List<Service> getAllServices(final long startTimestamp, final long endTimestamp) throws IOException;
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 54f0c9f..f028936 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
@@ -72,10 +72,10 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
return (int)response.getHits().getTotalHits();
}
- @Override public int numOfConjectural(long startTimestamp, long endTimestamp, int srcLayer) throws IOException {
+ @Override public int numOfConjectural(long startTimestamp, long endTimestamp, int nodeTypeValue) throws IOException {
SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
- sourceBuilder.query(QueryBuilders.termQuery(NetworkAddressInventory.NODE_TYPE, srcLayer));
+ sourceBuilder.query(QueryBuilders.termQuery(NetworkAddressInventory.NODE_TYPE, nodeTypeValue));
sourceBuilder.size(0);
SearchResponse response = getClient().search(NetworkAddressInventory.MODEL_NAME, sourceBuilder);
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 b985854..be07bed 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
@@ -78,12 +78,12 @@ public class H2MetadataQueryDAO implements IMetadataQueryDAO {
}
@Override public int numOfConjectural(long startTimestamp, long endTimestamp,
- int srcLayer) throws IOException {
+ int nodeTypeValue) throws IOException {
StringBuilder sql = new StringBuilder();
List<Object> condition = new ArrayList<>(5);
sql.append("select count(*) num from ").append(NetworkAddressInventory.MODEL_NAME).append(" where ");
sql.append(NetworkAddressInventory.NODE_TYPE).append("=?");
- condition.add(srcLayer);
+ condition.add(nodeTypeValue);
try (Connection connection = h2Client.getConnection()) {
try (ResultSet resultSet = h2Client.executeQuery(connection, sql.toString(), condition.toArray(new Object[0]))) {