Commit 9b3192fb authored by 彭勇升 pengys's avatar 彭勇升 pengys Committed by 吴晟
Browse files

Set span layer into network inventory for distinguish what the network address...

Set span layer into network inventory for distinguish what the network address is. MQ? DB? ... (#1824)
parent d9556c38
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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;
+2 −0
Original line number Diff line number Diff line
@@ -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);
}
+19 −0
Original line number Diff line number Diff line
@@ -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;
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -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);
            }
        }

+1 −0
Original line number Diff line number Diff line
@@ -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);