diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ApplicationRegisterServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ApplicationRegisterServiceHandler.java index b8072fbd7..8fa4070b3 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ApplicationRegisterServiceHandler.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/ApplicationRegisterServiceHandler.java @@ -51,7 +51,7 @@ public class ApplicationRegisterServiceHandler extends ApplicationRegisterServic ApplicationMappings.Builder builder = ApplicationMappings.newBuilder(); for (int i = 0; i < applicationCodes.size(); i++) { String applicationCode = applicationCodes.get(i); - int applicationId = applicationIDService.getOrCreate(applicationCode); + int applicationId = applicationIDService.getOrCreateForApplicationCode(applicationCode); if (applicationId != 0) { KeyWithIntegerValue value = KeyWithIntegerValue.newBuilder().setKey(applicationCode).setValue(applicationId).build(); diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/InstanceDiscoveryServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/InstanceDiscoveryServiceHandler.java index 0841ac314..87a8ceca4 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/InstanceDiscoveryServiceHandler.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/InstanceDiscoveryServiceHandler.java @@ -49,7 +49,7 @@ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrp @Override public void register(ApplicationInstance request, StreamObserver responseObserver) { long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(request.getRegisterTime()); - int instanceId = instanceIDService.getOrCreate(request.getApplicationId(), request.getAgentUUID(), timeBucket, buildOsInfo(request.getOsinfo())); + int instanceId = instanceIDService.getOrCreateByAgentUUID(request.getApplicationId(), request.getAgentUUID(), timeBucket, buildOsInfo(request.getOsinfo())); ApplicationInstanceMapping.Builder builder = ApplicationInstanceMapping.newBuilder(); builder.setApplicationId(request.getApplicationId()); builder.setApplicationInstanceId(instanceId); diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/ApplicationRegisterServletHandler.java b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/ApplicationRegisterServletHandler.java index 77296190e..7cb6fbd2f 100644 --- a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/ApplicationRegisterServletHandler.java +++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/ApplicationRegisterServletHandler.java @@ -62,7 +62,7 @@ public class ApplicationRegisterServletHandler extends JettyHandler { JsonArray applicationCodes = gson.fromJson(req.getReader(), JsonArray.class); for (int i = 0; i < applicationCodes.size(); i++) { String applicationCode = applicationCodes.get(i).getAsString(); - int applicationId = applicationIDService.getOrCreate(applicationCode); + int applicationId = applicationIDService.getOrCreateForApplicationCode(applicationCode); JsonObject mapping = new JsonObject(); mapping.addProperty(APPLICATION_CODE, applicationCode); mapping.addProperty(APPLICATION_ID, applicationId); diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceDiscoveryServletHandler.java b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceDiscoveryServletHandler.java index feac02102..0fd473b65 100644 --- a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceDiscoveryServletHandler.java +++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceDiscoveryServletHandler.java @@ -68,7 +68,7 @@ public class InstanceDiscoveryServletHandler extends JettyHandler { long registerTime = instance.get(REGISTER_TIME).getAsLong(); JsonObject osInfo = instance.get(OS_INFO).getAsJsonObject(); - int instanceId = instanceIDService.getOrCreate(applicationId, agentUUID, registerTime, osInfo.toString()); + int instanceId = instanceIDService.getOrCreateByAgentUUID(applicationId, agentUUID, registerTime, osInfo.toString()); responseJson.addProperty(APPLICATION_ID, applicationId); responseJson.addProperty(INSTANCE_ID, instanceId); } catch (IOException e) { diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IApplicationIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IApplicationIDService.java index 27734ebff..3e05aa3ff 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IApplicationIDService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IApplicationIDService.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.analysis.register.define.service; import org.apache.skywalking.apm.collector.core.module.Service; @@ -25,5 +24,7 @@ import org.apache.skywalking.apm.collector.core.module.Service; * @author peng-yongsheng */ public interface IApplicationIDService extends Service { - int getOrCreate(String applicationCode); + int getOrCreateForApplicationCode(String applicationCode); + + int getOrCreateForAddressId(int addressId, String networkAddress); } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java index 56c44e6c9..a8f72f85e 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.analysis.register.define.service; import org.apache.skywalking.apm.collector.core.module.Service; @@ -25,7 +24,9 @@ import org.apache.skywalking.apm.collector.core.module.Service; * @author peng-yongsheng */ public interface IInstanceIDService extends Service { - int getOrCreate(int applicationId, String agentUUID, long registerTime, String osInfo); + int getOrCreateByAgentUUID(int applicationId, String agentUUID, long registerTime, String osInfo); void recover(int instanceId, int applicationId, long registerTime, String osInfo); + + int getOrCreateByAddressId(int applicationId, int addressId, long registerTime); } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java index 5024cc61c..e76bbfaef 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/register/ApplicationRegisterSerialWorker.java @@ -54,7 +54,7 @@ public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker applicationRegisterGraph; public ApplicationIDService(ModuleManager moduleManager) { @@ -59,13 +62,37 @@ public class ApplicationIDService implements IApplicationIDService { return applicationCacheService; } - public int getOrCreate(String applicationCode) { - int applicationId = getApplicationCacheService().get(applicationCode); + private NetworkAddressCacheService getNetworkAddressCacheService() { + if (ObjectUtils.isEmpty(networkAddressCacheService)) { + this.networkAddressCacheService = moduleManager.find(CacheModule.NAME).getService(NetworkAddressCacheService.class); + } + return networkAddressCacheService; + } + + @Override public int getOrCreateForApplicationCode(String applicationCode) { + int applicationId = getApplicationCacheService().getApplicationIdByCode(applicationCode); if (applicationId == 0) { Application application = new Application(applicationCode); application.setApplicationCode(applicationCode); application.setApplicationId(0); + application.setAddressId(Const.NONE); + application.setIsAddress(false); + + getApplicationRegisterGraph().start(application); + } + return applicationId; + } + + @Override public int getOrCreateForAddressId(int addressId, String networkAddress) { + int applicationId = getApplicationCacheService().getApplicationIdByAddressId(addressId); + + if (applicationId == 0) { + Application application = new Application(networkAddress); + application.setApplicationCode(networkAddress); + application.setApplicationId(0); + application.setAddressId(addressId); + application.setIsAddress(true); getApplicationRegisterGraph().start(application); } diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java index 3f672552f..ce4cdb0c7 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java @@ -25,6 +25,7 @@ import org.apache.skywalking.apm.collector.cache.service.InstanceCacheService; import org.apache.skywalking.apm.collector.core.graph.Graph; import org.apache.skywalking.apm.collector.core.graph.GraphManager; import org.apache.skywalking.apm.collector.core.module.ModuleManager; +import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.ObjectUtils; import org.apache.skywalking.apm.collector.storage.StorageModule; import org.apache.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; @@ -69,9 +70,9 @@ public class InstanceIDService implements IInstanceIDService { return instanceRegisterDAO; } - public int getOrCreate(int applicationId, String agentUUID, long registerTime, String osInfo) { - logger.debug("getApplicationId or create instance id, application id: {}, agentUUID: {}, registerTime: {}, osInfo: {}", applicationId, agentUUID, registerTime, osInfo); - int instanceId = getInstanceCacheService().getInstanceId(applicationId, agentUUID); + @Override public int getOrCreateByAgentUUID(int applicationId, String agentUUID, long registerTime, String osInfo) { + logger.debug("get or create instance id by agent UUID, application id: {}, agentUUID: {}, registerTime: {}, osInfo: {}", applicationId, agentUUID, registerTime, osInfo); + int instanceId = getInstanceCacheService().getInstanceIdByAgentUUID(applicationId, agentUUID); if (instanceId == 0) { Instance instance = new Instance("0"); @@ -81,13 +82,35 @@ public class InstanceIDService implements IInstanceIDService { instance.setHeartBeatTime(registerTime); instance.setInstanceId(0); instance.setOsInfo(osInfo); + instance.setIsAddress(false); + instance.setAddressId(Const.NONE); getInstanceRegisterGraph().start(instance); } return instanceId; } - public void recover(int instanceId, int applicationId, long registerTime, String osInfo) { + @Override public int getOrCreateByAddressId(int applicationId, int addressId, long registerTime) { + logger.debug("get or create instance id by address id, application id: {}, address id: {}, registerTime: {}", applicationId, addressId, registerTime); + int instanceId = getInstanceCacheService().getInstanceIdByAddressId(applicationId, addressId); + + if (instanceId == 0) { + Instance instance = new Instance("0"); + instance.setApplicationId(applicationId); + instance.setAgentUUID(Const.EMPTY_STRING); + instance.setRegisterTime(registerTime); + instance.setHeartBeatTime(registerTime); + instance.setInstanceId(0); + instance.setOsInfo(Const.EMPTY_STRING); + instance.setIsAddress(true); + instance.setAddressId(addressId); + + getInstanceRegisterGraph().start(instance); + } + return instanceId; + } + + @Override public void recover(int instanceId, int applicationId, long registerTime, String osInfo) { logger.debug("instance recover, instance id: {}, application id: {}, register time: {}", instanceId, applicationId, registerTime); Instance instance = new Instance(String.valueOf(instanceId)); instance.setApplicationId(applicationId); diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/NetworkAddressIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/NetworkAddressIDService.java index 5eabaa706..2d54e8bfc 100644 --- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/NetworkAddressIDService.java +++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/NetworkAddressIDService.java @@ -18,7 +18,10 @@ package org.apache.skywalking.apm.collector.analysis.register.provider.service; +import org.apache.skywalking.apm.collector.analysis.register.define.AnalysisRegisterModule; import org.apache.skywalking.apm.collector.analysis.register.define.graph.GraphIdDefine; +import org.apache.skywalking.apm.collector.analysis.register.define.service.IApplicationIDService; +import org.apache.skywalking.apm.collector.analysis.register.define.service.IInstanceIDService; import org.apache.skywalking.apm.collector.analysis.register.define.service.INetworkAddressIDService; import org.apache.skywalking.apm.collector.cache.CacheModule; import org.apache.skywalking.apm.collector.cache.service.NetworkAddressCacheService; @@ -39,6 +42,8 @@ public class NetworkAddressIDService implements INetworkAddressIDService { private final ModuleManager moduleManager; private NetworkAddressCacheService networkAddressCacheService; + private IApplicationIDService applicationIDService; + private IInstanceIDService instanceIDService; private Graph networkAddressGraph; public NetworkAddressIDService(ModuleManager moduleManager) { @@ -47,28 +52,53 @@ public class NetworkAddressIDService implements INetworkAddressIDService { private NetworkAddressCacheService getNetworkAddressCacheService() { if (ObjectUtils.isEmpty(networkAddressCacheService)) { - networkAddressCacheService = moduleManager.find(CacheModule.NAME).getService(NetworkAddressCacheService.class); + this.networkAddressCacheService = moduleManager.find(CacheModule.NAME).getService(NetworkAddressCacheService.class); } - return networkAddressCacheService; + return this.networkAddressCacheService; + } + + private IApplicationIDService getApplicationIDService() { + if (ObjectUtils.isEmpty(applicationIDService)) { + this.applicationIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IApplicationIDService.class); + } + return this.applicationIDService; + } + + private IInstanceIDService getInstanceIDService() { + if (ObjectUtils.isEmpty(instanceIDService)) { + this.instanceIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IInstanceIDService.class); + } + return this.instanceIDService; } private Graph getNetworkAddressGraph() { if (ObjectUtils.isEmpty(networkAddressGraph)) { this.networkAddressGraph = GraphManager.INSTANCE.findGraph(GraphIdDefine.NETWORK_ADDRESS_NAME_REGISTER_GRAPH_ID, NetworkAddress.class); } - return networkAddressGraph; + return this.networkAddressGraph; } @Override public int getOrCreate(String networkAddress) { int addressId = getNetworkAddressCacheService().getAddressId(networkAddress); - if (addressId == 0) { + if (addressId != 0) { + int applicationId = getApplicationIDService().getOrCreateForAddressId(addressId, networkAddress); + + if (applicationId != 0) { + int instanceId = getInstanceIDService().getOrCreateByAddressId(applicationId, addressId, System.currentTimeMillis()); + + if (instanceId != 0) { + return addressId; + } + } + } else { NetworkAddress newNetworkAddress = new NetworkAddress("0"); newNetworkAddress.setNetworkAddress(networkAddress); newNetworkAddress.setAddressId(0); getNetworkAddressGraph().start(newNetworkAddress); } - return addressId; + + return 0; } } diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java index 6bf7148c7..07e50d423 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.StandardBuilder; diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java index ccc58e012..ccef9af41 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java @@ -20,6 +20,7 @@ package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.par import org.apache.skywalking.apm.collector.analysis.register.define.AnalysisRegisterModule; import org.apache.skywalking.apm.collector.analysis.register.define.service.IApplicationIDService; +import org.apache.skywalking.apm.collector.analysis.register.define.service.INetworkAddressIDService; import org.apache.skywalking.apm.collector.analysis.register.define.service.IServiceNameService; import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.ReferenceDecorator; import org.apache.skywalking.apm.collector.cache.CacheModule; @@ -41,6 +42,7 @@ public class ReferenceIdExchanger implements IdExchanger { private final IApplicationIDService applicationIDService; private final IServiceNameService serviceNameService; private final InstanceCacheService instanceCacheService; + private final INetworkAddressIDService networkAddressIDService; public static ReferenceIdExchanger getInstance(ModuleManager moduleManager) { if (EXCHANGER == null) { @@ -50,9 +52,10 @@ public class ReferenceIdExchanger implements IdExchanger { } private ReferenceIdExchanger(ModuleManager moduleManager) { - applicationIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IApplicationIDService.class); - serviceNameService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IServiceNameService.class); - instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class); + this.applicationIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IApplicationIDService.class); + this.serviceNameService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IServiceNameService.class); + this.networkAddressIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(INetworkAddressIDService.class); + this.instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class); } @Override public boolean exchange(ReferenceDecorator standardBuilder, int applicationId) { @@ -89,7 +92,7 @@ public class ReferenceIdExchanger implements IdExchanger { } if (standardBuilder.getNetworkAddressId() == 0 && StringUtils.isNotEmpty(standardBuilder.getNetworkAddress())) { - int networkAddressId = applicationIDService.getOrCreate(standardBuilder.getNetworkAddress()); + int networkAddressId = networkAddressIDService.getOrCreate(standardBuilder.getNetworkAddress()); if (networkAddressId == 0) { if (logger.isDebugEnabled()) { logger.debug("network address: {} from application id: {} exchange failed", standardBuilder.getNetworkAddress(), applicationId); diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java index 44a7ebe20..13f8d6a6d 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java @@ -19,7 +19,7 @@ package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; import org.apache.skywalking.apm.collector.analysis.register.define.AnalysisRegisterModule; -import org.apache.skywalking.apm.collector.analysis.register.define.service.IApplicationIDService; +import org.apache.skywalking.apm.collector.analysis.register.define.service.INetworkAddressIDService; import org.apache.skywalking.apm.collector.analysis.register.define.service.IServiceNameService; import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; import org.apache.skywalking.apm.collector.core.module.ModuleManager; @@ -36,8 +36,8 @@ public class SpanIdExchanger implements IdExchanger { private final Logger logger = LoggerFactory.getLogger(SpanIdExchanger.class); private static SpanIdExchanger EXCHANGER; - private final IApplicationIDService applicationIDService; private final IServiceNameService serviceNameService; + private final INetworkAddressIDService networkAddressIDService; public static SpanIdExchanger getInstance(ModuleManager moduleManager) { if (EXCHANGER == null) { @@ -47,13 +47,14 @@ public class SpanIdExchanger implements IdExchanger { } private SpanIdExchanger(ModuleManager moduleManager) { - applicationIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IApplicationIDService.class); - serviceNameService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IServiceNameService.class); + this.serviceNameService = moduleManager.find(AnalysisRegisterModule.NAME).getService(IServiceNameService.class); + this.networkAddressIDService = moduleManager.find(AnalysisRegisterModule.NAME).getService(INetworkAddressIDService.class); } @Override public boolean exchange(SpanDecorator standardBuilder, int applicationId) { if (standardBuilder.getPeerId() == 0 && StringUtils.isNotEmpty(standardBuilder.getPeer())) { - int peerId = applicationIDService.getOrCreate(standardBuilder.getPeer()); + int peerId = networkAddressIDService.getOrCreate(standardBuilder.getPeer()); + if (peerId == 0) { logger.debug("peer: {} in application: {} exchange failed", standardBuilder.getPeer(), applicationId); return false; diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/ApplicationCacheService.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/ApplicationCacheService.java index 76a9497fa..57d0c39e3 100644 --- a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/ApplicationCacheService.java +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/ApplicationCacheService.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.cache.service; import org.apache.skywalking.apm.collector.core.module.Service; @@ -25,7 +24,9 @@ import org.apache.skywalking.apm.collector.core.module.Service; * @author peng-yongsheng */ public interface ApplicationCacheService extends Service { - int get(String applicationCode); + int getApplicationIdByCode(String applicationCode); - String get(int applicationId); + String getApplicationCodeById(int applicationId); + + int getApplicationIdByAddressId(int addressId); } diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/InstanceCacheService.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/InstanceCacheService.java index f2450b8c7..646ea3175 100644 --- a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/InstanceCacheService.java +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/apache/skywalking/apm/collector/cache/service/InstanceCacheService.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.cache.service; import org.apache.skywalking.apm.collector.core.module.Service; @@ -25,7 +24,9 @@ import org.apache.skywalking.apm.collector.core.module.Service; * @author peng-yongsheng */ public interface InstanceCacheService extends Service { - int getApplicationId(int applicationInstanceId); + int getApplicationId(int instanceId); - int getInstanceId(int applicationId, String agentUUID); + int getInstanceIdByAgentUUID(int applicationId, String agentUUID); + + int getInstanceIdByAddressId(int applicationId, int addressId); } diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java index bc50f245b..7459e0a41 100644 --- a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.cache.guava.service; import com.google.common.cache.Cache; @@ -54,16 +53,16 @@ public class ApplicationCacheGuavaService implements ApplicationCacheService { return this.applicationCacheDAO; } - public int get(String applicationCode) { + @Override public int getApplicationIdByCode(String applicationCode) { int applicationId = 0; try { - applicationId = codeCache.get(applicationCode, () -> getApplicationCacheDAO().getApplicationId(applicationCode)); + applicationId = codeCache.get(applicationCode, () -> getApplicationCacheDAO().getApplicationIdByCode(applicationCode)); } catch (Throwable e) { logger.error(e.getMessage(), e); } if (applicationId == 0) { - applicationId = getApplicationCacheDAO().getApplicationId(applicationCode); + applicationId = getApplicationCacheDAO().getApplicationIdByCode(applicationCode); if (applicationId != 0) { codeCache.put(applicationCode, applicationId); } @@ -73,7 +72,7 @@ public class ApplicationCacheGuavaService implements ApplicationCacheService { private final Cache idCache = CacheBuilder.newBuilder().maximumSize(1000).build(); - public String get(int applicationId) { + @Override public String getApplicationCodeById(int applicationId) { String applicationCode = Const.EMPTY_STRING; try { applicationCode = idCache.get(applicationId, () -> getApplicationCacheDAO().getApplicationCode(applicationId)); @@ -89,4 +88,23 @@ public class ApplicationCacheGuavaService implements ApplicationCacheService { } return applicationCode; } + + private final Cache addressIdCache = CacheBuilder.newBuilder().maximumSize(1000).build(); + + @Override public int getApplicationIdByAddressId(int addressId) { + int applicationId = 0; + try { + applicationId = addressIdCache.get(addressId, () -> getApplicationCacheDAO().getApplicationIdByAddressId(addressId)); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + + if (applicationId == 0) { + applicationId = getApplicationCacheDAO().getApplicationIdByAddressId(addressId); + if (applicationId != 0) { + addressIdCache.put(addressId, applicationId); + } + } + return applicationId; + } } diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java index d907d0fd4..9401c1016 100644 --- a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/apache/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.cache.guava.service; import com.google.common.cache.Cache; @@ -25,8 +24,8 @@ import org.apache.skywalking.apm.collector.cache.service.InstanceCacheService; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.ObjectUtils; -import org.apache.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; import org.apache.skywalking.apm.collector.storage.StorageModule; +import org.apache.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,9 +36,11 @@ public class InstanceCacheGuavaService implements InstanceCacheService { private final Logger logger = LoggerFactory.getLogger(InstanceCacheGuavaService.class); - private final Cache integerCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); + private final Cache applicationIdCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); - private final Cache stringCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); + private final Cache agentUUIDCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); + + private final Cache addressIdCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); private final ModuleManager moduleManager; private IInstanceCacheDAO instanceCacheDAO; @@ -55,38 +56,56 @@ public class InstanceCacheGuavaService implements InstanceCacheService { return this.instanceCacheDAO; } - public int getApplicationId(int applicationInstanceId) { - + @Override public int getApplicationId(int instanceId) { int applicationId = 0; try { - applicationId = integerCache.get(applicationInstanceId, () -> getInstanceCacheDAO().getApplicationId(applicationInstanceId)); + applicationId = applicationIdCache.get(instanceId, () -> getInstanceCacheDAO().getApplicationId(instanceId)); } catch (Throwable e) { logger.error(e.getMessage(), e); } if (applicationId == 0) { - applicationId = getInstanceCacheDAO().getApplicationId(applicationInstanceId); + applicationId = getInstanceCacheDAO().getApplicationId(instanceId); if (applicationId != 0) { - integerCache.put(applicationInstanceId, applicationId); + applicationIdCache.put(instanceId, applicationId); } } return applicationId; } - @Override public int getInstanceId(int applicationId, String agentUUID) { + @Override public int getInstanceIdByAgentUUID(int applicationId, String agentUUID) { String key = applicationId + Const.ID_SPLIT + agentUUID; int instanceId = 0; try { - instanceId = stringCache.get(key, () -> getInstanceCacheDAO().getInstanceId(applicationId, agentUUID)); + instanceId = agentUUIDCache.get(key, () -> getInstanceCacheDAO().getInstanceIdByAgentUUID(applicationId, agentUUID)); } catch (Throwable e) { logger.error(e.getMessage(), e); } if (instanceId == 0) { - instanceId = getInstanceCacheDAO().getInstanceId(applicationId, agentUUID); + instanceId = getInstanceCacheDAO().getInstanceIdByAgentUUID(applicationId, agentUUID); if (applicationId != 0) { - stringCache.put(key, instanceId); + agentUUIDCache.put(key, instanceId); + } + } + return instanceId; + } + + @Override public int getInstanceIdByAddressId(int applicationId, int addressId) { + String key = applicationId + Const.ID_SPLIT + addressId; + + int instanceId = 0; + try { + instanceId = addressIdCache.get(key, () -> getInstanceCacheDAO().getInstanceIdByAddressId(applicationId, addressId)); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + + if (instanceId == 0) { + instanceId = getInstanceCacheDAO().getInstanceIdByAddressId(applicationId, addressId); + if (applicationId != 0) { + addressIdCache.put(key, instanceId); } } return instanceId; diff --git a/apm-collector/apm-collector-core/src/main/java/org/apache/skywalking/apm/collector/core/util/Const.java b/apm-collector/apm-collector-core/src/main/java/org/apache/skywalking/apm/collector/core/util/Const.java index bcf2fa67e..d07bc6b6b 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/apache/skywalking/apm/collector/core/util/Const.java +++ b/apm-collector/apm-collector-core/src/main/java/org/apache/skywalking/apm/collector/core/util/Const.java @@ -16,13 +16,13 @@ * */ - package org.apache.skywalking.apm.collector.core.util; /** * @author peng-yongsheng */ public class Const { + public static final int NONE = 0; public static final String ID_SPLIT = "_"; public static final int USER_ID = 1; public static final int NONE_SERVICE_ID = 1; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java index af2194b90..c2112c917 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java @@ -24,7 +24,9 @@ import org.apache.skywalking.apm.collector.storage.base.dao.DAO; * @author peng-yongsheng */ public interface IApplicationCacheDAO extends DAO { - int getApplicationId(String applicationCode); + int getApplicationIdByCode(String applicationCode); String getApplicationCode(int applicationId); + + int getApplicationIdByAddressId(int addressId); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java index d78b7c2cb..8ca6459dd 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java @@ -26,5 +26,7 @@ import org.apache.skywalking.apm.collector.storage.base.dao.DAO; public interface IInstanceCacheDAO extends DAO { int getApplicationId(int instanceId); - int getInstanceId(int applicationId, String agentUUID); + int getInstanceIdByAgentUUID(int applicationId, String agentUUID); + + int getInstanceIdByAddressId(int applicationId, int addressId); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Application.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Application.java index 0a38adad6..10a4cf12b 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Application.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Application.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.table.register; import org.apache.skywalking.apm.collector.core.data.Column; @@ -35,12 +34,18 @@ public class Application extends Data { }; private static final Column[] LONG_COLUMNS = {}; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { new Column(ApplicationTable.COLUMN_APPLICATION_ID, new CoverOperation()), + new Column(ApplicationTable.COLUMN_ADDRESS_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = { + new Column(ApplicationTable.COLUMN_IS_ADDRESS, new CoverOperation()), }; - private static final Column[] BOOLEAN_COLUMNS = {}; private static final Column[] BYTE_COLUMNS = {}; public Application(String id) { @@ -62,4 +67,20 @@ public class Application extends Data { public void setApplicationId(int applicationId) { setDataInteger(0, applicationId); } + + public int getAddressId() { + return getDataInteger(1); + } + + public void setAddressId(int addressId) { + setDataInteger(1, addressId); + } + + public boolean getIsAddress() { + return getDataBoolean(0); + } + + public void setIsAddress(boolean isAddress) { + setDataBoolean(0, isAddress); + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ApplicationTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ApplicationTable.java index 31939185b..abb5b5905 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ApplicationTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/ApplicationTable.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.table.register; import org.apache.skywalking.apm.collector.core.data.CommonTable; @@ -28,4 +27,6 @@ public class ApplicationTable extends CommonTable { public static final String TABLE = "application"; public static final String COLUMN_APPLICATION_CODE = "application_code"; public static final String COLUMN_APPLICATION_ID = "application_id"; + public static final String COLUMN_IS_ADDRESS = "is_address"; + public static final String COLUMN_ADDRESS_ID = "address_id"; } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Instance.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Instance.java index cf6bcae0d..c9fee82c1 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Instance.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/Instance.java @@ -16,11 +16,10 @@ * */ - package org.apache.skywalking.apm.collector.storage.table.register; -import org.apache.skywalking.apm.collector.core.data.Data; import org.apache.skywalking.apm.collector.core.data.Column; +import org.apache.skywalking.apm.collector.core.data.Data; import org.apache.skywalking.apm.collector.core.data.operator.CoverOperation; import org.apache.skywalking.apm.collector.core.data.operator.NonOperation; @@ -39,13 +38,19 @@ public class Instance extends Data { new Column(InstanceTable.COLUMN_REGISTER_TIME, new CoverOperation()), new Column(InstanceTable.COLUMN_HEARTBEAT_TIME, new CoverOperation()), }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { new Column(InstanceTable.COLUMN_APPLICATION_ID, new CoverOperation()), new Column(InstanceTable.COLUMN_INSTANCE_ID, new CoverOperation()), + new Column(InstanceTable.COLUMN_ADDRESS_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = { + new Column(InstanceTable.COLUMN_IS_ADDRESS, new CoverOperation()), }; - private static final Column[] BOOLEAN_COLUMNS = {}; private static final Column[] BYTE_COLUMNS = {}; public Instance(String id) { @@ -103,4 +108,20 @@ public class Instance extends Data { public void setOsInfo(String osInfo) { setDataString(2, osInfo); } + + public int getAddressId() { + return getDataInteger(2); + } + + public void setAddressId(int addressId) { + setDataInteger(2, addressId); + } + + public boolean getIsAddress() { + return getDataBoolean(0); + } + + public void setIsAddress(boolean isAddress) { + setDataBoolean(0, isAddress); + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/InstanceTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/InstanceTable.java index 473860093..10779e762 100644 --- a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/InstanceTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/register/InstanceTable.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.table.register; import org.apache.skywalking.apm.collector.core.data.CommonTable; @@ -32,4 +31,6 @@ public class InstanceTable extends CommonTable { public static final String COLUMN_INSTANCE_ID = "instance_id"; public static final String COLUMN_HEARTBEAT_TIME = "heartbeat_time"; public static final String COLUMN_OS_INFO = "os_info"; + public static final String COLUMN_IS_ADDRESS = "is_address"; + public static final String COLUMN_ADDRESS_ID = "address_id"; } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java index fdc510ae4..d2146fb88 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java @@ -28,6 +28,7 @@ import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.slf4j.Logger; @@ -44,13 +45,18 @@ public class ApplicationEsCacheDAO extends EsDAO implements IApplicationCacheDAO super(client); } - @Override public int getApplicationId(String applicationCode) { + @Override public int getApplicationIdByCode(String applicationCode) { ElasticSearchClient client = getClient(); SearchRequestBuilder searchRequestBuilder = client.prepareSearch(ApplicationTable.TABLE); searchRequestBuilder.setTypes("type"); searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); - searchRequestBuilder.setQuery(QueryBuilders.termQuery(ApplicationTable.COLUMN_APPLICATION_CODE, applicationCode)); + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ApplicationTable.COLUMN_APPLICATION_CODE, applicationCode)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ApplicationTable.COLUMN_IS_ADDRESS, false)); + + searchRequestBuilder.setQuery(boolQueryBuilder); searchRequestBuilder.setSize(1); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); @@ -72,4 +78,26 @@ public class ApplicationEsCacheDAO extends EsDAO implements IApplicationCacheDAO } return Const.EMPTY_STRING; } + + @Override public int getApplicationIdByAddressId(int addressId) { + ElasticSearchClient client = getClient(); + + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(ApplicationTable.TABLE); + searchRequestBuilder.setTypes("type"); + searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); + + BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ApplicationTable.COLUMN_ADDRESS_ID, addressId)); + boolQueryBuilder.must().add(QueryBuilders.termQuery(ApplicationTable.COLUMN_IS_ADDRESS, true)); + + searchRequestBuilder.setQuery(boolQueryBuilder); + searchRequestBuilder.setSize(1); + + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + if (searchResponse.getHits().totalHits > 0) { + SearchHit searchHit = searchResponse.getHits().iterator().next(); + return (int)searchHit.getSource().get(ApplicationTable.COLUMN_APPLICATION_ID); + } + return 0; + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java index bb908ff52..bbcd9a84a 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java @@ -55,6 +55,8 @@ public class ApplicationEsRegisterDAO extends EsDAO implements IApplicationRegis Map source = new HashMap<>(); source.put(ApplicationTable.COLUMN_APPLICATION_CODE, application.getApplicationCode()); source.put(ApplicationTable.COLUMN_APPLICATION_ID, application.getApplicationId()); + source.put(ApplicationTable.COLUMN_ADDRESS_ID, application.getAddressId()); + source.put(ApplicationTable.COLUMN_IS_ADDRESS, application.getIsAddress()); IndexResponse response = client.prepareIndex(ApplicationTable.TABLE, application.getId()).setSource(source).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); logger.debug("save application register info, application getId: {}, application code: {}, status: {}", application.getApplicationId(), application.getApplicationCode(), response.status().name()); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java index 980cc5443..cb9340424 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java @@ -52,7 +52,7 @@ public class InstanceEsCacheDAO extends EsDAO implements IInstanceCacheDAO { } } - @Override public int getInstanceId(int applicationId, String agentUUID) { + @Override public int getInstanceIdByAgentUUID(int applicationId, String agentUUID) { ElasticSearchClient client = getClient(); SearchRequestBuilder searchRequestBuilder = client.prepareSearch(InstanceTable.TABLE); @@ -61,6 +61,28 @@ public class InstanceEsCacheDAO extends EsDAO implements IInstanceCacheDAO { BoolQueryBuilder builder = QueryBuilders.boolQuery(); builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId)); builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_AGENT_UUID, agentUUID)); + builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, false)); + searchRequestBuilder.setQuery(builder); + searchRequestBuilder.setSize(1); + + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + if (searchResponse.getHits().totalHits > 0) { + SearchHit searchHit = searchResponse.getHits().iterator().next(); + return (int)searchHit.getSource().get(InstanceTable.COLUMN_INSTANCE_ID); + } + return 0; + } + + @Override public int getInstanceIdByAddressId(int applicationId, int addressId) { + ElasticSearchClient client = getClient(); + + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(InstanceTable.TABLE); + searchRequestBuilder.setTypes("type"); + searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); + BoolQueryBuilder builder = QueryBuilders.boolQuery(); + builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId)); + builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_ADDRESS_ID, addressId)); + builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_IS_ADDRESS, true)); searchRequestBuilder.setQuery(builder); searchRequestBuilder.setSize(1); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java index 4198c57fb..0d9463d17 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java @@ -60,6 +60,8 @@ public class InstanceEsRegisterDAO extends EsDAO implements IInstanceRegisterDAO source.put(InstanceTable.COLUMN_REGISTER_TIME, instance.getRegisterTime()); source.put(InstanceTable.COLUMN_HEARTBEAT_TIME, instance.getHeartBeatTime()); source.put(InstanceTable.COLUMN_OS_INFO, instance.getOsInfo()); + source.put(InstanceTable.COLUMN_ADDRESS_ID, instance.getAddressId()); + source.put(InstanceTable.COLUMN_IS_ADDRESS, instance.getIsAddress()); IndexResponse response = client.prepareIndex(InstanceTable.TABLE, instance.getId()).setSource(source).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); logger.debug("save instance register info, application getId: {}, agentUUID: {}, status: {}", instance.getApplicationId(), instance.getAgentUUID(), response.status().name()); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java index c4effaac5..116254112 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.es.define; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; @@ -39,5 +38,7 @@ public class ApplicationEsTableDefine extends ElasticSearchTableDefine { @Override public void initialize() { addColumn(new ElasticSearchColumnDefine(ApplicationTable.COLUMN_APPLICATION_CODE, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(ApplicationTable.COLUMN_APPLICATION_ID, ElasticSearchColumnDefine.Type.Integer.name())); + addColumn(new ElasticSearchColumnDefine(ApplicationTable.COLUMN_ADDRESS_ID, ElasticSearchColumnDefine.Type.Integer.name())); + addColumn(new ElasticSearchColumnDefine(ApplicationTable.COLUMN_IS_ADDRESS, ElasticSearchColumnDefine.Type.Boolean.name())); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java index 8b2696578..02cdb10af 100644 --- a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java @@ -16,12 +16,11 @@ * */ - package org.apache.skywalking.apm.collector.storage.es.define; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; -import org.apache.skywalking.apm.collector.storage.table.register.InstanceTable; import org.apache.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.apache.skywalking.apm.collector.storage.table.register.InstanceTable; /** * @author peng-yongsheng @@ -43,5 +42,7 @@ public class InstanceEsTableDefine extends ElasticSearchTableDefine { addColumn(new ElasticSearchColumnDefine(InstanceTable.COLUMN_INSTANCE_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(InstanceTable.COLUMN_HEARTBEAT_TIME, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(InstanceTable.COLUMN_OS_INFO, ElasticSearchColumnDefine.Type.Keyword.name())); + addColumn(new ElasticSearchColumnDefine(InstanceTable.COLUMN_ADDRESS_ID, ElasticSearchColumnDefine.Type.Integer.name())); + addColumn(new ElasticSearchColumnDefine(InstanceTable.COLUMN_IS_ADDRESS, ElasticSearchColumnDefine.Type.Boolean.name())); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java index 48ba3ab74..e05590702 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java @@ -16,18 +16,17 @@ * */ - package org.apache.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.apache.skywalking.apm.collector.client.h2.H2Client; +import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.table.register.ApplicationTable; -import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,19 +36,21 @@ import org.slf4j.LoggerFactory; public class ApplicationH2CacheDAO extends H2DAO implements IApplicationCacheDAO { private final Logger logger = LoggerFactory.getLogger(ApplicationH2CacheDAO.class); - private static final String GET_APPLICATION_ID_OR_CODE_SQL = "select {0} from {1} where {2} = ?"; + + private static final String GET_APPLICATION_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ?"; + private static final String GET_APPLICATION_CODE_SQL = "select {0} from {1} where {2} = ?"; public ApplicationH2CacheDAO(H2Client client) { super(client); } @Override - public int getApplicationId(String applicationCode) { - logger.info("get the application getId with application code = {}", applicationCode); + public int getApplicationIdByCode(String applicationCode) { + logger.info("get the application id with application code = {}", applicationCode); H2Client client = getClient(); - String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_OR_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_ID, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_CODE); + String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_SQL, ApplicationTable.COLUMN_APPLICATION_ID, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_CODE, ApplicationTable.COLUMN_IS_ADDRESS); - Object[] params = new Object[] {applicationCode}; + Object[] params = new Object[] {applicationCode, false}; try (ResultSet rs = client.executeQuery(sql, params)) { if (rs.next()) { return rs.getInt(1); @@ -63,7 +64,7 @@ public class ApplicationH2CacheDAO extends H2DAO implements IApplicationCacheDAO @Override public String getApplicationCode(int applicationId) { logger.debug("get application code, applicationId: {}", applicationId); H2Client client = getClient(); - String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_OR_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_CODE, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID); + String sql = SqlBuilder.buildSql(GET_APPLICATION_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_CODE, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID); Object[] params = new Object[] {applicationId}; try (ResultSet rs = client.executeQuery(sql, params)) { if (rs.next()) { @@ -74,4 +75,20 @@ public class ApplicationH2CacheDAO extends H2DAO implements IApplicationCacheDAO } return Const.EMPTY_STRING; } + + @Override public int getApplicationIdByAddressId(int addressId) { + logger.info("get the application id with address id = {}", addressId); + H2Client client = getClient(); + String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_SQL, ApplicationTable.COLUMN_APPLICATION_ID, ApplicationTable.TABLE, ApplicationTable.COLUMN_ADDRESS_ID, ApplicationTable.COLUMN_IS_ADDRESS); + + Object[] params = new Object[] {addressId, true}; + try (ResultSet rs = client.executeQuery(sql, params)) { + if (rs.next()) { + return rs.getInt(1); + } + } catch (SQLException | H2ClientException e) { + logger.error(e.getMessage(), e); + } + return 0; + } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java index c8dbe95fd..ba2c1c445 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java @@ -16,18 +16,17 @@ * */ - package org.apache.skywalking.apm.collector.storage.h2.dao; import java.util.HashMap; import java.util.Map; import org.apache.skywalking.apm.collector.client.h2.H2Client; +import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.table.register.Application; import org.apache.skywalking.apm.collector.storage.table.register.ApplicationTable; -import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,6 +58,8 @@ public class ApplicationH2RegisterDAO extends H2DAO implements IApplicationRegis source.put(ApplicationTable.COLUMN_ID, application.getId()); source.put(ApplicationTable.COLUMN_APPLICATION_CODE, application.getApplicationCode()); source.put(ApplicationTable.COLUMN_APPLICATION_ID, application.getApplicationId()); + source.put(ApplicationTable.COLUMN_ADDRESS_ID, application.getAddressId()); + source.put(ApplicationTable.COLUMN_IS_ADDRESS, application.getIsAddress()); String sql = SqlBuilder.buildBatchInsertSql(ApplicationTable.TABLE, source.keySet()); Object[] params = source.values().toArray(new Object[0]); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java index dc7425a11..6348b50f1 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java @@ -16,7 +16,6 @@ * */ - package org.apache.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; @@ -38,14 +37,14 @@ public class InstanceH2CacheDAO extends H2DAO implements IInstanceCacheDAO { private final Logger logger = LoggerFactory.getLogger(InstanceH2CacheDAO.class); private static final String GET_APPLICATION_ID_SQL = "select {0} from {1} where {2} = ?"; - private static final String GET_INSTANCE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ?"; + private static final String GET_INSTANCE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ? and {4} = ?"; public InstanceH2CacheDAO(H2Client client) { super(client); } @Override public int getApplicationId(int instanceId) { - logger.info("get the application getId with application getId = {}", instanceId); + logger.info("get the application id by instance id = {}", instanceId); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_SQL, InstanceTable.COLUMN_APPLICATION_ID, InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID); Object[] params = new Object[] {instanceId}; @@ -59,12 +58,28 @@ public class InstanceH2CacheDAO extends H2DAO implements IInstanceCacheDAO { return 0; } - @Override public int getInstanceId(int applicationId, String agentUUID) { - logger.info("get the application getId with application getId = {}, agentUUID = {}", applicationId, agentUUID); + @Override public int getInstanceIdByAgentUUID(int applicationId, String agentUUID) { + logger.info("get the instance id by application id = {}, agentUUID = {}", applicationId, agentUUID); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_INSTANCE_ID_SQL, InstanceTable.COLUMN_INSTANCE_ID, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, - InstanceTable.COLUMN_AGENT_UUID); - Object[] params = new Object[] {applicationId, agentUUID}; + InstanceTable.COLUMN_AGENT_UUID, InstanceTable.COLUMN_IS_ADDRESS); + Object[] params = new Object[] {applicationId, agentUUID, false}; + try (ResultSet rs = client.executeQuery(sql, params)) { + if (rs.next()) { + return rs.getInt(InstanceTable.COLUMN_INSTANCE_ID); + } + } catch (SQLException | H2ClientException e) { + logger.error(e.getMessage(), e); + } + return 0; + } + + @Override public int getInstanceIdByAddressId(int applicationId, int addressId) { + logger.info("get the instance id by application id = {}, address id = {}", applicationId, addressId); + H2Client client = getClient(); + String sql = SqlBuilder.buildSql(GET_INSTANCE_ID_SQL, InstanceTable.COLUMN_INSTANCE_ID, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, + InstanceTable.COLUMN_AGENT_UUID, InstanceTable.COLUMN_IS_ADDRESS); + Object[] params = new Object[] {applicationId, addressId, true}; try (ResultSet rs = client.executeQuery(sql, params)) { if (rs.next()) { return rs.getInt(InstanceTable.COLUMN_INSTANCE_ID); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java index f446370c9..7912c343d 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java @@ -16,18 +16,17 @@ * */ - package org.apache.skywalking.apm.collector.storage.h2.dao; import java.util.HashMap; import java.util.Map; import org.apache.skywalking.apm.collector.client.h2.H2Client; +import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.apache.skywalking.apm.collector.storage.base.sql.SqlBuilder; import org.apache.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; import org.apache.skywalking.apm.collector.storage.h2.base.dao.H2DAO; import org.apache.skywalking.apm.collector.storage.table.register.Instance; import org.apache.skywalking.apm.collector.storage.table.register.InstanceTable; -import org.apache.skywalking.apm.collector.client.h2.H2ClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,7 +34,7 @@ import org.slf4j.LoggerFactory; * @author peng-yongsheng, clevertension */ public class InstanceH2RegisterDAO extends H2DAO implements IInstanceRegisterDAO { - + private final Logger logger = LoggerFactory.getLogger(InstanceH2RegisterDAO.class); public InstanceH2RegisterDAO(H2Client client) { @@ -62,6 +61,9 @@ public class InstanceH2RegisterDAO extends H2DAO implements IInstanceRegisterDAO source.put(InstanceTable.COLUMN_REGISTER_TIME, instance.getRegisterTime()); source.put(InstanceTable.COLUMN_HEARTBEAT_TIME, instance.getHeartBeatTime()); source.put(InstanceTable.COLUMN_OS_INFO, instance.getOsInfo()); + source.put(InstanceTable.COLUMN_ADDRESS_ID, instance.getAddressId()); + source.put(InstanceTable.COLUMN_IS_ADDRESS, instance.getIsAddress()); + String sql = SqlBuilder.buildBatchInsertSql(InstanceTable.TABLE, source.keySet()); Object[] params = source.values().toArray(new Object[0]); try { diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java index f7122d763..4b1630d92 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java @@ -16,11 +16,10 @@ * */ - package org.apache.skywalking.apm.collector.storage.h2.define; -import org.apache.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; import org.apache.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.apache.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; import org.apache.skywalking.apm.collector.storage.table.register.ApplicationTable; /** @@ -36,5 +35,7 @@ public class ApplicationH2TableDefine extends H2TableDefine { addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_APPLICATION_CODE, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_APPLICATION_ID, H2ColumnDefine.Type.Int.name())); + addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_ADDRESS_ID, H2ColumnDefine.Type.Int.name())); + addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_IS_ADDRESS, H2ColumnDefine.Type.Boolean.name())); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java index 7a7667c49..c9fbef734 100644 --- a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java @@ -16,12 +16,11 @@ * */ - package org.apache.skywalking.apm.collector.storage.h2.define; +import org.apache.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; import org.apache.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; import org.apache.skywalking.apm.collector.storage.table.register.InstanceTable; -import org.apache.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; /** * @author peng-yongsheng @@ -40,5 +39,7 @@ public class InstanceH2TableDefine extends H2TableDefine { addColumn(new H2ColumnDefine(InstanceTable.COLUMN_INSTANCE_ID, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(InstanceTable.COLUMN_HEARTBEAT_TIME, H2ColumnDefine.Type.Bigint.name())); addColumn(new H2ColumnDefine(InstanceTable.COLUMN_OS_INFO, H2ColumnDefine.Type.Varchar.name())); + addColumn(new H2ColumnDefine(InstanceTable.COLUMN_ADDRESS_ID, H2ColumnDefine.Type.Int.name())); + addColumn(new H2ColumnDefine(InstanceTable.COLUMN_IS_ADDRESS, H2ColumnDefine.Type.Boolean.name())); } } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java index f3606faa9..51ddcc6ce 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java @@ -52,7 +52,7 @@ public class ApplicationsGetHandler extends JettyHandler { String startTimeStr = req.getParameter("startTime"); String endTimeStr = req.getParameter("endTime"); - logger.debug("applications getApplicationId start time: {}, end time: {}", startTimeStr, endTimeStr); + logger.debug("applications getApplicationIdByCode start time: {}, end time: {}", startTimeStr, endTimeStr); long startTime; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java index ac2890645..008f4e143 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java @@ -50,7 +50,7 @@ public class InstanceHealthGetHandler extends JettyHandler { @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String timeBucketStr = req.getParameter("timeBucket"); String[] applicationIdsStr = req.getParameterValues("applicationIds"); - logger.debug("instance health getApplicationId timeBucket: {}, applicationIdsStr: {}", timeBucketStr, applicationIdsStr); + logger.debug("instance health getApplicationIdByCode timeBucket: {}, applicationIdsStr: {}", timeBucketStr, applicationIdsStr); long timeBucket; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java index e9b5667b7..15e73ce93 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java @@ -52,7 +52,7 @@ public class InstanceMetricGetOneTimeBucketHandler extends JettyHandler { String instanceIdStr = req.getParameter("instanceId"); String[] metricTypes = req.getParameterValues("metricTypes"); - logger.debug("instance jvm metric getApplicationId timeBucket: {}, instance id: {}, metric types: {}", timeBucketStr, instanceIdStr, metricTypes); + logger.debug("instance jvm metric getApplicationIdByCode timeBucket: {}, instance id: {}, metric types: {}", timeBucketStr, instanceIdStr, metricTypes); long timeBucket; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java index d3afa3585..a78c63dca 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java @@ -53,7 +53,7 @@ public class InstanceMetricGetRangeTimeBucketHandler extends JettyHandler { String instanceIdStr = req.getParameter("instanceId"); String[] metricTypes = req.getParameterValues("metricTypes"); - logger.debug("instance jvm metric getApplicationId start timeBucket: {}, end timeBucket:{} , instance id: {}, metric types: {}", startTimeBucketStr, endTimeBucketStr, instanceIdStr, metricTypes); + logger.debug("instance jvm metric getApplicationIdByCode start timeBucket: {}, end timeBucket:{} , instance id: {}, metric types: {}", startTimeBucketStr, endTimeBucketStr, instanceIdStr, metricTypes); long startTimeBucket; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java index f48611f35..3b035f8eb 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java @@ -47,7 +47,7 @@ public class InstanceOsInfoGetHandler extends JettyHandler { @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String instanceIdStr = req.getParameter("instanceId"); - logger.debug("instance os info getApplicationId, instance id: {}", instanceIdStr); + logger.debug("instance os info getApplicationIdByCode, instance id: {}", instanceIdStr); int instanceId; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java index 09530711e..9ffd535b8 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java @@ -58,7 +58,7 @@ public class EntryServiceGetHandler extends JettyHandler { String endTimeStr = req.getParameter("endTime"); String fromStr = req.getParameter("from"); String sizeStr = req.getParameter("size"); - logger.debug("service entry getApplicationId applicationId: {}, entryServiceName: {}, startTime: {}, endTime: {}, from: {}, size: {}", applicationIdStr, entryServiceName, startTimeStr, endTimeStr, fromStr, sizeStr); + logger.debug("service entry getApplicationIdByCode applicationId: {}, entryServiceName: {}, startTime: {}, endTime: {}, from: {}, size: {}", applicationIdStr, entryServiceName, startTimeStr, endTimeStr, fromStr, sizeStr); int applicationId; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java index c01119f1a..27ea8149f 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java @@ -53,7 +53,7 @@ public class ServiceTreeGetByIdHandler extends JettyHandler { String entryServiceIdStr = req.getParameter("entryServiceId"); String startTimeStr = req.getParameter("startTime"); String endTimeStr = req.getParameter("endTime"); - logger.debug("service entry getApplicationId entryServiceId: {}, startTime: {}, endTime: {}", entryServiceIdStr, startTimeStr, endTimeStr); + logger.debug("service entry getApplicationIdByCode entryServiceId: {}, startTime: {}, endTime: {}", entryServiceIdStr, startTimeStr, endTimeStr); int entryServiceId; try { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java index 1bb048725..1807fc321 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ApplicationService.java @@ -46,7 +46,7 @@ public class ApplicationService { applications.forEach(jsonElement -> { JsonObject application = jsonElement.getAsJsonObject(); int applicationId = application.get("applicationId").getAsInt(); - String applicationCode = applicationCacheService.get(applicationId); + String applicationCode = applicationCacheService.getApplicationCodeById(applicationId); application.addProperty("applicationCode", applicationCode); }); return applications; diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/InstanceHealthService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/InstanceHealthService.java index f67ac6ff5..65492c8b1 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/InstanceHealthService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/InstanceHealthService.java @@ -64,7 +64,7 @@ public class InstanceHealthService { response.add("instances", instances); instanceList.forEach(instance -> { - response.addProperty("applicationCode", applicationCacheService.get(applicationId)); + response.addProperty("applicationCode", applicationCacheService.getApplicationCodeById(applicationId)); response.addProperty("applicationId", applicationId); IInstanceMetricUIDAO.InstanceMetric performance = instanceMetricUIDAO.get(timeBuckets, instance.getInstanceId()); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTreeService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTreeService.java index b31f7a0ad..55a4eee6e 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTreeService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/ServiceTreeService.java @@ -61,7 +61,7 @@ public class ServiceTreeService { for (JsonElement element : entryServices) { JsonObject entryService = element.getAsJsonObject(); int respApplication = entryService.get(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_APPLICATION_ID)).getAsInt(); - String applicationCode = applicationCacheService.get(respApplication); + String applicationCode = applicationCacheService.getApplicationCodeById(respApplication); entryService.addProperty("applicationCode", applicationCode); } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SpanService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SpanService.java index 64180a74f..0e902fe34 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SpanService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/SpanService.java @@ -108,7 +108,7 @@ public class SpanService { if (spanObject.getPeerId() == 0) { peerJson.addProperty("value", spanObject.getPeer()); } else { - peerJson.addProperty("value", applicationCacheService.get(spanObject.getPeerId())); + peerJson.addProperty("value", applicationCacheService.getApplicationCodeById(spanObject.getPeerId())); } tagsArray.add(peerJson); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java index b94e00279..297c43573 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java @@ -108,9 +108,9 @@ public class TraceDagDataBuilder { for (int i = 0; i < nodesMappingArray.size(); i++) { JsonObject nodesMappingJsonObj = nodesMappingArray.get(i).getAsJsonObject(); int applicationId = nodesMappingJsonObj.get(ApplicationMappingTable.COLUMN_APPLICATION_ID).getAsInt(); - String applicationCode = applicationCacheService.get(applicationId); + String applicationCode = applicationCacheService.getApplicationCodeById(applicationId); int addressId = nodesMappingJsonObj.get(ApplicationMappingTable.COLUMN_ADDRESS_ID).getAsInt(); - String address = applicationCacheService.get(addressId); + String address = applicationCacheService.getApplicationCodeById(addressId); mappingMap.put(address, applicationCode); } } @@ -122,7 +122,7 @@ public class TraceDagDataBuilder { int componentId = nodesJsonObj.get(ApplicationComponentTable.COLUMN_COMPONENT_ID).getAsInt(); String componentName = ComponentsDefine.getInstance().getComponentName(componentId); int peerId = nodesJsonObj.get(ApplicationComponentTable.COLUMN_PEER_ID).getAsInt(); - String peer = applicationCacheService.get(peerId); + String peer = applicationCacheService.getApplicationCodeById(peerId); nodeCompMap.put(peer, componentName); } } @@ -139,8 +139,8 @@ public class TraceDagDataBuilder { int frontApplicationId = nodeRefJsonObj.get(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_FRONT_APPLICATION_ID)).getAsInt(); int behindApplicationId = nodeRefJsonObj.get(ColumnNameUtils.INSTANCE.rename(ApplicationReferenceMetricTable.COLUMN_BEHIND_APPLICATION_ID)).getAsInt(); - String front = applicationCacheService.get(frontApplicationId); - String behind = applicationCacheService.get(behindApplicationId); + String front = applicationCacheService.getApplicationCodeById(frontApplicationId); + String behind = applicationCacheService.getApplicationCodeById(behindApplicationId); String id = front + Const.ID_SPLIT + behind; nodeRefJsonObj.addProperty("front", front); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceStackService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceStackService.java index 705811806..16da98b37 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceStackService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/service/TraceStackService.java @@ -134,7 +134,7 @@ public class TraceStackService { operationName = Const.EMPTY_STRING; } } - String applicationCode = applicationCacheService.get(segment.getApplicationId()); + String applicationCode = applicationCacheService.getApplicationCodeById(segment.getApplicationId()); long cost = spanObject.getEndTime() - spanObject.getStartTime(); if (cost == 0) { @@ -149,9 +149,9 @@ public class TraceStackService { // StringBuilder segmentIdBuilder = new StringBuilder(); // for (int i = 0; i < uniqueId.getIdPartsList().size(); i++) { // if (i == 0) { -// segmentIdBuilder.append(String.valueOf(uniqueId.getIdPartsList().getApplicationId(i))); +// segmentIdBuilder.append(String.valueOf(uniqueId.getIdPartsList().getApplicationIdByCode(i))); // } else { -// segmentIdBuilder.append(".").append(String.valueOf(uniqueId.getIdPartsList().getApplicationId(i))); +// segmentIdBuilder.append(".").append(String.valueOf(uniqueId.getIdPartsList().getApplicationIdByCode(i))); // } // } //