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/10/26 14:57:11 UTC
[incubator-skywalking] branch master updated: Set span layer into
network inventory for distinguish what the network address is. MQ? DB? ...
(#1824)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 9b3192f Set span layer into network inventory for distinguish what the network address is. MQ? DB? ... (#1824)
9b3192f is described below
commit 9b3192fbac49892cf2d47d8d7cd90eeaed7f1ddb
Author: 彭勇升 pengys <80...@qq.com>
AuthorDate: Fri Oct 26 22:57:05 2018 +0800
Set span layer into network inventory for distinguish what the network address is. MQ? DB? ... (#1824)
---
.../server/core/register/NetworkAddressInventory.java | 12 ++++++++++++
.../service/INetworkAddressInventoryRegister.java | 2 ++
.../service/NetworkAddressInventoryRegister.java | 19 +++++++++++++++++++
.../parser/standardization/SpanIdExchanger.java | 3 +++
.../elasticsearch/query/MetadataQueryEsDAO.java | 1 +
5 files changed, 37 insertions(+)
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 c68ba63..fadb00c 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
@@ -39,8 +39,10 @@ public class NetworkAddressInventory extends RegisterSource {
public static final String MODEL_NAME = "network_address_inventory";
private static final String NAME = "name";
+ public static final String SRC_LAYER = "src_layer";
@Setter @Getter @Column(columnName = NAME, matchQuery = true) private String name = Const.EMPTY_STRING;
+ @Setter @Getter @Column(columnName = SRC_LAYER) private int srcLayer;
public static String buildId(String networkAddress) {
return networkAddress;
@@ -71,9 +73,16 @@ public class NetworkAddressInventory extends RegisterSource {
return true;
}
+ @Override public void combine(RegisterSource registerSource) {
+ super.combine(registerSource);
+ NetworkAddressInventory inventory = (NetworkAddressInventory)registerSource;
+ setSrcLayer(inventory.srcLayer);
+ }
+
@Override public RemoteData.Builder serialize() {
RemoteData.Builder remoteBuilder = RemoteData.newBuilder();
remoteBuilder.setDataIntegers(0, getSequence());
+ remoteBuilder.setDataIntegers(1, getSrcLayer());
remoteBuilder.setDataLongs(0, getRegisterTime());
remoteBuilder.setDataLongs(1, getHeartbeatTime());
@@ -84,6 +93,7 @@ public class NetworkAddressInventory extends RegisterSource {
@Override public void deserialize(RemoteData remoteData) {
setSequence(remoteData.getDataIntegers(0));
+ setSrcLayer(remoteData.getDataIntegers(1));
setRegisterTime(remoteData.getDataLongs(0));
setHeartbeatTime(remoteData.getDataLongs(1));
@@ -101,6 +111,7 @@ public class NetworkAddressInventory extends RegisterSource {
NetworkAddressInventory inventory = new NetworkAddressInventory();
inventory.setSequence((Integer)dbMap.get(SEQUENCE));
inventory.setName((String)dbMap.get(NAME));
+ inventory.setSrcLayer((Integer)dbMap.get(SRC_LAYER));
inventory.setRegisterTime((Long)dbMap.get(REGISTER_TIME));
inventory.setHeartbeatTime((Long)dbMap.get(HEARTBEAT_TIME));
return inventory;
@@ -110,6 +121,7 @@ public class NetworkAddressInventory extends RegisterSource {
Map<String, Object> map = new HashMap<>();
map.put(SEQUENCE, storageData.getSequence());
map.put(NAME, storageData.getName());
+ map.put(SRC_LAYER, storageData.getSrcLayer());
map.put(REGISTER_TIME, storageData.getRegisterTime());
map.put(HEARTBEAT_TIME, storageData.getHeartbeatTime());
return map;
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 49c8848..02c93b1 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
@@ -29,4 +29,6 @@ public interface INetworkAddressInventoryRegister extends Service {
int get(String networkAddress);
void heartbeat(int addressId, long heartBeatTime);
+
+ void update(int addressId, int srcLayer);
}
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 3cf5481..db72c87 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
@@ -106,4 +106,23 @@ public class NetworkAddressInventoryRegister implements INetworkAddressInventory
logger.warn("Network address {} heartbeat, but not found in storage.");
}
}
+
+ @Override public void update(int addressId, int srcLayer) {
+ if (!this.compare(addressId, srcLayer)) {
+ NetworkAddressInventory newNetworkAddress = getNetworkAddressInventoryCache().get(addressId);
+ newNetworkAddress.setSrcLayer(srcLayer);
+ newNetworkAddress.setHeartbeatTime(System.currentTimeMillis());
+
+ InventoryProcess.INSTANCE.in(newNetworkAddress);
+ }
+ }
+
+ private boolean compare(int addressId, int srcLayer) {
+ NetworkAddressInventory networkAddress = getNetworkAddressInventoryCache().get(addressId);
+
+ if (Objects.nonNull(networkAddress)) {
+ return srcLayer == networkAddress.getSrcLayer();
+ }
+ return true;
+ }
}
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/SpanIdExchanger.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java
index 98e9c9e..b19d9e6 100644
--- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java
+++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SpanIdExchanger.java
@@ -80,6 +80,9 @@ public class SpanIdExchanger implements IdExchanger<SpanDecorator> {
standardBuilder.toBuilder();
standardBuilder.setPeerId(peerId);
standardBuilder.setPeer(Const.EMPTY_STRING);
+
+ int spanLayer = standardBuilder.getSpanLayerValue();
+ networkAddressInventoryRegister.update(peerId, spanLayer);
}
}
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 14dac16..c334431 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
@@ -77,6 +77,7 @@ public class MetadataQueryEsDAO extends EsDAO implements IMetadataQueryDAO {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must().add(timeRangeQueryBuild(startTimestamp, endTimestamp));
+ boolQueryBuilder.must().add(QueryBuilders.termQuery(NetworkAddressInventory.SRC_LAYER, srcLayer));
sourceBuilder.query(boolQueryBuilder);
sourceBuilder.size(0);