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.sh...@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]))) {