diff --git a/README.md b/README.md
index 625d210bc..31e607ea9 100644
--- a/README.md
+++ b/README.md
@@ -6,13 +6,13 @@ Sky Walking | [中文](README_ZH.md)
**SkyWalking 3**: APM for Distributed Systems, also known Distributed Tracing System.
[](https://travis-ci.org/OpenSkywalking/skywalking)
-[](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master)
+[](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master)
[](https://gitter.im/openskywalking/Lobby)
[](http://opentracing.io)
* Provide Java agent, **no need to CHANGE any application source code**.
- * High performance agent. Only increase extra **10%** cpu cost in 5000+ tps application, even **When collect all traces**, [check test reports](#test-reports).
- * [Supported middlewares, frameworks and libraries](https://github.com/OpenSkywalking/sky-walking/wiki/3.2-supported-list).
+ * High performance agent. Only increase extra **10%** cpu cost in 5000+ tps application, even **when collect all traces**.
+ * [Supported middlewares, frameworks and libraries](docs/Supported-list.md).
* Manual instrumentation
* As an [OpenTracing supported tracer](http://opentracing.io/documentation/pages/supported-tracers)
* Use **@Trace** annotation for any methods you want to trace.
@@ -21,11 +21,11 @@ Sky Walking | [中文](README_ZH.md)
* The UI released on [skywalking-ui](https://github.com/OpenSkywalking/sky-walking-ui)
# Architecture
-* Architecture graph for 3.2+
-
+* Architecture graph for 3.2.5+
+
# Document
-* [WIKI](https://github.com/OpenSkywalking/skywalking/wiki)
+[](docs/README.md) [](docs/README_ZH.md)
This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to wu.sheng@foxmail.com.
diff --git a/README_ZH.md b/README_ZH.md
index 32374fd75..f5b9c8c25 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -6,17 +6,17 @@ Sky Walking | [English](README.md)
**SkyWalking 3**: 针对分布式系统的APM系统,也被称为分布式追踪系统
[](https://travis-ci.org/OpenSkywalking/skywalking)
-[](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master)
+[](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master)
[](https://gitter.im/openskywalking/Lobby)
[](http://opentracing.io)
* Java自动探针,**不需要修改应用程序源代码**
* 高性能探针,针对单实例5000tps的应用,在**全量采集的情况下**,只增加**10%**的CPU开销。
- * [中间件,框架与类库支持列表](https://github.com/wu-sheng/sky-walking/wiki/3.2-supported-list).
+ * [中间件,框架与类库支持列表](docs/Supported-list.md).
* 手动探针
* [使用OpenTracing手动探针API](http://opentracing.io/documentation/pages/supported-tracers)
- * 使用 [**@Trace**](https://github.com/wu-sheng/OpenSkywalking/wiki/sky-walking-application-toolkit-trace-chn) 标注追踪业务方法
+ * 使用 [**@Trace**](docs/cn/Application-toolkit-trace-CN.md) 标注追踪业务方法
* 将 traceId 集成到 log4j, log4j2 或 logback这些日志组件中
* 纯Java后端Collector实现,提供RESTful和gRPC接口。兼容接受其他语言探针发送数据
* [如何将探针的Metric和Trace数据上传到Collector?]()
@@ -24,11 +24,11 @@ Sky Walking | [English](README.md)
* 中文QQ群:392443393
# Architecture
-* 3.2+版本架构图
-
+* 3.2.5+版本架构图
+
# Document
-* [WIKI](https://github.com/OpenSkywalking/skywalking/wiki)
+[](docs/README.md) [](docs/README_ZH.md)
This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to wu.sheng@foxmail.com.
@@ -60,7 +60,7 @@ This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDU
# Contact Us
* 直接提交Issue
-* [Gitter](https://gitter.im/sky-walking/Lobby)
+* [Gitter](https://gitter.im/openskywalking/Lobby)
* [Google Mailing List](https://groups.google.com/forum/#!forum/skywalking-distributed-tracing-and-apm)
* QQ群: 392443393
diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/logback.xml b/apm-collector/apm-collector-agent/collector-agent-define/pom.xml
similarity index 57%
rename from apm-collector/apm-collector-agentstream/src/test/resources/logback.xml
rename to apm-collector/apm-collector-agent/collector-agent-define/pom.xml
index 9fc407992..21b3a90fd 100644
--- a/apm-collector/apm-collector-agentstream/src/test/resources/logback.xml
+++ b/apm-collector/apm-collector-agent/collector-agent-define/pom.xml
@@ -17,18 +17,17 @@
~ Project repository: https://github.com/OpenSkywalking/skywalking
-->
-
-
-
- %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
-
-
+
+
+ apm-collector-agent
+ org.skywalking
+ 3.2.4-2017
+
+ 4.0.0
-
-
-
+ collector-agent-define
+ jar
-
-
-
-
\ No newline at end of file
+
diff --git a/apm-collector/apm-collector-agent/collector-agent-define/src/main/java/org/skywalking/apm/collector/agent/AgentModule.java b/apm-collector/apm-collector-agent/collector-agent-define/src/main/java/org/skywalking/apm/collector/agent/AgentModule.java
new file mode 100644
index 000000000..202a5554b
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-define/src/main/java/org/skywalking/apm/collector/agent/AgentModule.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent;
+
+import org.skywalking.apm.collector.core.module.Module;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AgentModule extends Module {
+
+ public static final String NAME = "agent";
+
+ @Override public String name() {
+ return NAME;
+ }
+
+ @Override public Class[] services() {
+ return new Class[0];
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-agent/collector-agent-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module
new file mode 100644
index 000000000..53a054ae3
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module
@@ -0,0 +1,19 @@
+#
+# Copyright 2017, OpenSkywalking Organization All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Project repository: https://github.com/OpenSkywalking/skywalking
+#
+
+org.skywalking.apm.collector.agent.AgentModule
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/pom.xml b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/pom.xml
similarity index 77%
rename from apm-collector/apm-collector-agentjvm/pom.xml
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/pom.xml
index f459349f9..e8cc6071b 100644
--- a/apm-collector/apm-collector-agentjvm/pom.xml
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/pom.xml
@@ -21,34 +21,29 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- apm-collector
+ apm-collector-agent
org.skywalking
3.2.4-2017
4.0.0
- apm-collector-agentjvm
+ collector-agent-grpc-provider
jar
org.skywalking
- apm-collector-stream
+ collector-agent-define
${project.version}
org.skywalking
- apm-collector-cluster
+ collector-agent-stream
${project.version}
org.skywalking
- apm-collector-server
- ${project.version}
-
-
- org.skywalking
- apm-collector-storage
+ collector-grpc-manager-define
${project.version}
diff --git a/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCProvider.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCProvider.java
new file mode 100644
index 000000000..863016d12
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCProvider.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.grpc;
+
+import java.util.Properties;
+import org.skywalking.apm.collector.agent.AgentModule;
+import org.skywalking.apm.collector.agent.grpc.handler.ApplicationRegisterServiceHandler;
+import org.skywalking.apm.collector.agent.grpc.handler.InstanceDiscoveryServiceHandler;
+import org.skywalking.apm.collector.agent.grpc.handler.JVMMetricsServiceHandler;
+import org.skywalking.apm.collector.agent.grpc.handler.ServiceNameDiscoveryServiceHandler;
+import org.skywalking.apm.collector.agent.grpc.handler.TraceSegmentServiceHandler;
+import org.skywalking.apm.collector.agent.grpc.handler.naming.AgentGRPCNamingHandler;
+import org.skywalking.apm.collector.agent.grpc.handler.naming.AgentGRPCNamingListener;
+import org.skywalking.apm.collector.agent.stream.AgentStreamSingleton;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cluster.ClusterModule;
+import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
+import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
+import org.skywalking.apm.collector.core.module.Module;
+import org.skywalking.apm.collector.core.module.ModuleProvider;
+import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
+import org.skywalking.apm.collector.grpc.manager.GRPCManagerModule;
+import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerService;
+import org.skywalking.apm.collector.naming.NamingModule;
+import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
+import org.skywalking.apm.collector.remote.RemoteModule;
+import org.skywalking.apm.collector.server.Server;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.stream.StreamModule;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AgentModuleGRPCProvider extends ModuleProvider {
+
+ public static final String NAME = "gRPC";
+ private static final String HOST = "host";
+ private static final String PORT = "port";
+
+ @Override public String name() {
+ return NAME;
+ }
+
+ @Override public Class extends Module> module() {
+ return AgentModule.class;
+ }
+
+ @Override public void prepare(Properties config) throws ServiceNotProvidedException {
+
+ }
+
+ @Override public void start(Properties config) throws ServiceNotProvidedException {
+ String host = config.getProperty(HOST);
+ Integer port = (Integer)config.get(PORT);
+
+ ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class);
+ moduleRegisterService.register(AgentModule.NAME, this.name(), new AgentModuleGRPCRegistration(host, port));
+
+ AgentGRPCNamingListener namingListener = new AgentGRPCNamingListener();
+ ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class);
+ moduleListenerService.addListener(namingListener);
+
+ NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class);
+ namingHandlerRegisterService.register(new AgentGRPCNamingHandler(namingListener));
+
+ GRPCManagerService managerService = getManager().find(GRPCManagerModule.NAME).getService(GRPCManagerService.class);
+ Server gRPCServer = managerService.createIfAbsent(host, port);
+
+ AgentStreamSingleton.createInstanceIfAbsent(getManager());
+ addHandlers(gRPCServer);
+ }
+
+ @Override public void notifyAfterCompleted() throws ServiceNotProvidedException {
+
+ }
+
+ @Override public String[] requiredModules() {
+ return new String[] {ClusterModule.NAME, NamingModule.NAME, StorageModule.NAME, GRPCManagerModule.NAME, CacheModule.NAME, RemoteModule.NAME, StreamModule.NAME};
+ }
+
+ private void addHandlers(Server gRPCServer) {
+ gRPCServer.addHandler(new ApplicationRegisterServiceHandler(getManager()));
+ gRPCServer.addHandler(new InstanceDiscoveryServiceHandler(getManager()));
+ gRPCServer.addHandler(new ServiceNameDiscoveryServiceHandler(getManager()));
+ gRPCServer.addHandler(new JVMMetricsServiceHandler());
+ gRPCServer.addHandler(new TraceSegmentServiceHandler(getManager()));
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyModuleRegistration.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCRegistration.java
similarity index 62%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyModuleRegistration.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCRegistration.java
index ea69f2ea7..b6cd573d8 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyModuleRegistration.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/AgentModuleGRPCRegistration.java
@@ -16,16 +16,25 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty;
+package org.skywalking.apm.collector.agent.grpc;
-import org.skywalking.apm.collector.core.module.ModuleRegistration;
+import org.skywalking.apm.collector.cluster.ModuleRegistration;
+import org.skywalking.apm.collector.core.util.Const;
/**
* @author peng-yongsheng
*/
-public class AgentStreamJettyModuleRegistration extends ModuleRegistration {
+public class AgentModuleGRPCRegistration extends ModuleRegistration {
+
+ private final String host;
+ private final int port;
+
+ public AgentModuleGRPCRegistration(String host, int port) {
+ this.host = host;
+ this.port = port;
+ }
@Override public Value buildValue() {
- return new Value(AgentStreamJettyConfig.HOST, AgentStreamJettyConfig.PORT, AgentStreamJettyConfig.CONTEXT_PATH);
+ return new Value(host, port, Const.EMPTY_STRING);
}
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandler.java
similarity index 72%
rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandler.java
index c0fc2fb4d..d6f6649a8 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandler.java
@@ -16,11 +16,14 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentregister.grpc.handler;
+package org.skywalking.apm.collector.agent.grpc.handler;
import com.google.protobuf.ProtocolStringList;
import io.grpc.stub.StreamObserver;
-import org.skywalking.apm.collector.agentregister.application.ApplicationIDService;
+import org.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
+import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
import org.skywalking.apm.collector.server.grpc.GRPCHandler;
import org.skywalking.apm.network.proto.Application;
import org.skywalking.apm.network.proto.ApplicationMapping;
@@ -36,7 +39,11 @@ public class ApplicationRegisterServiceHandler extends ApplicationRegisterServic
private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterServiceHandler.class);
- private ApplicationIDService applicationIDService = new ApplicationIDService();
+ private final ApplicationIDService applicationIDService;
+
+ public ApplicationRegisterServiceHandler(ModuleManager moduleManager) {
+ applicationIDService = new ApplicationIDService(moduleManager);
+ }
@Override public void register(Application request, StreamObserver responseObserver) {
logger.debug("register application");
@@ -45,7 +52,12 @@ public class ApplicationRegisterServiceHandler extends ApplicationRegisterServic
ApplicationMapping.Builder builder = ApplicationMapping.newBuilder();
for (int i = 0; i < applicationCodes.size(); i++) {
String applicationCode = applicationCodes.get(i);
- int applicationId = applicationIDService.getOrCreate(applicationCode);
+ int applicationId = 0;
+ try {
+ applicationId = applicationIDService.getOrCreate(applicationCode);
+ } catch (ModuleNotFoundException | ServiceNotProvidedException e) {
+ logger.error(e.getMessage(), e);
+ }
if (applicationId != 0) {
KeyWithIntegerValue value = KeyWithIntegerValue.newBuilder().setKey(applicationCode).setValue(applicationId).build();
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/InstanceDiscoveryServiceHandler.java
similarity index 72%
rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/InstanceDiscoveryServiceHandler.java
index ed5922657..449afddd3 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/InstanceDiscoveryServiceHandler.java
@@ -16,12 +16,15 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentregister.grpc.handler;
+package org.skywalking.apm.collector.agent.grpc.handler;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import io.grpc.stub.StreamObserver;
-import org.skywalking.apm.collector.agentregister.instance.InstanceIDService;
+import org.skywalking.apm.collector.agent.stream.worker.register.InstanceIDService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
+import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
import org.skywalking.apm.collector.server.grpc.GRPCHandler;
import org.skywalking.apm.network.proto.ApplicationInstance;
@@ -40,12 +43,21 @@ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrp
private final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServiceHandler.class);
- private InstanceIDService instanceIDService = new InstanceIDService();
+ private final InstanceIDService instanceIDService;
+
+ public InstanceDiscoveryServiceHandler(ModuleManager moduleManager) {
+ this.instanceIDService = new InstanceIDService(moduleManager);
+ }
@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 = 0;
+ try {
+ instanceId = instanceIDService.getOrCreate(request.getApplicationId(), request.getAgentUUID(), timeBucket, buildOsInfo(request.getOsinfo()));
+ } catch (ModuleNotFoundException | ServiceNotProvidedException e) {
+ logger.error(e.getMessage(), e);
+ }
ApplicationInstanceMapping.Builder builder = ApplicationInstanceMapping.newBuilder();
builder.setApplicationId(request.getApplicationId());
builder.setApplicationInstanceId(instanceId);
@@ -56,7 +68,11 @@ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrp
@Override
public void registerRecover(ApplicationInstanceRecover request, StreamObserver responseObserver) {
long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(request.getRegisterTime());
- instanceIDService.recover(request.getApplicationInstanceId(), request.getApplicationId(), timeBucket, buildOsInfo(request.getOsinfo()));
+ try {
+ instanceIDService.recover(request.getApplicationInstanceId(), request.getApplicationId(), timeBucket, buildOsInfo(request.getOsinfo()));
+ } catch (ModuleNotFoundException | ServiceNotProvidedException e) {
+ logger.error(e.getMessage(), e);
+ }
responseObserver.onNext(Downstream.newBuilder().build());
responseObserver.onCompleted();
}
@@ -68,9 +84,9 @@ public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrp
osInfoJson.addProperty("processId", osinfo.getProcessNo());
JsonArray ipv4Array = new JsonArray();
- osinfo.getIpv4SList().forEach(ipv4 -> {
+ for (String ipv4 : osinfo.getIpv4SList()) {
ipv4Array.add(ipv4);
- });
+ }
osInfoJson.add("ipv4s", ipv4Array);
return osInfoJson.toString();
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/JVMMetricsServiceHandler.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/JVMMetricsServiceHandler.java
new file mode 100644
index 000000000..e1d86f431
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/JVMMetricsServiceHandler.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import java.util.List;
+import org.skywalking.apm.collector.agent.stream.graph.JvmMetricStreamGraph;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.TimeBucketUtils;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.collector.storage.table.jvm.CpuMetric;
+import org.skywalking.apm.collector.storage.table.jvm.GCMetric;
+import org.skywalking.apm.collector.storage.table.jvm.MemoryMetric;
+import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetric;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.skywalking.apm.network.proto.CPU;
+import org.skywalking.apm.network.proto.Downstream;
+import org.skywalking.apm.network.proto.GC;
+import org.skywalking.apm.network.proto.JVMMetrics;
+import org.skywalking.apm.network.proto.JVMMetricsServiceGrpc;
+import org.skywalking.apm.network.proto.Memory;
+import org.skywalking.apm.network.proto.MemoryPool;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler {
+
+ private final Logger logger = LoggerFactory.getLogger(JVMMetricsServiceHandler.class);
+
+ private final Graph memoryMetricGraph;
+ private final Graph memoryPoolMetricGraph;
+ private final Graph gcMetricGraph;
+ private final Graph cpuMetricGraph;
+ private final Graph heartBeatGraph;
+
+ public JVMMetricsServiceHandler() {
+ memoryMetricGraph = GraphManager.INSTANCE.createIfAbsent(JvmMetricStreamGraph.MEMORY_METRIC_GRAPH_ID, MemoryMetric.class);
+ memoryPoolMetricGraph = GraphManager.INSTANCE.createIfAbsent(JvmMetricStreamGraph.MEMORY_POOL_METRIC_GRAPH_ID, MemoryPoolMetric.class);
+ gcMetricGraph = GraphManager.INSTANCE.createIfAbsent(JvmMetricStreamGraph.GC_METRIC_GRAPH_ID, GCMetric.class);
+ cpuMetricGraph = GraphManager.INSTANCE.createIfAbsent(JvmMetricStreamGraph.CPU_METRIC_GRAPH_ID, CpuMetric.class);
+ heartBeatGraph = GraphManager.INSTANCE.createIfAbsent(JvmMetricStreamGraph.INST_HEART_BEAT_GRAPH_ID, Instance.class);
+ }
+
+ @Override public void collect(JVMMetrics request, StreamObserver responseObserver) {
+ int instanceId = request.getApplicationInstanceId();
+ logger.debug("receive the jvm metric from application instance, id: {}", instanceId);
+
+ request.getMetricsList().forEach(metric -> {
+ long time = TimeBucketUtils.INSTANCE.getSecondTimeBucket(metric.getTime());
+ sendToInstanceHeartBeatPersistenceWorker(instanceId, metric.getTime());
+ sendToCpuMetricPersistenceWorker(instanceId, time, metric.getCpu());
+ sendToMemoryMetricPersistenceWorker(instanceId, time, metric.getMemoryList());
+ sendToMemoryPoolMetricPersistenceWorker(instanceId, time, metric.getMemoryPoolList());
+ sendToGCMetricPersistenceWorker(instanceId, time, metric.getGcList());
+ });
+
+ responseObserver.onNext(Downstream.newBuilder().build());
+ responseObserver.onCompleted();
+ }
+
+ private void sendToInstanceHeartBeatPersistenceWorker(int instanceId, long heartBeatTime) {
+ Instance instance = new Instance(String.valueOf(instanceId));
+ instance.setHeartBeatTime(TimeBucketUtils.INSTANCE.getSecondTimeBucket(heartBeatTime));
+ instance.setInstanceId(instanceId);
+
+ logger.debug("send to instance heart beat persistence worker, id: {}", instance.getId());
+ heartBeatGraph.start(instance);
+ }
+
+ private void sendToCpuMetricPersistenceWorker(int instanceId, long timeBucket, CPU cpu) {
+ CpuMetric cpuMetric = new CpuMetric(timeBucket + Const.ID_SPLIT + instanceId);
+ cpuMetric.setInstanceId(instanceId);
+ cpuMetric.setUsagePercent(cpu.getUsagePercent());
+ cpuMetric.setTimeBucket(timeBucket);
+
+ logger.debug("send to cpu metric graph, id: {}", cpuMetric.getId());
+ cpuMetricGraph.start(cpuMetric);
+ }
+
+ private void sendToMemoryMetricPersistenceWorker(int instanceId, long timeBucket, List memories) {
+ memories.forEach(memory -> {
+ MemoryMetric memoryMetric = new MemoryMetric(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(memory.getIsHeap()));
+ memoryMetric.setInstanceId(instanceId);
+ memoryMetric.setIsHeap(memory.getIsHeap());
+ memoryMetric.setInit(memory.getInit());
+ memoryMetric.setMax(memory.getMax());
+ memoryMetric.setUsed(memory.getUsed());
+ memoryMetric.setCommitted(memory.getCommitted());
+ memoryMetric.setTimeBucket(timeBucket);
+
+ logger.debug("send to memory metric graph, id: {}", memoryMetric.getId());
+ memoryMetricGraph.start(memoryMetric);
+ });
+ }
+
+ private void sendToMemoryPoolMetricPersistenceWorker(int instanceId, long timeBucket,
+ List memoryPools) {
+
+ memoryPools.forEach(memoryPool -> {
+ MemoryPoolMetric memoryPoolMetric = new MemoryPoolMetric(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(memoryPool.getType().getNumber()));
+ memoryPoolMetric.setInstanceId(instanceId);
+ memoryPoolMetric.setPoolType(memoryPool.getType().getNumber());
+ memoryPoolMetric.setInit(memoryPool.getInit());
+ memoryPoolMetric.setMax(memoryPool.getMax());
+ memoryPoolMetric.setUsed(memoryPool.getUsed());
+ memoryPoolMetric.setCommitted(memoryPool.getCommited());
+ memoryPoolMetric.setTimeBucket(timeBucket);
+
+ logger.debug("send to memory pool metric graph, id: {}", memoryPoolMetric.getId());
+ memoryPoolMetricGraph.start(memoryPoolMetric);
+ });
+ }
+
+ private void sendToGCMetricPersistenceWorker(int instanceId, long timeBucket, List gcs) {
+ gcs.forEach(gc -> {
+ GCMetric gcMetric = new GCMetric(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(gc.getPhraseValue()));
+ gcMetric.setInstanceId(instanceId);
+ gcMetric.setPhrase(gc.getPhraseValue());
+ gcMetric.setCount(gc.getCount());
+ gcMetric.setTime(gc.getTime());
+ gcMetric.setTimeBucket(timeBucket);
+
+ logger.debug("send to gc metric graph, id: {}", gcMetric.getId());
+ gcMetricGraph.start(gcMetric);
+ });
+ }
+}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ServiceNameDiscoveryServiceHandler.java
similarity index 86%
rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ServiceNameDiscoveryServiceHandler.java
index 5b77ee4b1..4b84db6c3 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/ServiceNameDiscoveryServiceHandler.java
@@ -16,11 +16,12 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentregister.grpc.handler;
+package org.skywalking.apm.collector.agent.grpc.handler;
import io.grpc.stub.StreamObserver;
import java.util.List;
-import org.skywalking.apm.collector.agentregister.servicename.ServiceNameService;
+import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
import org.skywalking.apm.collector.server.grpc.GRPCHandler;
import org.skywalking.apm.network.proto.ServiceNameCollection;
import org.skywalking.apm.network.proto.ServiceNameDiscoveryServiceGrpc;
@@ -37,7 +38,11 @@ public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServ
private final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryServiceHandler.class);
- private ServiceNameService serviceNameService = new ServiceNameService();
+ private final ServiceNameService serviceNameService;
+
+ public ServiceNameDiscoveryServiceHandler(ModuleManager moduleManager) {
+ this.serviceNameService = new ServiceNameService(moduleManager);
+ }
@Override public void discovery(ServiceNameCollection request,
StreamObserver responseObserver) {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/TraceSegmentServiceHandler.java
similarity index 82%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/TraceSegmentServiceHandler.java
index b7382c585..4c6b80a6b 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/TraceSegmentServiceHandler.java
@@ -16,10 +16,11 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.grpc.handler;
+package org.skywalking.apm.collector.agent.grpc.handler;
import io.grpc.stub.StreamObserver;
-import org.skywalking.apm.collector.agentstream.worker.segment.SegmentParse;
+import org.skywalking.apm.collector.agent.stream.parser.SegmentParse;
+import org.skywalking.apm.collector.core.module.ModuleManager;
import org.skywalking.apm.collector.server.grpc.GRPCHandler;
import org.skywalking.apm.network.proto.Downstream;
import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc;
@@ -34,11 +35,17 @@ public class TraceSegmentServiceHandler extends TraceSegmentServiceGrpc.TraceSeg
private final Logger logger = LoggerFactory.getLogger(TraceSegmentServiceHandler.class);
+ private final ModuleManager moduleManager;
+
+ public TraceSegmentServiceHandler(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ }
+
@Override public StreamObserver collect(StreamObserver responseObserver) {
return new StreamObserver() {
@Override public void onNext(UpstreamSegment segment) {
logger.debug("receive segment");
- SegmentParse segmentParse = new SegmentParse();
+ SegmentParse segmentParse = new SegmentParse(moduleManager);
segmentParse.parse(segment, SegmentParse.Source.Agent);
}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingHandler.java
similarity index 72%
rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingHandler.java
index 2ebdadb72..dda852e44 100644
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingHandler.java
@@ -16,30 +16,33 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentserver.jetty.handler;
+package org.skywalking.apm.collector.agent.grpc.handler.naming;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.agentstream.grpc.AgentStreamGRPCDataListener;
-import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
/**
* @author peng-yongsheng
*/
-public class AgentStreamGRPCServerHandler extends JettyHandler {
+public class AgentGRPCNamingHandler extends JettyHandler {
+
+ private final AgentGRPCNamingListener namingListener;
+
+ public AgentGRPCNamingHandler(AgentGRPCNamingListener namingListener) {
+ this.namingListener = namingListener;
+ }
@Override public String pathSpec() {
+// return "/agent/gRPC";
return "/agentstream/grpc";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
- ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
- Set servers = reader.read(AgentStreamGRPCDataListener.PATH);
+ Set servers = namingListener.getAddresses();
JsonArray serverArray = new JsonArray();
servers.forEach(serverArray::add);
return serverArray;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingListener.java
similarity index 67%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingListener.java
index c3fca9702..b75a32d33 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/java/org/skywalking/apm/collector/agent/grpc/handler/naming/AgentGRPCNamingListener.java
@@ -16,18 +16,18 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui.jetty;
+package org.skywalking.apm.collector.agent.grpc.handler.naming;
-import org.skywalking.apm.collector.cluster.ClusterModuleDefine;
-import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
-import org.skywalking.apm.collector.ui.UIModuleGroupDefine;
+import org.skywalking.apm.collector.agent.AgentModule;
+import org.skywalking.apm.collector.agent.grpc.AgentModuleGRPCProvider;
+import org.skywalking.apm.collector.cluster.ClusterModuleListener;
/**
* @author peng-yongsheng
*/
-public class UIJettyDataListener extends ClusterDataListener {
+public class AgentGRPCNamingListener extends ClusterModuleListener {
- public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + UIModuleGroupDefine.GROUP_NAME + "." + UIJettyModuleDefine.MODULE_NAME;
+ public static final String PATH = "/" + AgentModule.NAME + "/" + AgentModuleGRPCProvider.NAME;
@Override public String path() {
return PATH;
@@ -38,5 +38,6 @@ public class UIJettyDataListener extends ClusterDataListener {
}
@Override public void serverQuitNotify(String serverAddress) {
+
}
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider
new file mode 100644
index 000000000..45eb31cb2
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider
@@ -0,0 +1,19 @@
+#
+# Copyright 2017, OpenSkywalking Organization All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Project repository: https://github.com/OpenSkywalking/skywalking
+#
+
+org.skywalking.apm.collector.agent.grpc.AgentModuleGRPCProvider
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/test/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandlerTestCase.java b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/test/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandlerTestCase.java
similarity index 96%
rename from apm-collector/apm-collector-agentregister/src/test/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandlerTestCase.java
rename to apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/test/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandlerTestCase.java
index 60998263d..1693fa0c5 100644
--- a/apm-collector/apm-collector-agentregister/src/test/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandlerTestCase.java
+++ b/apm-collector/apm-collector-agent/collector-agent-grpc-provider/src/test/java/org/skywalking/apm/collector/agent/grpc/handler/ApplicationRegisterServiceHandlerTestCase.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentregister.grpc.handler;
+package org.skywalking.apm.collector.agent.grpc.handler;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
diff --git a/apm-collector/apm-collector-agentregister/pom.xml b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/pom.xml
similarity index 71%
rename from apm-collector/apm-collector-agentregister/pom.xml
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/pom.xml
index b87ca9e1c..9406a78be 100644
--- a/apm-collector/apm-collector-agentregister/pom.xml
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/pom.xml
@@ -21,39 +21,29 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- apm-collector
+ apm-collector-agent
org.skywalking
3.2.4-2017
4.0.0
- apm-collector-agentregister
+ collector-agent-jetty-provider
jar
org.skywalking
- apm-collector-stream
+ collector-agent-define
${project.version}
org.skywalking
- apm-collector-cluster
+ collector-agent-stream
${project.version}
org.skywalking
- apm-collector-server
- ${project.version}
-
-
- org.skywalking
- apm-network
- ${project.version}
-
-
- org.skywalking
- apm-collector-cache
+ collector-jetty-manager-define
${project.version}
diff --git a/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/AgentModuleJettyProvider.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/AgentModuleJettyProvider.java
new file mode 100644
index 000000000..68ac58805
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/AgentModuleJettyProvider.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.jetty;
+
+import java.util.Properties;
+import org.skywalking.apm.collector.agent.AgentModule;
+import org.skywalking.apm.collector.agent.jetty.handler.TraceSegmentServletHandler;
+import org.skywalking.apm.collector.agent.jetty.handler.naming.AgentJettyNamingHandler;
+import org.skywalking.apm.collector.agent.jetty.handler.naming.AgentJettyNamingListener;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cluster.ClusterModule;
+import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
+import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
+import org.skywalking.apm.collector.core.module.Module;
+import org.skywalking.apm.collector.core.module.ModuleProvider;
+import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
+import org.skywalking.apm.collector.jetty.manager.JettyManagerModule;
+import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService;
+import org.skywalking.apm.collector.naming.NamingModule;
+import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
+import org.skywalking.apm.collector.server.Server;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.stream.StreamModule;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AgentModuleJettyProvider extends ModuleProvider {
+
+ public static final String NAME = "jetty";
+ private static final String HOST = "host";
+ private static final String PORT = "port";
+ private static final String CONTEXT_PATH = "context_path";
+
+ @Override public String name() {
+ return NAME;
+ }
+
+ @Override public Class extends Module> module() {
+ return AgentModule.class;
+ }
+
+ @Override public void prepare(Properties config) throws ServiceNotProvidedException {
+
+ }
+
+ @Override public void start(Properties config) throws ServiceNotProvidedException {
+ String host = config.getProperty(HOST);
+ Integer port = (Integer)config.get(PORT);
+ String contextPath = config.getProperty(CONTEXT_PATH);
+
+ ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class);
+ moduleRegisterService.register(AgentModule.NAME, this.name(), new AgentModuleJettyRegistration(host, port, contextPath));
+
+ AgentJettyNamingListener namingListener = new AgentJettyNamingListener();
+ ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class);
+ moduleListenerService.addListener(namingListener);
+
+ NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class);
+ namingHandlerRegisterService.register(new AgentJettyNamingHandler(namingListener));
+
+ JettyManagerService managerService = getManager().find(JettyManagerModule.NAME).getService(JettyManagerService.class);
+ Server jettyServer = managerService.createIfAbsent(host, port, contextPath);
+ addHandlers(jettyServer);
+ }
+
+ @Override public void notifyAfterCompleted() throws ServiceNotProvidedException {
+
+ }
+
+ @Override public String[] requiredModules() {
+ return new String[] {ClusterModule.NAME, NamingModule.NAME, StorageModule.NAME, JettyManagerModule.NAME, CacheModule.NAME, StreamModule.NAME};
+ }
+
+ private void addHandlers(Server jettyServer) {
+ jettyServer.addHandler(new TraceSegmentServletHandler());
+ }
+}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyModuleRegistration.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/AgentModuleJettyRegistration.java
similarity index 60%
rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyModuleRegistration.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/AgentModuleJettyRegistration.java
index 9e292b7ca..85158fb1c 100644
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyModuleRegistration.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/AgentModuleJettyRegistration.java
@@ -16,16 +16,26 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentserver.jetty;
+package org.skywalking.apm.collector.agent.jetty;
-import org.skywalking.apm.collector.core.module.ModuleRegistration;
+import org.skywalking.apm.collector.cluster.ModuleRegistration;
/**
* @author peng-yongsheng
*/
-public class AgentServerJettyModuleRegistration extends ModuleRegistration {
+public class AgentModuleJettyRegistration extends ModuleRegistration {
+
+ private final String host;
+ private final int port;
+ private final String contextPath;
+
+ public AgentModuleJettyRegistration(String host, int port, String contextPath) {
+ this.host = host;
+ this.port = port;
+ this.contextPath = contextPath;
+ }
@Override public Value buildValue() {
- return new Value(AgentServerJettyConfig.HOST, AgentServerJettyConfig.PORT, AgentServerJettyConfig.CONTEXT_PATH);
+ return new Value(host, port, contextPath);
}
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/TraceSegmentServletHandler.java
similarity index 86%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/TraceSegmentServletHandler.java
index 552834ce9..dd3ac8ed2 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/TraceSegmentServletHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/TraceSegmentServletHandler.java
@@ -16,16 +16,16 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler;
+package org.skywalking.apm.collector.agent.jetty.handler;
import com.google.gson.JsonElement;
import com.google.gson.stream.JsonReader;
import java.io.BufferedReader;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.agentstream.jetty.handler.reader.TraceSegment;
-import org.skywalking.apm.collector.agentstream.jetty.handler.reader.TraceSegmentJsonReader;
-import org.skywalking.apm.collector.agentstream.worker.segment.SegmentParse;
+import org.skywalking.apm.collector.agent.jetty.handler.reader.TraceSegment;
+import org.skywalking.apm.collector.agent.jetty.handler.reader.TraceSegmentJsonReader;
+import org.skywalking.apm.collector.agent.stream.parser.SegmentParse;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
import org.slf4j.Logger;
@@ -64,7 +64,7 @@ public class TraceSegmentServletHandler extends JettyHandler {
reader.beginArray();
while (reader.hasNext()) {
- SegmentParse segmentParse = new SegmentParse();
+ SegmentParse segmentParse = new SegmentParse(null);
TraceSegment traceSegment = jsonReader.read(reader);
segmentParse.parse(traceSegment.getUpstreamSegment(), SegmentParse.Source.Agent);
}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/naming/AgentJettyNamingHandler.java
similarity index 70%
rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/naming/AgentJettyNamingHandler.java
index 106a39a69..ef0895493 100644
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/naming/AgentJettyNamingHandler.java
@@ -16,30 +16,32 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentserver.jetty.handler;
+package org.skywalking.apm.collector.agent.jetty.handler.naming;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.agentstream.jetty.AgentStreamJettyDataListener;
-import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
/**
* @author peng-yongsheng
*/
-public class AgentStreamJettyServerHandler extends JettyHandler {
+public class AgentJettyNamingHandler extends JettyHandler {
+
+ private final AgentJettyNamingListener namingListener;
+
+ public AgentJettyNamingHandler(AgentJettyNamingListener namingListener) {
+ this.namingListener = namingListener;
+ }
@Override public String pathSpec() {
- return "/agentstream/jetty";
+ return "/agent/jetty";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
- ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
- Set servers = reader.read(AgentStreamJettyDataListener.PATH);
+ Set servers = namingListener.getAddresses();
JsonArray serverArray = new JsonArray();
servers.forEach(serverArray::add);
return serverArray;
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/naming/AgentJettyNamingListener.java
similarity index 65%
rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/naming/AgentJettyNamingListener.java
index 4184b6945..1dad304a9 100644
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/naming/AgentJettyNamingListener.java
@@ -16,19 +16,21 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentserver.jetty;
+package org.skywalking.apm.collector.agent.jetty.handler.naming;
-import org.skywalking.apm.collector.agentserver.AgentServerModuleGroupDefine;
-import org.skywalking.apm.collector.cluster.ClusterModuleDefine;
-import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
+import org.skywalking.apm.collector.agent.AgentModule;
+import org.skywalking.apm.collector.agent.jetty.AgentModuleJettyProvider;
+import org.skywalking.apm.collector.cluster.ClusterModuleListener;
/**
* @author peng-yongsheng
*/
-public class AgentServerJettyDataListener extends ClusterDataListener {
+public class AgentJettyNamingListener extends ClusterModuleListener {
+
+ public static final String PATH = "/" + AgentModule.NAME + "/" + AgentModuleJettyProvider.NAME;
@Override public String path() {
- return ClusterModuleDefine.BASE_CATALOG + "." + AgentServerModuleGroupDefine.GROUP_NAME + "." + AgentServerJettyModuleDefine.MODULE_NAME;
+ return PATH;
}
@Override public void serverJoinNotify(String serverAddress) {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/KeyWithStringValueJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/KeyWithStringValueJsonReader.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/KeyWithStringValueJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/KeyWithStringValueJsonReader.java
index 50fb01893..8d05026e0 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/KeyWithStringValueJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/KeyWithStringValueJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/LogJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/LogJsonReader.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/LogJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/LogJsonReader.java
index db95cc41e..9448192ce 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/LogJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/LogJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/ReferenceJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/ReferenceJsonReader.java
similarity index 98%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/ReferenceJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/ReferenceJsonReader.java
index efeb7f214..c9ed25301 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/ReferenceJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/ReferenceJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/SegmentJsonReader.java
similarity index 97%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/SegmentJsonReader.java
index 5a5dde311..0997202cd 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SegmentJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/SegmentJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SpanJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/SpanJsonReader.java
similarity index 98%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SpanJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/SpanJsonReader.java
index 6059b7d80..121d83b6f 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/SpanJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/SpanJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/StreamJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/StreamJsonReader.java
similarity index 92%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/StreamJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/StreamJsonReader.java
index 9175c4e80..c5a0b255f 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/StreamJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/StreamJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/TraceSegment.java
similarity index 95%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/TraceSegment.java
index 851bbfa1c..d7d4164dc 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegment.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/TraceSegment.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import org.skywalking.apm.network.proto.TraceSegmentObject;
import org.skywalking.apm.network.proto.UniqueId;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/TraceSegmentJsonReader.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/TraceSegmentJsonReader.java
index 1390f21cc..125cb35ba 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/TraceSegmentJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/UniqueIdJsonReader.java
similarity index 94%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java
rename to apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/UniqueIdJsonReader.java
index 9bf1c3ed7..a172f98e9 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/UniqueIdJsonReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/java/org/skywalking/apm/collector/agent/jetty/handler/reader/UniqueIdJsonReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.jetty.handler.reader;
+package org.skywalking.apm.collector.agent.jetty.handler.reader;
import com.google.gson.stream.JsonReader;
import java.io.IOException;
diff --git a/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider
new file mode 100644
index 000000000..dead2c5cf
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider
@@ -0,0 +1,19 @@
+#
+# Copyright 2017, OpenSkywalking Organization All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Project repository: https://github.com/OpenSkywalking/skywalking
+#
+
+org.skywalking.apm.collector.agent.jetty.AgentModuleJettyProvider
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/pom.xml b/apm-collector/apm-collector-agent/collector-agent-stream/pom.xml
new file mode 100644
index 000000000..08a3c4885
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/pom.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+ apm-collector-agent
+ org.skywalking
+ 3.2.4-2017
+
+ 4.0.0
+
+ collector-agent-stream
+ jar
+
+
+
+ org.skywalking
+ collector-stream-provider
+ ${project.version}
+
+
+ org.skywalking
+ collector-cache-define
+ ${project.version}
+
+
+
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/AgentStreamSingleton.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/AgentStreamSingleton.java
new file mode 100644
index 000000000..91afecb5a
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/AgentStreamSingleton.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream;
+
+import org.skywalking.apm.collector.agent.stream.graph.JvmMetricStreamGraph;
+import org.skywalking.apm.collector.agent.stream.graph.RegisterStreamGraph;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
+import org.skywalking.apm.collector.stream.timer.PersistenceTimer;
+import org.skywalking.apm.collector.stream.worker.base.WorkerCreateListener;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AgentStreamSingleton {
+
+ private static AgentStreamSingleton INSTANCE;
+
+ private final ModuleManager moduleManager;
+ private final WorkerCreateListener workerCreateListener;
+
+ private AgentStreamSingleton(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ this.workerCreateListener = new WorkerCreateListener();
+ this.create();
+ }
+
+ public static synchronized AgentStreamSingleton createInstanceIfAbsent(ModuleManager moduleManager) {
+ if (ObjectUtils.isEmpty(INSTANCE)) {
+ INSTANCE = new AgentStreamSingleton(moduleManager);
+ }
+ return INSTANCE;
+ }
+
+ private void create() {
+ createJVMGraph();
+ createRegisterGraph();
+ createTraceGraph();
+
+ PersistenceTimer timer = new PersistenceTimer();
+ timer.start(moduleManager, workerCreateListener.getPersistenceWorkers());
+
+ }
+
+ private void createJVMGraph() {
+ JvmMetricStreamGraph jvmMetricStreamGraph = new JvmMetricStreamGraph(moduleManager, workerCreateListener);
+ jvmMetricStreamGraph.createCpuMetricGraph();
+ jvmMetricStreamGraph.createGcMetricGraph();
+ jvmMetricStreamGraph.createMemoryMetricGraph();
+ jvmMetricStreamGraph.createMemoryPoolMetricGraph();
+ jvmMetricStreamGraph.createHeartBeatGraph();
+ }
+
+ private void createRegisterGraph() {
+ RegisterStreamGraph registerStreamGraph = new RegisterStreamGraph(moduleManager, workerCreateListener);
+ registerStreamGraph.createApplicationRegisterGraph();
+ registerStreamGraph.createInstanceRegisterGraph();
+ registerStreamGraph.createServiceNameRegisterGraph();
+ }
+
+ private void createTraceGraph() {
+ TraceStreamGraph traceStreamGraph = new TraceStreamGraph(moduleManager, workerCreateListener);
+ traceStreamGraph.createSegmentStandardizationGraph();
+ traceStreamGraph.createGlobalTraceGraph();
+ traceStreamGraph.createInstPerformanceGraph();
+ traceStreamGraph.createNodeComponentGraph();
+ traceStreamGraph.createNodeMappingGraph();
+ traceStreamGraph.createNodeReferenceGraph();
+ traceStreamGraph.createServiceEntryGraph();
+ traceStreamGraph.createServiceReferenceGraph();
+ traceStreamGraph.createSegmentGraph();
+ traceStreamGraph.createSegmentCostGraph();
+ }
+}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/IdAutoIncrement.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/IdAutoIncrement.java
similarity index 95%
rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/IdAutoIncrement.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/IdAutoIncrement.java
index a9e06117b..c2ce349ba 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/IdAutoIncrement.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/IdAutoIncrement.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentregister.worker;
+package org.skywalking.apm.collector.agent.stream;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/BufferFileConfig.java
similarity index 94%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/BufferFileConfig.java
index 89ef3183d..6cc6f7724 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/config/BufferFileConfig.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/BufferFileConfig.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.config;
+package org.skywalking.apm.collector.agent.stream.buffer;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/Offset.java
similarity index 97%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/Offset.java
index 2ea0896ac..d2eba51ed 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/Offset.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/Offset.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+package org.skywalking.apm.collector.agent.stream.buffer;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/OffsetManager.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/OffsetManager.java
index 3e9518749..68bce1581 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/OffsetManager.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/OffsetManager.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+package org.skywalking.apm.collector.agent.stream.buffer;
import java.io.File;
import java.io.FilenameFilter;
@@ -24,8 +24,7 @@ import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import org.skywalking.apm.collector.agentstream.config.BufferFileConfig;
-import org.skywalking.apm.collector.agentstream.worker.util.FileUtils;
+import org.skywalking.apm.collector.agent.stream.util.FileUtils;
import org.skywalking.apm.collector.core.util.CollectionUtils;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferConfig.java
similarity index 92%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferConfig.java
index 16fab593d..b27b7290f 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferConfig.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferConfig.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+package org.skywalking.apm.collector.agent.stream.buffer;
import org.skywalking.apm.collector.core.config.SystemConfig;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferManager.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferManager.java
index 07339d596..938d0e980 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferManager.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferManager.java
@@ -16,12 +16,11 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+package org.skywalking.apm.collector.agent.stream.buffer;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-import org.skywalking.apm.collector.agentstream.config.BufferFileConfig;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferReader.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferReader.java
index 4f8c76798..a073b212b 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferReader.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/buffer/SegmentBufferReader.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.buffer;
+package org.skywalking.apm.collector.agent.stream.buffer;
import com.google.protobuf.CodedOutputStream;
import java.io.File;
@@ -26,7 +26,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import org.skywalking.apm.collector.agentstream.worker.segment.SegmentParse;
+import org.skywalking.apm.collector.agent.stream.parser.SegmentParse;
import org.skywalking.apm.collector.core.util.CollectionUtils;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
@@ -117,7 +117,7 @@ public enum SegmentBufferReader {
while (readFile.length() > readFileOffset && readFileOffset < endPoint) {
UpstreamSegment upstreamSegment = UpstreamSegment.parser().parseDelimitedFrom(inputStream);
- SegmentParse parse = new SegmentParse();
+ SegmentParse parse = new SegmentParse(null);
if (!parse.parse(upstreamSegment, SegmentParse.Source.Buffer)) {
return false;
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/JvmMetricStreamGraph.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/JvmMetricStreamGraph.java
new file mode 100644
index 000000000..355b17c86
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/JvmMetricStreamGraph.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.graph;
+
+import org.skywalking.apm.collector.agent.stream.worker.jvm.CpuMetricPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.jvm.GCMetricPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.jvm.InstHeartBeatPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.jvm.MemoryMetricPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.jvm.MemoryPoolMetricPersistenceWorker;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.QueueModule;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.table.jvm.CpuMetric;
+import org.skywalking.apm.collector.storage.table.jvm.GCMetric;
+import org.skywalking.apm.collector.storage.table.jvm.MemoryMetric;
+import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetric;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.skywalking.apm.collector.stream.worker.base.WorkerCreateListener;
+
+/**
+ * @author peng-yongsheng
+ */
+public class JvmMetricStreamGraph {
+
+ public static final int GC_METRIC_GRAPH_ID = 100;
+ public static final int MEMORY_METRIC_GRAPH_ID = 101;
+ public static final int MEMORY_POOL_METRIC_GRAPH_ID = 102;
+ public static final int CPU_METRIC_GRAPH_ID = 103;
+ public static final int INST_HEART_BEAT_GRAPH_ID = 104;
+
+ private final ModuleManager moduleManager;
+ private final WorkerCreateListener workerCreateListener;
+
+ public JvmMetricStreamGraph(ModuleManager moduleManager, WorkerCreateListener workerCreateListener) {
+ this.moduleManager = moduleManager;
+ this.workerCreateListener = workerCreateListener;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createGcMetricGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(GC_METRIC_GRAPH_ID, GCMetric.class);
+ graph.addNode(new GCMetricPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createCpuMetricGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(CPU_METRIC_GRAPH_ID, CpuMetric.class);
+ graph.addNode(new CpuMetricPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createMemoryMetricGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(MEMORY_METRIC_GRAPH_ID, MemoryMetric.class);
+ graph.addNode(new MemoryMetricPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createMemoryPoolMetricGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(MEMORY_POOL_METRIC_GRAPH_ID, MemoryPoolMetric.class);
+ graph.addNode(new MemoryPoolMetricPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createHeartBeatGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(INST_HEART_BEAT_GRAPH_ID, Instance.class);
+ graph.addNode(new InstHeartBeatPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/RegisterStreamGraph.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/RegisterStreamGraph.java
new file mode 100644
index 000000000..9e5d7af08
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/RegisterStreamGraph.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.graph;
+
+import org.skywalking.apm.collector.agent.stream.worker.register.ApplicationRegisterRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.register.ApplicationRegisterSerialWorker;
+import org.skywalking.apm.collector.agent.stream.worker.register.InstanceRegisterRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.register.InstanceRegisterSerialWorker;
+import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameRegisterRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameRegisterSerialWorker;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.QueueModule;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.remote.RemoteModule;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.storage.table.register.Application;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.skywalking.apm.collector.storage.table.register.ServiceName;
+import org.skywalking.apm.collector.stream.worker.base.WorkerCreateListener;
+
+/**
+ * @author peng-yongsheng
+ */
+public class RegisterStreamGraph {
+
+ public static final int APPLICATION_REGISTER_GRAPH_ID = 200;
+ public static final int INSTANCE_REGISTER_GRAPH_ID = 201;
+ public static final int SERVICE_NAME_REGISTER_GRAPH_ID = 202;
+
+ private final ModuleManager moduleManager;
+ private final WorkerCreateListener workerCreateListener;
+
+ public RegisterStreamGraph(ModuleManager moduleManager, WorkerCreateListener workerCreateListener) {
+ this.moduleManager = moduleManager;
+ this.workerCreateListener = workerCreateListener;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createApplicationRegisterGraph() {
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(APPLICATION_REGISTER_GRAPH_ID, Application.class);
+ graph.addNode(new ApplicationRegisterRemoteWorker.Factory(moduleManager, remoteSenderService, APPLICATION_REGISTER_GRAPH_ID).create(workerCreateListener))
+ .addNext(new ApplicationRegisterSerialWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createInstanceRegisterGraph() {
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(INSTANCE_REGISTER_GRAPH_ID, Instance.class);
+ graph.addNode(new InstanceRegisterRemoteWorker.Factory(moduleManager, remoteSenderService, INSTANCE_REGISTER_GRAPH_ID).create(workerCreateListener))
+ .addNext(new InstanceRegisterSerialWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createServiceNameRegisterGraph() {
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(SERVICE_NAME_REGISTER_GRAPH_ID, ServiceName.class);
+ graph.addNode(new ServiceNameRegisterRemoteWorker.Factory(moduleManager, remoteSenderService, SERVICE_NAME_REGISTER_GRAPH_ID).create(workerCreateListener))
+ .addNext(new ServiceNameRegisterSerialWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/TraceStreamGraph.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/TraceStreamGraph.java
new file mode 100644
index 000000000..49cb88d5b
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/graph/TraceStreamGraph.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.graph;
+
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SegmentStandardization;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SegmentStandardizationWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.global.GlobalTracePersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.instance.InstPerformancePersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeComponentAggregationWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeComponentPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeComponentRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeMappingAggregationWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeMappingPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeMappingRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.noderef.NodeReferenceAggregationWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.noderef.NodeReferencePersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.noderef.NodeReferenceRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.segment.SegmentCostPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.segment.SegmentPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceEntryAggregationWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceEntryPersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceEntryRemoteWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.serviceref.ServiceReferenceAggregationWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.serviceref.ServiceReferencePersistenceWorker;
+import org.skywalking.apm.collector.agent.stream.worker.trace.serviceref.ServiceReferenceRemoteWorker;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.QueueModule;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.remote.RemoteModule;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.storage.table.global.GlobalTrace;
+import org.skywalking.apm.collector.storage.table.instance.InstPerformance;
+import org.skywalking.apm.collector.storage.table.node.NodeComponent;
+import org.skywalking.apm.collector.storage.table.node.NodeMapping;
+import org.skywalking.apm.collector.storage.table.noderef.NodeReference;
+import org.skywalking.apm.collector.storage.table.segment.Segment;
+import org.skywalking.apm.collector.storage.table.segment.SegmentCost;
+import org.skywalking.apm.collector.storage.table.service.ServiceEntry;
+import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference;
+import org.skywalking.apm.collector.stream.worker.base.WorkerCreateListener;
+
+/**
+ * @author peng-yongsheng
+ */
+public class TraceStreamGraph {
+
+ public static final int GLOBAL_TRACE_GRAPH_ID = 300;
+ public static final int INST_PERFORMANCE_GRAPH_ID = 301;
+ public static final int NODE_COMPONENT_GRAPH_ID = 302;
+ public static final int NODE_MAPPING_GRAPH_ID = 303;
+ public static final int NODE_REFERENCE_GRAPH_ID = 304;
+ public static final int SERVICE_ENTRY_GRAPH_ID = 305;
+ public static final int SERVICE_REFERENCE_GRAPH_ID = 306;
+ public static final int SEGMENT_GRAPH_ID = 307;
+ public static final int SEGMENT_COST_GRAPH_ID = 308;
+ public static final int SEGMENT_STANDARDIZATION_GRAPH_ID = 309;
+
+ private final ModuleManager moduleManager;
+ private final WorkerCreateListener workerCreateListener;
+
+ public TraceStreamGraph(ModuleManager moduleManager, WorkerCreateListener workerCreateListener) {
+ this.moduleManager = moduleManager;
+ this.workerCreateListener = workerCreateListener;
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createSegmentStandardizationGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(SEGMENT_STANDARDIZATION_GRAPH_ID, SegmentStandardization.class);
+ graph.addNode(new SegmentStandardizationWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createGlobalTraceGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(GLOBAL_TRACE_GRAPH_ID, GlobalTrace.class);
+ graph.addNode(new GlobalTracePersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createInstPerformanceGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(INST_PERFORMANCE_GRAPH_ID, InstPerformance.class);
+ graph.addNode(new InstPerformancePersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createNodeComponentGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(NODE_COMPONENT_GRAPH_ID, NodeComponent.class);
+ graph.addNode(new NodeComponentAggregationWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener))
+ .addNext(new NodeComponentRemoteWorker.Factory(moduleManager, remoteSenderService, NODE_COMPONENT_GRAPH_ID).create(workerCreateListener))
+ .addNext(new NodeComponentPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createNodeMappingGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(NODE_MAPPING_GRAPH_ID, NodeMapping.class);
+ graph.addNode(new NodeMappingAggregationWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener))
+ .addNext(new NodeMappingRemoteWorker.Factory(moduleManager, remoteSenderService, NODE_MAPPING_GRAPH_ID).create(workerCreateListener))
+ .addNext(new NodeMappingPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createNodeReferenceGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(NODE_REFERENCE_GRAPH_ID, NodeReference.class);
+ graph.addNode(new NodeReferenceAggregationWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener))
+ .addNext(new NodeReferenceRemoteWorker.Factory(moduleManager, remoteSenderService, NODE_REFERENCE_GRAPH_ID).create(workerCreateListener))
+ .addNext(new NodeReferencePersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createServiceEntryGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(SERVICE_ENTRY_GRAPH_ID, ServiceEntry.class);
+ graph.addNode(new ServiceEntryAggregationWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener))
+ .addNext(new ServiceEntryRemoteWorker.Factory(moduleManager, remoteSenderService, SERVICE_ENTRY_GRAPH_ID).create(workerCreateListener))
+ .addNext(new ServiceEntryPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createServiceReferenceGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+ RemoteSenderService remoteSenderService = moduleManager.find(RemoteModule.NAME).getService(RemoteSenderService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(SERVICE_REFERENCE_GRAPH_ID, ServiceReference.class);
+ graph.addNode(new ServiceReferenceAggregationWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener))
+ .addNext(new ServiceReferenceRemoteWorker.Factory(moduleManager, remoteSenderService, SERVICE_REFERENCE_GRAPH_ID).create(workerCreateListener))
+ .addNext(new ServiceReferencePersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createSegmentGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(SEGMENT_GRAPH_ID, Segment.class);
+ graph.addNode(new SegmentPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void createSegmentCostGraph() {
+ QueueCreatorService queueCreatorService = moduleManager.find(QueueModule.NAME).getService(QueueCreatorService.class);
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(SEGMENT_COST_GRAPH_ID, SegmentCost.class);
+ graph.addNode(new SegmentCostPersistenceWorker.Factory(moduleManager, queueCreatorService).create(workerCreateListener));
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java
similarity index 80%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java
index 1b62201b1..35aac1001 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/EntrySpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
/**
* @author peng-yongsheng
*/
public interface EntrySpanListener extends SpanListener {
- void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
+ void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java
similarity index 80%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java
index 96302d359..23c939fec 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/ExitSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
/**
* @author peng-yongsheng
*/
public interface ExitSpanListener extends SpanListener {
- void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
+ void parseExit(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java
similarity index 80%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java
index 72764229e..ea774a98b 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/FirstSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
/**
* @author peng-yongsheng
*/
public interface FirstSpanListener extends SpanListener {
- void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
+ void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/GlobalTraceIdsListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java
similarity index 93%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/GlobalTraceIdsListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java
index 5ddf355fe..25f7837ff 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/GlobalTraceIdsListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
import org.skywalking.apm.network.proto.UniqueId;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java
similarity index 80%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java
index 8f17f243a..07fe5eeb1 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/LocalSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
/**
* @author peng-yongsheng
*/
public interface LocalSpanListener extends SpanListener {
- void parseLocal(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId);
+ void parseLocal(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/RefsListener.java
similarity index 79%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/RefsListener.java
index ac8fa6f42..d12db455f 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/RefsListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/RefsListener.java
@@ -16,13 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
/**
* @author peng-yongsheng
*/
public interface RefsListener extends SpanListener {
- void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId, String segmentId);
+ void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int instanceId, String segmentId);
}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/SegmentParse.java
similarity index 65%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/SegmentParse.java
index 65d636fda..668987fc7 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SegmentParse.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/SegmentParse.java
@@ -16,32 +16,31 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
import com.google.protobuf.InvalidProtocolBufferException;
import java.util.ArrayList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.global.GlobalTraceSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.instance.performance.InstPerformanceSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.node.component.NodeComponentSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.node.mapping.NodeMappingSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.noderef.NodeReferenceSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.cost.SegmentCostSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.origin.SegmentPersistenceWorker;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceIdExchanger;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentStandardizationWorker;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanIdExchanger;
-import org.skywalking.apm.collector.agentstream.worker.service.entry.ServiceEntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.serviceref.ServiceReferenceSpanListener;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.storage.define.segment.SegmentDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceIdExchanger;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SegmentDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SegmentStandardization;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanIdExchanger;
+import org.skywalking.apm.collector.agent.stream.worker.trace.global.GlobalTraceSpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.instance.InstPerformanceSpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeComponentSpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.node.NodeMappingSpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.noderef.NodeReferenceSpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.segment.SegmentCostSpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceEntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.worker.trace.serviceref.ServiceReferenceSpanListener;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.util.TimeBucketUtils;
+import org.skywalking.apm.collector.storage.table.segment.Segment;
import org.skywalking.apm.network.proto.SpanType;
import org.skywalking.apm.network.proto.TraceSegmentObject;
import org.skywalking.apm.network.proto.UniqueId;
@@ -56,19 +55,22 @@ public class SegmentParse {
private final Logger logger = LoggerFactory.getLogger(SegmentParse.class);
- private List spanListeners;
+ private final List spanListeners;
+ private final ModuleManager moduleManager;
private String segmentId;
+ private long timeBucket = 0;
- public SegmentParse() {
- spanListeners = new ArrayList<>();
- spanListeners.add(new NodeComponentSpanListener());
- spanListeners.add(new NodeMappingSpanListener());
- spanListeners.add(new NodeReferenceSpanListener());
- spanListeners.add(new SegmentCostSpanListener());
- spanListeners.add(new GlobalTraceSpanListener());
- spanListeners.add(new ServiceEntrySpanListener());
- spanListeners.add(new ServiceReferenceSpanListener());
- spanListeners.add(new InstPerformanceSpanListener());
+ public SegmentParse(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ this.spanListeners = new ArrayList<>();
+ this.spanListeners.add(new NodeComponentSpanListener());
+ this.spanListeners.add(new NodeMappingSpanListener());
+ this.spanListeners.add(new NodeReferenceSpanListener(moduleManager));
+ this.spanListeners.add(new SegmentCostSpanListener(moduleManager));
+ this.spanListeners.add(new GlobalTraceSpanListener());
+ this.spanListeners.add(new ServiceEntrySpanListener(moduleManager));
+ this.spanListeners.add(new ServiceReferenceSpanListener());
+ this.spanListeners.add(new InstPerformanceSpanListener());
}
public boolean parse(UpstreamSegment segment, Source source) {
@@ -77,6 +79,7 @@ public class SegmentParse {
TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(segment.getSegment());
SegmentDecorator segmentDecorator = new SegmentDecorator(segmentObject);
+
if (!preBuild(traceIds, segmentDecorator)) {
logger.debug("This segment id exchange not success, write to buffer file, id: {}", segmentId);
@@ -118,7 +121,7 @@ public class SegmentParse {
for (int i = 0; i < segmentDecorator.getRefsCount(); i++) {
ReferenceDecorator referenceDecorator = segmentDecorator.getRefs(i);
- if (!ReferenceIdExchanger.getInstance().exchange(referenceDecorator, applicationId)) {
+ if (!ReferenceIdExchanger.getInstance(moduleManager).exchange(referenceDecorator, applicationId)) {
return false;
}
@@ -128,12 +131,13 @@ public class SegmentParse {
for (int i = 0; i < segmentDecorator.getSpansCount(); i++) {
SpanDecorator spanDecorator = segmentDecorator.getSpans(i);
- if (!SpanIdExchanger.getInstance().exchange(spanDecorator, applicationId)) {
+ if (!SpanIdExchanger.getInstance(moduleManager).exchange(spanDecorator, applicationId)) {
return false;
}
if (spanDecorator.getSpanId() == 0) {
notifyFirstListener(spanDecorator, applicationId, applicationInstanceId, segmentId);
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
if (SpanType.Exit.equals(spanDecorator.getSpanType())) {
@@ -151,28 +155,19 @@ public class SegmentParse {
}
private void buildSegment(String id, byte[] dataBinary) {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
- SegmentDataDefine.Segment segment = new SegmentDataDefine.Segment();
- segment.setId(id);
+ Segment segment = new Segment(id);
segment.setDataBinary(dataBinary);
-
- try {
- logger.debug("send to segment persistence worker, id: {}, dataBinary length: {}", segment.getId(), dataBinary.length);
- context.getClusterWorkerContext().lookup(SegmentPersistenceWorker.WorkerRole.INSTANCE).tell(segment.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ segment.setTimeBucket(timeBucket);
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.SEGMENT_GRAPH_ID, Segment.class);
+ graph.start(segment);
}
private void writeToBufferFile(String id, UpstreamSegment upstreamSegment) {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
-
- try {
- logger.debug("send to segment buffer write worker, id: {}", id);
- context.getClusterWorkerContext().lookup(SegmentStandardizationWorker.WorkerRole.INSTANCE).tell(upstreamSegment);
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ logger.debug("send to segment buffer write worker, id: {}", id);
+ SegmentStandardization standardization = new SegmentStandardization(id);
+ standardization.setUpstreamSegment(upstreamSegment);
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.SEGMENT_STANDARDIZATION_GRAPH_ID, SegmentStandardization.class);
+ graph.start(standardization);
}
private void notifyListenerToBuild() {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/SpanListener.java
similarity index 92%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/SpanListener.java
index e52fc8b7c..e2885e990 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/SpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/SpanListener.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment;
+package org.skywalking.apm.collector.agent.stream.parser;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java
similarity index 91%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java
index 2d052f3f0..5b36854fc 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/IdExchanger.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java
similarity index 98%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java
index 4c9f1db72..796dd6d55 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceDecorator.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
import org.skywalking.apm.network.proto.RefType;
import org.skywalking.apm.network.proto.TraceSegmentReference;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java
similarity index 66%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java
index da0fefdff..9b6e5aa55 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/ReferenceIdExchanger.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java
@@ -16,11 +16,13 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
-import org.skywalking.apm.collector.agentregister.servicename.ServiceNameService;
-import org.skywalking.apm.collector.cache.ApplicationCache;
-import org.skywalking.apm.collector.cache.InstanceCache;
+import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ApplicationCacheService;
+import org.skywalking.apm.collector.cache.service.InstanceCacheService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
import org.slf4j.Logger;
@@ -35,21 +37,26 @@ public class ReferenceIdExchanger implements IdExchanger {
private static ReferenceIdExchanger EXCHANGER;
private ServiceNameService serviceNameService;
+ private final InstanceCacheService instanceCacheService;
+ private final ApplicationCacheService applicationCacheService;
- public static ReferenceIdExchanger getInstance() {
+ public static ReferenceIdExchanger getInstance(ModuleManager moduleManager) {
if (EXCHANGER == null) {
- EXCHANGER = new ReferenceIdExchanger();
+ EXCHANGER = new ReferenceIdExchanger(moduleManager);
}
return EXCHANGER;
}
- public ReferenceIdExchanger() {
- serviceNameService = new ServiceNameService();
+ private ReferenceIdExchanger(ModuleManager moduleManager) {
+ serviceNameService = new ServiceNameService(moduleManager);
+ instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class);
+ applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
}
@Override public boolean exchange(ReferenceDecorator standardBuilder, int applicationId) {
if (standardBuilder.getEntryServiceId() == 0 && StringUtils.isNotEmpty(standardBuilder.getEntryServiceName())) {
- int entryServiceId = serviceNameService.getOrCreate(InstanceCache.get(standardBuilder.getEntryApplicationInstanceId()), standardBuilder.getEntryServiceName());
+ int entryServiceId = serviceNameService.getOrCreate(instanceCacheService.get(standardBuilder.getEntryApplicationInstanceId()), standardBuilder.getEntryServiceName());
+
if (entryServiceId == 0) {
return false;
} else {
@@ -60,7 +67,8 @@ public class ReferenceIdExchanger implements IdExchanger {
}
if (standardBuilder.getParentServiceId() == 0 && StringUtils.isNotEmpty(standardBuilder.getParentServiceName())) {
- int parentServiceId = serviceNameService.getOrCreate(InstanceCache.get(standardBuilder.getParentApplicationInstanceId()), standardBuilder.getParentServiceName());
+ int parentServiceId = serviceNameService.getOrCreate(instanceCacheService.get(standardBuilder.getParentApplicationInstanceId()), standardBuilder.getParentServiceName());
+
if (parentServiceId == 0) {
return false;
} else {
@@ -71,7 +79,7 @@ public class ReferenceIdExchanger implements IdExchanger {
}
if (standardBuilder.getNetworkAddressId() == 0 && StringUtils.isNotEmpty(standardBuilder.getNetworkAddress())) {
- int networkAddressId = ApplicationCache.get(standardBuilder.getNetworkAddress());
+ int networkAddressId = applicationCacheService.get(standardBuilder.getNetworkAddress());
if (networkAddressId == 0) {
return false;
} else {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java
similarity index 96%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java
index 2e0bf92c1..0d29ee479 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentDecorator.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
import org.skywalking.apm.network.proto.TraceSegmentObject;
import org.skywalking.apm.network.proto.UniqueId;
diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java
similarity index 56%
rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java
index 7741dd697..b3f8125d1 100644
--- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java
@@ -16,26 +16,27 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.ui;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
-import java.util.List;
-import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.module.MultipleModuleInstaller;
+import org.skywalking.apm.collector.core.data.EndOfBatchQueueMessage;
+import org.skywalking.apm.network.proto.UpstreamSegment;
/**
* @author peng-yongsheng
*/
-public class UIModuleInstaller extends MultipleModuleInstaller {
+public class SegmentStandardization extends EndOfBatchQueueMessage {
- @Override public String groupName() {
- return UIModuleGroupDefine.GROUP_NAME;
+ public SegmentStandardization(String key) {
+ super(key);
}
- @Override public Context moduleContext() {
- return new UIModuleContext(groupName());
+ private UpstreamSegment upstreamSegment;
+
+ public UpstreamSegment getUpstreamSegment() {
+ return upstreamSegment;
}
- @Override public List dependenceModules() {
- return null;
+ public void setUpstreamSegment(UpstreamSegment upstreamSegment) {
+ this.upstreamSegment = upstreamSegment;
}
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java
new file mode 100644
index 000000000..8fe297ad2
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import org.skywalking.apm.collector.agent.stream.buffer.SegmentBufferManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class SegmentStandardizationWorker extends AbstractLocalAsyncWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(SegmentStandardizationWorker.class);
+
+ public SegmentStandardizationWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ SegmentBufferManager.INSTANCE.initialize();
+ }
+
+ @Override public int id() {
+ return SegmentStandardizationWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(SegmentStandardization segmentStandardization) throws WorkerException {
+ SegmentBufferManager.INSTANCE.writeBuffer(segmentStandardization.getUpstreamSegment());
+ }
+
+ public final void flushAndSwitch() {
+ SegmentBufferManager.INSTANCE.flush();
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public SegmentStandardizationWorker workerInstance(ModuleManager moduleManager) {
+ SegmentStandardizationWorker standardizationWorker = new SegmentStandardizationWorker(moduleManager);
+ startTimer(standardizationWorker);
+ return standardizationWorker;
+ }
+
+ @Override public int queueSize() {
+ return 1024;
+ }
+
+ private void startTimer(SegmentStandardizationWorker standardizationWorker) {
+ Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(standardizationWorker::flushAndSwitch, 10, 3, TimeUnit.SECONDS);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java
similarity index 98%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java
index e4373ae36..a6f6fe0e1 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanDecorator.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
import org.skywalking.apm.network.proto.SpanLayer;
import org.skywalking.apm.network.proto.SpanObject;
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java
similarity index 65%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java
index 2a5cfe6c1..08afe3066 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SpanIdExchanger.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java
@@ -16,35 +16,43 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
-import org.skywalking.apm.collector.agentregister.servicename.ServiceNameService;
-import org.skywalking.apm.collector.cache.ApplicationCache;
+import org.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ApplicationCacheService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* @author peng-yongsheng
*/
public class SpanIdExchanger implements IdExchanger {
- private static SpanIdExchanger EXCHANGER;
- private ServiceNameService serviceNameService;
+ private final Logger logger = LoggerFactory.getLogger(SpanIdExchanger.class);
- public static SpanIdExchanger getInstance() {
+ private static SpanIdExchanger EXCHANGER;
+ private final ServiceNameService serviceNameService;
+ private final ApplicationCacheService applicationCacheService;
+
+ public static SpanIdExchanger getInstance(ModuleManager moduleManager) {
if (EXCHANGER == null) {
- EXCHANGER = new SpanIdExchanger();
+ EXCHANGER = new SpanIdExchanger(moduleManager);
}
return EXCHANGER;
}
- public SpanIdExchanger() {
- serviceNameService = new ServiceNameService();
+ public SpanIdExchanger(ModuleManager moduleManager) {
+ this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
+ this.serviceNameService = new ServiceNameService(moduleManager);
}
@Override public boolean exchange(SpanDecorator standardBuilder, int applicationId) {
if (standardBuilder.getPeerId() == 0 && StringUtils.isNotEmpty(standardBuilder.getPeer())) {
- int peerId = ApplicationCache.get(standardBuilder.getPeer());
+ int peerId = applicationCacheService.get(standardBuilder.getPeer());
if (peerId == 0) {
return false;
} else {
@@ -56,6 +64,7 @@ public class SpanIdExchanger implements IdExchanger {
if (standardBuilder.getOperationNameId() == 0 && StringUtils.isNotEmpty(standardBuilder.getOperationName())) {
int operationNameId = serviceNameService.getOrCreate(applicationId, standardBuilder.getOperationName());
+
if (operationNameId == 0) {
return false;
} else {
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java
similarity index 90%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java
index 8002fd6e2..efdc89ae7 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/StandardBuilder.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.standardization;
+package org.skywalking.apm.collector.agent.stream.parser.standardization;
/**
* @author peng-yongsheng
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/util/FileUtils.java
similarity index 97%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/util/FileUtils.java
index 08e79cb6d..02608fafb 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/util/FileUtils.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/util/FileUtils.java
@@ -16,7 +16,7 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.util;
+package org.skywalking.apm.collector.agent.stream.util;
import java.io.File;
import java.io.FileNotFoundException;
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/CpuMetricPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/CpuMetricPersistenceWorker.java
new file mode 100644
index 000000000..f4d58a9af
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/CpuMetricPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.jvm;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.ICpuMetricPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.jvm.CpuMetric;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class CpuMetricPersistenceWorker extends PersistenceWorker {
+
+ public CpuMetricPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(ICpuMetricPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public CpuMetricPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new CpuMetricPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/GCMetricPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/GCMetricPersistenceWorker.java
new file mode 100644
index 000000000..49e3a6b85
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/GCMetricPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.jvm;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IGCMetricPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.jvm.GCMetric;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class GCMetricPersistenceWorker extends PersistenceWorker {
+
+ public GCMetricPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IGCMetricPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public GCMetricPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new GCMetricPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/InstHeartBeatPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/InstHeartBeatPersistenceWorker.java
new file mode 100644
index 000000000..57b9108a3
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/InstHeartBeatPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.jvm;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class InstHeartBeatPersistenceWorker extends PersistenceWorker {
+
+ public InstHeartBeatPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return InstHeartBeatPersistenceWorker.class.hashCode();
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IInstanceHeartBeatPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public InstHeartBeatPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new InstHeartBeatPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/MemoryMetricPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/MemoryMetricPersistenceWorker.java
new file mode 100644
index 000000000..6840da97b
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/MemoryMetricPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.jvm;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IMemoryMetricPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.jvm.MemoryMetric;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class MemoryMetricPersistenceWorker extends PersistenceWorker {
+
+ public MemoryMetricPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IMemoryMetricPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public MemoryMetricPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new MemoryMetricPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/MemoryPoolMetricPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/MemoryPoolMetricPersistenceWorker.java
new file mode 100644
index 000000000..f0a8257f6
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/jvm/MemoryPoolMetricPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.jvm;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetric;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class MemoryPoolMetricPersistenceWorker extends PersistenceWorker {
+
+ @Override public int id() {
+ return 0;
+ }
+
+ public MemoryPoolMetricPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IMemoryPoolMetricPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public MemoryPoolMetricPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new MemoryPoolMetricPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationIDService.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationIDService.java
new file mode 100644
index 000000000..bdd80b658
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationIDService.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.agent.stream.graph.RegisterStreamGraph;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ApplicationCacheService;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
+import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
+import org.skywalking.apm.collector.storage.table.register.Application;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationIDService {
+
+ private final Logger logger = LoggerFactory.getLogger(ApplicationIDService.class);
+
+ private final ModuleManager moduleManager;
+ private final Graph applicationRegisterGraph;
+
+ public ApplicationIDService(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ this.applicationRegisterGraph = GraphManager.INSTANCE.createIfAbsent(RegisterStreamGraph.APPLICATION_REGISTER_GRAPH_ID, Application.class);
+ }
+
+ public int getOrCreate(String applicationCode) throws ModuleNotFoundException, ServiceNotProvidedException {
+ ApplicationCacheService service = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
+ int applicationId = service.get(applicationCode);
+
+ if (applicationId == 0) {
+ Application application = new Application(applicationCode);
+ application.setApplicationCode(applicationCode);
+ application.setApplicationId(0);
+
+ applicationRegisterGraph.start(application);
+ }
+ return applicationId;
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationRegisterRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationRegisterRemoteWorker.java
new file mode 100644
index 000000000..8d828766c
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationRegisterRemoteWorker.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.register.Application;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationRegisterRemoteWorker extends AbstractRemoteWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterRemoteWorker.class);
+
+ public ApplicationRegisterRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return ApplicationRegisterRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(Application message) throws WorkerException {
+ logger.debug("application code: {}", message.getApplicationCode());
+ onNext(message);
+ }
+
+ @Override public Selector selector() {
+ return Selector.ForeverFirst;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public ApplicationRegisterRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new ApplicationRegisterRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationRegisterSerialWorker.java
new file mode 100644
index 000000000..ff55da51d
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ApplicationRegisterSerialWorker.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.agent.stream.IdAutoIncrement;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ApplicationCacheService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO;
+import org.skywalking.apm.collector.storage.table.register.Application;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterSerialWorker.class);
+
+ private final IApplicationRegisterDAO applicationRegisterDAO;
+ private final ApplicationCacheService applicationCacheService;
+
+ public ApplicationRegisterSerialWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ this.applicationRegisterDAO = getModuleManager().find(StorageModule.NAME).getService(IApplicationRegisterDAO.class);
+ this.applicationCacheService = getModuleManager().find(CacheModule.NAME).getService(ApplicationCacheService.class);
+ }
+
+ @Override public int id() {
+ return ApplicationRegisterSerialWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(Application application) throws WorkerException {
+ logger.debug("register application, application code: {}", application.getApplicationCode());
+ int applicationId = applicationCacheService.get(application.getApplicationCode());
+
+ if (applicationId == 0) {
+ Application newApplication;
+ int min = applicationRegisterDAO.getMinApplicationId();
+ if (min == 0) {
+ Application userApplication = new Application(String.valueOf(Const.USER_ID));
+ userApplication.setApplicationCode(Const.USER_CODE);
+ userApplication.setApplicationId(Const.USER_ID);
+ applicationRegisterDAO.save(userApplication);
+
+ newApplication = new Application("-1");
+ newApplication.setApplicationId(-1);
+ newApplication.setApplicationCode(application.getApplicationCode());
+ } else {
+ int max = applicationRegisterDAO.getMaxApplicationId();
+ applicationId = IdAutoIncrement.INSTANCE.increment(min, max);
+
+ newApplication = new Application(String.valueOf(applicationId));
+ newApplication.setApplicationId(applicationId);
+ newApplication.setApplicationCode(application.getApplicationCode());
+ }
+ applicationRegisterDAO.save(newApplication);
+ }
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public ApplicationRegisterSerialWorker workerInstance(ModuleManager moduleManager) {
+ return new ApplicationRegisterSerialWorker(moduleManager);
+ }
+
+ @Override public int queueSize() {
+ return 256;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceIDService.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceIDService.java
new file mode 100644
index 000000000..efa5e5956
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceIDService.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.agent.stream.graph.RegisterStreamGraph;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.InstanceCacheService;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
+import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class InstanceIDService {
+
+ private final Logger logger = LoggerFactory.getLogger(InstanceIDService.class);
+
+ private final ModuleManager moduleManager;
+ private final Graph instanceRegisterGraph;
+ private final IInstanceRegisterDAO instanceRegisterDAO;
+
+ public InstanceIDService(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ this.instanceRegisterGraph = GraphManager.INSTANCE.createIfAbsent(RegisterStreamGraph.INSTANCE_REGISTER_GRAPH_ID, Instance.class);
+ this.instanceRegisterDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceRegisterDAO.class);
+ }
+
+ public int getOrCreate(int applicationId, String agentUUID, long registerTime,
+ String osInfo) throws ModuleNotFoundException, ServiceNotProvidedException {
+ logger.debug("get or create instance id, application id: {}, agentUUID: {}, registerTime: {}, osInfo: {}", applicationId, agentUUID, registerTime, osInfo);
+ InstanceCacheService service = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class);
+ int instanceId = service.getInstanceId(applicationId, agentUUID);
+
+ if (instanceId == 0) {
+ Instance instance = new Instance("0");
+ instance.setApplicationId(applicationId);
+ instance.setAgentUUID(agentUUID);
+ instance.setRegisterTime(registerTime);
+ instance.setHeartBeatTime(registerTime);
+ instance.setInstanceId(0);
+ instance.setOsInfo(osInfo);
+
+ instanceRegisterGraph.start(instance);
+ }
+ return instanceId;
+ }
+
+ public void recover(int instanceId, int applicationId, long registerTime,
+ String osInfo) throws ModuleNotFoundException, ServiceNotProvidedException {
+ logger.debug("instance recover, instance id: {}, application id: {}, register time: {}", instanceId, applicationId, registerTime);
+
+ Instance instance = new Instance(String.valueOf(instanceId));
+ instance.setApplicationId(applicationId);
+ instance.setAgentUUID("");
+ instance.setRegisterTime(registerTime);
+ instance.setHeartBeatTime(registerTime);
+ instance.setInstanceId(instanceId);
+ instance.setOsInfo(osInfo);
+ instanceRegisterDAO.save(instance);
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceRegisterRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceRegisterRemoteWorker.java
new file mode 100644
index 000000000..f36fae2ba
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceRegisterRemoteWorker.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class InstanceRegisterRemoteWorker extends AbstractRemoteWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(InstanceRegisterRemoteWorker.class);
+
+ @Override public int id() {
+ return InstanceRegisterRemoteWorker.class.hashCode();
+ }
+
+ public InstanceRegisterRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override protected void onWork(Instance instance) throws WorkerException {
+ logger.debug("application id: {}, agentUUID: {}, register time: {}", instance.getApplicationId(), instance.getAgentUUID(), instance.getRegisterTime());
+ onNext(instance);
+ }
+
+ @Override public Selector selector() {
+ return Selector.ForeverFirst;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public InstanceRegisterRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new InstanceRegisterRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceRegisterSerialWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceRegisterSerialWorker.java
new file mode 100644
index 000000000..41bbd5836
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/InstanceRegisterSerialWorker.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.InstanceCacheService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO;
+import org.skywalking.apm.collector.storage.table.register.Instance;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class InstanceRegisterSerialWorker extends AbstractLocalAsyncWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(InstanceRegisterSerialWorker.class);
+
+ private final InstanceCacheService instanceCacheService;
+ private final IInstanceRegisterDAO instanceRegisterDAO;
+
+ public InstanceRegisterSerialWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ this.instanceCacheService = getModuleManager().find(CacheModule.NAME).getService(InstanceCacheService.class);
+ this.instanceRegisterDAO = getModuleManager().find(StorageModule.NAME).getService(IInstanceRegisterDAO.class);
+ }
+
+ @Override public int id() {
+ return InstanceRegisterSerialWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(Instance instance) throws WorkerException {
+ logger.debug("register instance, application id: {}, agentUUID: {}", instance.getApplicationId(), instance.getAgentUUID());
+ int instanceId = instanceCacheService.getInstanceId(instance.getApplicationId(), instance.getAgentUUID());
+ if (instanceId == 0) {
+ Instance newInstance;
+
+ int min = instanceRegisterDAO.getMinInstanceId();
+ int max = instanceRegisterDAO.getMaxInstanceId();
+ if (min == 0 && max == 0) {
+ newInstance = new Instance("1");
+ newInstance.setInstanceId(1);
+ newInstance.setApplicationId(instance.getApplicationId());
+ newInstance.setAgentUUID(instance.getAgentUUID());
+ newInstance.setHeartBeatTime(instance.getHeartBeatTime());
+ newInstance.setOsInfo(instance.getOsInfo());
+ newInstance.setRegisterTime(instance.getRegisterTime());
+ } else {
+ newInstance = new Instance(String.valueOf(max + 1));
+ newInstance.setInstanceId(max + 1);
+ newInstance.setApplicationId(instance.getApplicationId());
+ newInstance.setAgentUUID(instance.getAgentUUID());
+ newInstance.setHeartBeatTime(instance.getHeartBeatTime());
+ newInstance.setOsInfo(instance.getOsInfo());
+ newInstance.setRegisterTime(instance.getRegisterTime());
+ }
+ instanceRegisterDAO.save(newInstance);
+ }
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public InstanceRegisterSerialWorker workerInstance(ModuleManager moduleManager) {
+ return new InstanceRegisterSerialWorker(moduleManager);
+ }
+
+ @Override public int queueSize() {
+ return 256;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameRegisterRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameRegisterRemoteWorker.java
new file mode 100644
index 000000000..87793be31
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameRegisterRemoteWorker.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.register.ServiceName;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceNameRegisterRemoteWorker extends AbstractRemoteWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(ServiceNameRegisterRemoteWorker.class);
+
+ public ServiceNameRegisterRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return ServiceNameRegisterRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(ServiceName serviceName) throws WorkerException {
+ onNext(serviceName);
+ }
+
+ @Override public Selector selector() {
+ return Selector.ForeverFirst;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public ServiceNameRegisterRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceNameRegisterRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameRegisterSerialWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameRegisterSerialWorker.java
new file mode 100644
index 000000000..f0b8a6708
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameRegisterSerialWorker.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.agent.stream.IdAutoIncrement;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ServiceIdCacheService;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.dao.IServiceNameRegisterDAO;
+import org.skywalking.apm.collector.storage.table.register.ServiceName;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker {
+
+ private final Logger logger = LoggerFactory.getLogger(ServiceNameRegisterSerialWorker.class);
+
+ private final IServiceNameRegisterDAO serviceNameRegisterDAO;
+ private final ServiceIdCacheService serviceIdCacheService;
+
+ public ServiceNameRegisterSerialWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ this.serviceNameRegisterDAO = getModuleManager().find(StorageModule.NAME).getService(IServiceNameRegisterDAO.class);
+ this.serviceIdCacheService = getModuleManager().find(CacheModule.NAME).getService(ServiceIdCacheService.class);
+ }
+
+ @Override public int id() {
+ return ServiceNameRegisterSerialWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(ServiceName serviceName) throws WorkerException {
+ logger.debug("register service name: {}, application id: {}", serviceName.getServiceName(), serviceName.getApplicationId());
+ int serviceId = serviceIdCacheService.get(serviceName.getApplicationId(), serviceName.getServiceName());
+ if (serviceId == 0) {
+ ServiceName newServiceName;
+
+ int min = serviceNameRegisterDAO.getMinServiceId();
+ if (min == 0) {
+ ServiceName noneServiceName = new ServiceName("1");
+ noneServiceName.setApplicationId(0);
+ noneServiceName.setServiceId(Const.NONE_SERVICE_ID);
+ noneServiceName.setServiceName(Const.NONE_SERVICE_NAME);
+ serviceNameRegisterDAO.save(noneServiceName);
+
+ newServiceName = new ServiceName("-1");
+ newServiceName.setApplicationId(serviceName.getApplicationId());
+ newServiceName.setServiceId(-1);
+ newServiceName.setServiceName(serviceName.getServiceName());
+ } else {
+ int max = serviceNameRegisterDAO.getMaxServiceId();
+ serviceId = IdAutoIncrement.INSTANCE.increment(min, max);
+
+ newServiceName = new ServiceName(String.valueOf(serviceId));
+ newServiceName.setApplicationId(serviceName.getApplicationId());
+ newServiceName.setServiceId(serviceId);
+ newServiceName.setServiceName(serviceName.getServiceName());
+ }
+ serviceNameRegisterDAO.save(newServiceName);
+ }
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public ServiceNameRegisterSerialWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceNameRegisterSerialWorker(moduleManager);
+ }
+
+ @Override public int queueSize() {
+ return 256;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameService.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameService.java
new file mode 100644
index 000000000..738a595f4
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/register/ServiceNameService.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.register;
+
+import org.skywalking.apm.collector.agent.stream.graph.RegisterStreamGraph;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ServiceIdCacheService;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.storage.table.register.ServiceName;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceNameService {
+
+ private final Logger logger = LoggerFactory.getLogger(ServiceNameService.class);
+
+ private final ModuleManager moduleManager;
+ private final Graph serviceNameRegisterGraph;
+
+ public ServiceNameService(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ this.serviceNameRegisterGraph = GraphManager.INSTANCE.createIfAbsent(RegisterStreamGraph.SERVICE_NAME_REGISTER_GRAPH_ID, ServiceName.class);
+ }
+
+ public int getOrCreate(int applicationId, String serviceName) {
+ ServiceIdCacheService idCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceIdCacheService.class);
+ int serviceId = idCacheService.get(applicationId, serviceName);
+
+ if (serviceId == 0) {
+ ServiceName service = new ServiceName("0");
+ service.setApplicationId(applicationId);
+ service.setServiceName(serviceName);
+ service.setServiceId(0);
+
+ serviceNameRegisterGraph.start(service);
+ }
+ return serviceId;
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/global/GlobalTracePersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/global/GlobalTracePersistenceWorker.java
new file mode 100644
index 000000000..9d4a5d86e
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/global/GlobalTracePersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.global;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO;
+import org.skywalking.apm.collector.storage.table.global.GlobalTrace;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class GlobalTracePersistenceWorker extends PersistenceWorker {
+
+ public GlobalTracePersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IGlobalTracePersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public GlobalTracePersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new GlobalTracePersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/global/GlobalTraceSpanListener.java
similarity index 61%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/global/GlobalTraceSpanListener.java
index 4bcf18729..21436f3aa 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTraceSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/global/GlobalTraceSpanListener.java
@@ -16,21 +16,19 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.global;
+package org.skywalking.apm.collector.agent.stream.worker.trace.global;
import java.util.ArrayList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.GlobalTraceIdsListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.GlobalTraceIdsListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.global.GlobalTraceDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.global.GlobalTrace;
import org.skywalking.apm.network.proto.UniqueId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,7 +45,7 @@ public class GlobalTraceSpanListener implements FirstSpanListener, GlobalTraceId
private long timeBucket;
@Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
this.timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
this.segmentId = segmentId;
@@ -67,20 +65,14 @@ public class GlobalTraceSpanListener implements FirstSpanListener, GlobalTraceId
@Override public void build() {
logger.debug("global trace listener build");
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.GLOBAL_TRACE_GRAPH_ID, GlobalTrace.class);
for (String globalTraceId : globalTraceIds) {
- GlobalTraceDataDefine.GlobalTrace globalTrace = new GlobalTraceDataDefine.GlobalTrace();
+ GlobalTrace globalTrace = new GlobalTrace(segmentId + Const.ID_SPLIT + globalTraceId);
globalTrace.setGlobalTraceId(globalTraceId);
- globalTrace.setId(segmentId + Const.ID_SPLIT + globalTraceId);
globalTrace.setSegmentId(segmentId);
globalTrace.setTimeBucket(timeBucket);
- try {
- logger.debug("send to global trace persistence worker, id: {}", globalTrace.getId());
- context.getClusterWorkerContext().lookup(GlobalTracePersistenceWorker.WorkerRole.INSTANCE).tell(globalTrace.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ graph.start(globalTrace);
}
}
}
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/instance/InstPerformancePersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/instance/InstPerformancePersistenceWorker.java
new file mode 100644
index 000000000..002dc0015
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/instance/InstPerformancePersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.instance;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IInstPerformancePersistenceDAO;
+import org.skywalking.apm.collector.storage.table.instance.InstPerformance;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class InstPerformancePersistenceWorker extends PersistenceWorker {
+
+ public InstPerformancePersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return InstPerformancePersistenceWorker.class.hashCode();
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IInstPerformancePersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public InstPerformancePersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new InstPerformancePersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/instance/InstPerformanceSpanListener.java
similarity index 54%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/instance/InstPerformanceSpanListener.java
index 0ca3d665e..653b829f4 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformanceSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/instance/InstPerformanceSpanListener.java
@@ -16,19 +16,17 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.instance.performance;
+package org.skywalking.apm.collector.agent.stream.worker.trace.instance;
-import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.EntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.instance.InstPerformanceDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.instance.InstPerformance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,35 +43,28 @@ public class InstPerformanceSpanListener implements EntrySpanListener, FirstSpan
private long timeBucket;
@Override
- public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
}
@Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
this.applicationId = applicationId;
- this.instanceId = applicationInstanceId;
+ this.instanceId = instanceId;
this.cost = spanDecorator.getEndTime() - spanDecorator.getStartTime();
timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
-
- InstPerformanceDataDefine.InstPerformance instPerformance = new InstPerformanceDataDefine.InstPerformance();
- instPerformance.setId(timeBucket + Const.ID_SPLIT + instanceId);
+ InstPerformance instPerformance = new InstPerformance(timeBucket + Const.ID_SPLIT + instanceId);
instPerformance.setApplicationId(applicationId);
instPerformance.setInstanceId(instanceId);
instPerformance.setCalls(1);
instPerformance.setCostTotal(cost);
instPerformance.setTimeBucket(timeBucket);
- try {
- logger.debug("send to instance performance persistence worker, id: {}", instPerformance.getId());
- context.getClusterWorkerContext().lookup(InstPerformancePersistenceWorker.WorkerRole.INSTANCE).tell(instPerformance.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.INST_PERFORMANCE_GRAPH_ID, InstPerformance.class);
+ graph.start(instPerformance);
}
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentAggregationWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentAggregationWorker.java
new file mode 100644
index 000000000..1789e4e75
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentAggregationWorker.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.table.node.NodeComponent;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeComponentAggregationWorker extends AggregationWorker {
+
+ public NodeComponentAggregationWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeComponentAggregationWorker.class.hashCode();
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public NodeComponentAggregationWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeComponentAggregationWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentPersistenceWorker.java
new file mode 100644
index 000000000..f1f5a0785
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.INodeComponentPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.node.NodeComponent;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeComponentPersistenceWorker extends PersistenceWorker {
+
+ public NodeComponentPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeComponentPersistenceWorker.class.hashCode();
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(INodeComponentPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public NodeComponentPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeComponentPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentRemoteWorker.java
new file mode 100644
index 000000000..732a4e16d
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentRemoteWorker.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.node.NodeComponent;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeComponentRemoteWorker extends AbstractRemoteWorker {
+
+ public NodeComponentRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeComponentRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(NodeComponent nodeComponent) throws WorkerException {
+ onNext(nodeComponent);
+ }
+
+ @Override public Selector selector() {
+ return Selector.HashCode;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public NodeComponentRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeComponentRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentSpanListener.java
new file mode 100644
index 000000000..0c2ae793a
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeComponentSpanListener.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.EntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.ExitSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.util.Const;
+import org.skywalking.apm.collector.core.util.TimeBucketUtils;
+import org.skywalking.apm.collector.storage.table.node.NodeComponent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeComponentSpanListener implements EntrySpanListener, ExitSpanListener, FirstSpanListener {
+
+ private final Logger logger = LoggerFactory.getLogger(NodeComponentSpanListener.class);
+
+ private List nodeComponents = new ArrayList<>();
+ private long timeBucket;
+
+ @Override
+ public void parseExit(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId) {
+ NodeComponent nodeComponent = new NodeComponent(Const.EMPTY_STRING);
+ nodeComponent.setComponentId(spanDecorator.getComponentId());
+ nodeComponent.setPeerId(spanDecorator.getPeerId());
+
+ String id = String.valueOf(nodeComponent.getComponentId()) + Const.ID_SPLIT + nodeComponent.getPeerId();
+
+ nodeComponent.setId(id);
+ nodeComponents.add(nodeComponent);
+ }
+
+ @Override
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId,
+ String segmentId) {
+ NodeComponent nodeComponent = new NodeComponent(Const.EMPTY_STRING);
+ nodeComponent.setComponentId(spanDecorator.getComponentId());
+ nodeComponent.setPeerId(applicationId);
+
+ String id = String.valueOf(nodeComponent.getComponentId()) + Const.ID_SPLIT + String.valueOf(applicationId);
+ nodeComponent.setId(id);
+
+ nodeComponents.add(nodeComponent);
+ }
+
+ @Override
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
+ String segmentId) {
+ timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
+ }
+
+ @Override public void build() {
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.NODE_COMPONENT_GRAPH_ID, NodeComponent.class);
+
+ nodeComponents.forEach(nodeComponent -> {
+ nodeComponent.setId(timeBucket + Const.ID_SPLIT + nodeComponent.getId());
+ nodeComponent.setTimeBucket(timeBucket);
+ graph.start(nodeComponent);
+ });
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingAggregationWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingAggregationWorker.java
new file mode 100644
index 000000000..b70b5424d
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingAggregationWorker.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.table.node.NodeMapping;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeMappingAggregationWorker extends AggregationWorker {
+
+ public NodeMappingAggregationWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeMappingAggregationWorker.class.hashCode();
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public NodeMappingAggregationWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeMappingAggregationWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingPersistenceWorker.java
new file mode 100644
index 000000000..5bf662bdb
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.INodeMappingPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.node.NodeMapping;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeMappingPersistenceWorker extends PersistenceWorker {
+
+ public NodeMappingPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeMappingPersistenceWorker.class.hashCode();
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(INodeMappingPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public NodeMappingPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeMappingPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingRemoteWorker.java
new file mode 100644
index 000000000..6f8b8fc4e
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingRemoteWorker.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.node.NodeMapping;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeMappingRemoteWorker extends AbstractRemoteWorker {
+
+ public NodeMappingRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeMappingRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(NodeMapping nodeMapping) throws WorkerException {
+ onNext(nodeMapping);
+ }
+
+ @Override public Selector selector() {
+ return Selector.HashCode;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public NodeMappingRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeMappingRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingSpanListener.java
similarity index 50%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingSpanListener.java
index 410830ea8..d1ac5bfaf 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/node/NodeMappingSpanListener.java
@@ -16,22 +16,20 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.node.mapping;
+package org.skywalking.apm.collector.agent.stream.worker.trace.node;
import java.util.ArrayList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.RefsListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.node.NodeMappingDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.node.NodeMapping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -42,40 +40,35 @@ public class NodeMappingSpanListener implements RefsListener, FirstSpanListener
private final Logger logger = LoggerFactory.getLogger(NodeMappingSpanListener.class);
- private List nodeMappings = new ArrayList<>();
+ private List nodeMappings = new ArrayList<>();
private long timeBucket;
- @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int instanceId,
String segmentId) {
logger.debug("node mapping listener parse reference");
- NodeMappingDataDefine.NodeMapping nodeMapping = new NodeMappingDataDefine.NodeMapping();
+ NodeMapping nodeMapping = new NodeMapping(Const.EMPTY_STRING);
nodeMapping.setApplicationId(applicationId);
nodeMapping.setAddressId(referenceDecorator.getNetworkAddressId());
- nodeMapping.setAddress(Const.EMPTY_STRING);
String id = String.valueOf(applicationId) + Const.ID_SPLIT + String.valueOf(nodeMapping.getAddressId());
nodeMapping.setId(id);
nodeMappings.add(nodeMapping);
}
@Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
logger.debug("node mapping listener build");
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.NODE_MAPPING_GRAPH_ID, NodeMapping.class);
- for (NodeMappingDataDefine.NodeMapping nodeMapping : nodeMappings) {
- try {
- nodeMapping.setId(timeBucket + Const.ID_SPLIT + nodeMapping.getId());
- nodeMapping.setTimeBucket(timeBucket);
- logger.debug("send to node mapping aggregation worker, id: {}", nodeMapping.getId());
- context.getClusterWorkerContext().lookup(NodeMappingAggregationWorker.WorkerRole.INSTANCE).tell(nodeMapping.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ for (NodeMapping nodeMapping : nodeMappings) {
+ nodeMapping.setId(timeBucket + Const.ID_SPLIT + nodeMapping.getId());
+ nodeMapping.setTimeBucket(timeBucket);
+ logger.debug("send to node mapping aggregation worker, id: {}", nodeMapping.getId());
+ graph.start(nodeMapping);
}
}
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceAggregationWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceAggregationWorker.java
new file mode 100644
index 000000000..9b3156065
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceAggregationWorker.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.noderef;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.table.noderef.NodeReference;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeReferenceAggregationWorker extends AggregationWorker {
+
+ public NodeReferenceAggregationWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeReferenceAggregationWorker.class.hashCode();
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public NodeReferenceAggregationWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeReferenceAggregationWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferencePersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferencePersistenceWorker.java
new file mode 100644
index 000000000..f03d8ec1e
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferencePersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.noderef;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.INodeReferencePersistenceDAO;
+import org.skywalking.apm.collector.storage.table.noderef.NodeReference;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeReferencePersistenceWorker extends PersistenceWorker {
+
+ public NodeReferencePersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(INodeReferencePersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public NodeReferencePersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeReferencePersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceRemoteWorker.java
new file mode 100644
index 000000000..f12a7a1e7
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceRemoteWorker.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.noderef;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.noderef.NodeReference;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+
+/**
+ * @author peng-yongsheng
+ */
+public class NodeReferenceRemoteWorker extends AbstractRemoteWorker {
+
+ public NodeReferenceRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return NodeReferenceRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(NodeReference nodeReference) throws WorkerException {
+ onNext(nodeReference);
+ }
+
+ @Override public Selector selector() {
+ return Selector.HashCode;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public NodeReferenceRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new NodeReferenceRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceSpanListener.java
similarity index 60%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceSpanListener.java
index ccbcd8189..4ea030d43 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/noderef/NodeReferenceSpanListener.java
@@ -16,25 +16,25 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.noderef;
+package org.skywalking.apm.collector.agent.stream.worker.trace.noderef;
import java.util.LinkedList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.cache.InstanceCache;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.EntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.ExitSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.RefsListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.InstanceCacheService;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
import org.skywalking.apm.collector.core.util.CollectionUtils;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.noderef.NodeReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,15 +45,21 @@ public class NodeReferenceSpanListener implements EntrySpanListener, ExitSpanLis
private final Logger logger = LoggerFactory.getLogger(NodeReferenceSpanListener.class);
- private List nodeReferences = new LinkedList<>();
- private List references = new LinkedList<>();
+ private final InstanceCacheService instanceCacheService;
+ private final List nodeReferences;
+ private final List references;
+
+ public NodeReferenceSpanListener(ModuleManager moduleManager) {
+ this.nodeReferences = new LinkedList<>();
+ this.references = new LinkedList<>();
+ this.instanceCacheService = moduleManager.find(CacheModule.NAME).getService(InstanceCacheService.class);
+ }
@Override
- public void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) {
- NodeReferenceDataDefine.NodeReference nodeReference = new NodeReferenceDataDefine.NodeReference();
+ public void parseExit(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId) {
+ NodeReference nodeReference = new NodeReference(Const.EMPTY_STRING);
nodeReference.setFrontApplicationId(applicationId);
nodeReference.setBehindApplicationId(spanDecorator.getPeerId());
- nodeReference.setBehindPeer(Const.EMPTY_STRING);
nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime()));
StringBuilder idBuilder = new StringBuilder();
@@ -65,7 +71,7 @@ public class NodeReferenceSpanListener implements EntrySpanListener, ExitSpanLis
}
@Override
- public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
if (CollectionUtils.isNotEmpty(references)) {
references.forEach(nodeReference -> {
@@ -77,10 +83,9 @@ public class NodeReferenceSpanListener implements EntrySpanListener, ExitSpanLis
nodeReferences.add(buildNodeRefSum(nodeReference, spanDecorator.getStartTime(), spanDecorator.getEndTime(), spanDecorator.getIsError()));
});
} else {
- NodeReferenceDataDefine.NodeReference nodeReference = new NodeReferenceDataDefine.NodeReference();
+ NodeReference nodeReference = new NodeReference(Const.EMPTY_STRING);
nodeReference.setFrontApplicationId(Const.USER_ID);
nodeReference.setBehindApplicationId(applicationId);
- nodeReference.setBehindPeer(Const.EMPTY_STRING);
nodeReference.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime()));
String idBuilder = String.valueOf(nodeReference.getTimeBucket()) + Const.ID_SPLIT + nodeReference.getFrontApplicationId() +
@@ -91,42 +96,35 @@ public class NodeReferenceSpanListener implements EntrySpanListener, ExitSpanLis
}
}
- @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int instanceId,
String segmentId) {
- int parentApplicationId = InstanceCache.get(referenceDecorator.getParentApplicationInstanceId());
+ int parentApplicationId = instanceCacheService.get(referenceDecorator.getParentApplicationInstanceId());
- NodeReferenceDataDefine.NodeReference referenceSum = new NodeReferenceDataDefine.NodeReference();
+ NodeReference referenceSum = new NodeReference(Const.EMPTY_STRING);
referenceSum.setFrontApplicationId(parentApplicationId);
referenceSum.setBehindApplicationId(applicationId);
- referenceSum.setBehindPeer(Const.EMPTY_STRING);
references.add(referenceSum);
}
@Override public void build() {
logger.debug("node reference summary listener build");
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
-
- for (NodeReferenceDataDefine.NodeReference nodeReference : nodeReferences) {
- try {
- logger.debug("send to node reference summary aggregation worker, id: {}", nodeReference.getId());
- context.getClusterWorkerContext().lookup(NodeReferenceAggregationWorker.WorkerRole.INSTANCE).tell(nodeReference.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.NODE_REFERENCE_GRAPH_ID, NodeReference.class);
+ for (NodeReference nodeReference : nodeReferences) {
+ graph.start(nodeReference);
}
}
- private NodeReferenceDataDefine.NodeReference buildNodeRefSum(NodeReferenceDataDefine.NodeReference reference,
+ private NodeReference buildNodeRefSum(NodeReference reference,
long startTime, long endTime, boolean isError) {
long cost = endTime - startTime;
if (cost <= 1000 && !isError) {
- reference.setS1LTE(1);
+ reference.setS1Lte(1);
} else if (1000 < cost && cost <= 3000 && !isError) {
- reference.setS3LTE(1);
+ reference.setS3Lte(1);
} else if (3000 < cost && cost <= 5000 && !isError) {
- reference.setS5LTE(1);
+ reference.setS5Lte(1);
} else if (5000 < cost && !isError) {
- reference.setS5GT(1);
+ reference.setS5Gt(1);
} else {
reference.setError(1);
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentCostPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentCostPersistenceWorker.java
new file mode 100644
index 000000000..ec6c4c2ea
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentCostPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.segment;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.ISegmentCostPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.segment.SegmentCost;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class SegmentCostPersistenceWorker extends PersistenceWorker {
+
+ public SegmentCostPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return SegmentCostPersistenceWorker.class.hashCode();
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(ISegmentCostPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public SegmentCostPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new SegmentCostPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentCostSpanListener.java
similarity index 55%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentCostSpanListener.java
index 405e6d8c6..edd68f652 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentCostSpanListener.java
@@ -16,23 +16,24 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.segment.cost;
+package org.skywalking.apm.collector.agent.stream.worker.trace.segment;
import java.util.ArrayList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.LocalSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.cache.ServiceNameCache;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.EntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.ExitSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.LocalSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ServiceNameCacheService;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.segment.SegmentCost;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -43,16 +44,22 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
private final Logger logger = LoggerFactory.getLogger(SegmentCostSpanListener.class);
- private List segmentCosts = new ArrayList<>();
+ private final List segmentCosts;
+ private final ServiceNameCacheService serviceNameCacheService;
private boolean isError = false;
private long timeBucket;
+ public SegmentCostSpanListener(ModuleManager moduleManager) {
+ this.segmentCosts = new ArrayList<>();
+ this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class);
+ }
+
@Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
- SegmentCostDataDefine.SegmentCost segmentCost = new SegmentCostDataDefine.SegmentCost();
+ SegmentCost segmentCost = new SegmentCost(Const.EMPTY_STRING);
segmentCost.setSegmentId(segmentId);
segmentCost.setApplicationId(applicationId);
segmentCost.setCost(spanDecorator.getEndTime() - spanDecorator.getStartTime());
@@ -62,7 +69,7 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
if (spanDecorator.getOperationNameId() == 0) {
segmentCost.setServiceName(spanDecorator.getOperationName());
} else {
- segmentCost.setServiceName(ServiceNameCache.getSplitServiceName(ServiceNameCache.get(spanDecorator.getOperationNameId())));
+ segmentCost.setServiceName(serviceNameCacheService.getSplitServiceName(serviceNameCacheService.get(spanDecorator.getOperationNameId())));
}
segmentCosts.add(segmentCost);
@@ -70,35 +77,29 @@ public class SegmentCostSpanListener implements EntrySpanListener, ExitSpanListe
}
@Override
- public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
isError = isError || spanDecorator.getIsError();
}
@Override
- public void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) {
+ public void parseExit(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId) {
isError = isError || spanDecorator.getIsError();
}
@Override
- public void parseLocal(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseLocal(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
isError = isError || spanDecorator.getIsError();
}
@Override public void build() {
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.SEGMENT_COST_GRAPH_ID, SegmentCost.class);
logger.debug("segment cost listener build");
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
-
- for (SegmentCostDataDefine.SegmentCost segmentCost : segmentCosts) {
- segmentCost.setError(isError);
+ for (SegmentCost segmentCost : segmentCosts) {
+ segmentCost.setIsError(isError);
segmentCost.setTimeBucket(timeBucket);
- try {
- logger.debug("send to segment cost persistence worker, id: {}", segmentCost.getId());
- context.getClusterWorkerContext().lookup(SegmentCostPersistenceWorker.WorkerRole.INSTANCE).tell(segmentCost.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ graph.start(segmentCost);
}
}
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentPersistenceWorker.java
new file mode 100644
index 000000000..79f70cc53
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/segment/SegmentPersistenceWorker.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.segment;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.segment.Segment;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class SegmentPersistenceWorker extends PersistenceWorker {
+
+ public SegmentPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return false;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(ISegmentPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public SegmentPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new SegmentPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryAggregationWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryAggregationWorker.java
new file mode 100644
index 000000000..840de19e0
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryAggregationWorker.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.service;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.table.service.ServiceEntry;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceEntryAggregationWorker extends AggregationWorker {
+
+ public ServiceEntryAggregationWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return ServiceEntryAggregationWorker.class.hashCode();
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public ServiceEntryAggregationWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceEntryAggregationWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryPersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryPersistenceWorker.java
new file mode 100644
index 000000000..f40d55b6e
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryPersistenceWorker.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.service;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IServiceEntryPersistenceDAO;
+import org.skywalking.apm.collector.storage.table.service.ServiceEntry;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceEntryPersistenceWorker extends PersistenceWorker {
+
+ public ServiceEntryPersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IServiceEntryPersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public ServiceEntryPersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceEntryPersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryRemoteWorker.java
new file mode 100644
index 000000000..6265f458e
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntryRemoteWorker.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.service;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.service.ServiceEntry;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceEntryRemoteWorker extends AbstractRemoteWorker {
+
+ public ServiceEntryRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return ServiceEntryRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(ServiceEntry serviceEntry) throws WorkerException {
+ onNext(serviceEntry);
+ }
+
+ @Override public Selector selector() {
+ return Selector.HashCode;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public ServiceEntryRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceEntryRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntrySpanListener.java
similarity index 54%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntrySpanListener.java
index 17db7484a..0312bbf6d 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntrySpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/service/ServiceEntrySpanListener.java
@@ -16,22 +16,22 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.service.entry;
+package org.skywalking.apm.collector.agent.stream.worker.trace.service;
-import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.cache.ServiceNameCache;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.EntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.RefsListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.cache.CacheModule;
+import org.skywalking.apm.collector.cache.service.ServiceNameCacheService;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
+import org.skywalking.apm.collector.core.module.ModuleManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.service.ServiceEntryDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.service.ServiceEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,45 +48,45 @@ public class ServiceEntrySpanListener implements RefsListener, FirstSpanListener
private int entryServiceId;
private String entryServiceName;
private boolean hasEntry = false;
+ private final ServiceNameCacheService serviceNameCacheService;
+
+ public ServiceEntrySpanListener(ModuleManager moduleManager) {
+ this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class);
+ }
@Override
- public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
this.applicationId = applicationId;
this.entryServiceId = spanDecorator.getOperationNameId();
- this.entryServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(entryServiceId));
+ this.entryServiceName = serviceNameCacheService.getSplitServiceName(serviceNameCacheService.get(entryServiceId));
this.hasEntry = true;
}
- @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int applicationInstanceId,
+ @Override public void parseRef(ReferenceDecorator referenceDecorator, int applicationId, int instanceId,
String segmentId) {
hasReference = true;
}
@Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
@Override public void build() {
logger.debug("entry service listener build");
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
if (!hasReference && hasEntry) {
- ServiceEntryDataDefine.ServiceEntry serviceEntry = new ServiceEntryDataDefine.ServiceEntry();
- serviceEntry.setId(applicationId + Const.ID_SPLIT + entryServiceId);
+ ServiceEntry serviceEntry = new ServiceEntry(applicationId + Const.ID_SPLIT + entryServiceId);
serviceEntry.setApplicationId(applicationId);
serviceEntry.setEntryServiceId(entryServiceId);
serviceEntry.setEntryServiceName(entryServiceName);
serviceEntry.setRegisterTime(timeBucket);
serviceEntry.setNewestTime(timeBucket);
- try {
- logger.debug("send to service entry aggregation worker, id: {}", serviceEntry.getId());
- context.getClusterWorkerContext().lookup(ServiceEntryAggregationWorker.WorkerRole.INSTANCE).tell(serviceEntry.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ logger.debug("send to service entry aggregation worker, id: {}", serviceEntry.getId());
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.SERVICE_ENTRY_GRAPH_ID, ServiceEntry.class);
+ graph.start(serviceEntry);
}
}
}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceAggregationWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceAggregationWorker.java
new file mode 100644
index 000000000..9f00ea395
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceAggregationWorker.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.serviceref;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceReferenceAggregationWorker extends AggregationWorker {
+
+ public ServiceReferenceAggregationWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return ServiceReferenceAggregationWorker.class.hashCode();
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public ServiceReferenceAggregationWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceReferenceAggregationWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferencePersistenceWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferencePersistenceWorker.java
new file mode 100644
index 000000000..13a72965a
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferencePersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.serviceref;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.queue.service.QueueCreatorService;
+import org.skywalking.apm.collector.storage.StorageModule;
+import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import org.skywalking.apm.collector.storage.dao.IServiceReferencePersistenceDAO;
+import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference;
+import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceReferencePersistenceWorker extends PersistenceWorker {
+
+ public ServiceReferencePersistenceWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return 0;
+ }
+
+ @Override protected boolean needMergeDBData() {
+ return true;
+ }
+
+ @Override protected IPersistenceDAO persistenceDAO() {
+ return getModuleManager().find(StorageModule.NAME).getService(IServiceReferencePersistenceDAO.class);
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, QueueCreatorService queueCreatorService) {
+ super(moduleManager, queueCreatorService);
+ }
+
+ @Override public ServiceReferencePersistenceWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceReferencePersistenceWorker(moduleManager);
+ }
+
+ @Override
+ public int queueSize() {
+ return 1024;
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceRemoteWorker.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceRemoteWorker.java
new file mode 100644
index 000000000..4582a2522
--- /dev/null
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceRemoteWorker.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2017, OpenSkywalking Organization All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Project repository: https://github.com/OpenSkywalking/skywalking
+ */
+
+package org.skywalking.apm.collector.agent.stream.worker.trace.serviceref;
+
+import org.skywalking.apm.collector.core.module.ModuleManager;
+import org.skywalking.apm.collector.remote.service.RemoteSenderService;
+import org.skywalking.apm.collector.remote.service.Selector;
+import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorker;
+import org.skywalking.apm.collector.stream.worker.base.AbstractRemoteWorkerProvider;
+import org.skywalking.apm.collector.stream.worker.base.WorkerException;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ServiceReferenceRemoteWorker extends AbstractRemoteWorker {
+
+ public ServiceReferenceRemoteWorker(ModuleManager moduleManager) {
+ super(moduleManager);
+ }
+
+ @Override public int id() {
+ return ServiceReferenceRemoteWorker.class.hashCode();
+ }
+
+ @Override protected void onWork(ServiceReference serviceReference) throws WorkerException {
+ onNext(serviceReference);
+ }
+
+ @Override public Selector selector() {
+ return Selector.HashCode;
+ }
+
+ public static class Factory extends AbstractRemoteWorkerProvider {
+
+ public Factory(ModuleManager moduleManager, RemoteSenderService remoteSenderService, int graphId) {
+ super(moduleManager, remoteSenderService, graphId);
+ }
+
+ @Override public ServiceReferenceRemoteWorker workerInstance(ModuleManager moduleManager) {
+ return new ServiceReferenceRemoteWorker(moduleManager);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceSpanListener.java
similarity index 58%
rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
rename to apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceSpanListener.java
index dc7a0cb65..45aa2a1e3 100644
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceSpanListener.java
+++ b/apm-collector/apm-collector-agent/collector-agent-stream/src/main/java/org/skywalking/apm/collector/agent/stream/worker/trace/serviceref/ServiceReferenceSpanListener.java
@@ -16,23 +16,21 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
-package org.skywalking.apm.collector.agentstream.worker.serviceref;
+package org.skywalking.apm.collector.agent.stream.worker.trace.serviceref;
import java.util.LinkedList;
import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.RefsListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.ReferenceDecorator;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph;
+import org.skywalking.apm.collector.agent.stream.parser.EntrySpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.FirstSpanListener;
+import org.skywalking.apm.collector.agent.stream.parser.RefsListener;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator;
+import org.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator;
+import org.skywalking.apm.collector.core.graph.Graph;
+import org.skywalking.apm.collector.core.graph.GraphManager;
import org.skywalking.apm.collector.core.util.Const;
import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
+import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,7 +50,7 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
private boolean hasEntry = false;
@Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseFirst(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
}
@@ -63,7 +61,7 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
}
@Override
- public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
+ public void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId,
String segmentId) {
serviceId = spanDecorator.getOperationNameId();
startTime = spanDecorator.getStartTime();
@@ -72,78 +70,69 @@ public class ServiceReferenceSpanListener implements FirstSpanListener, EntrySpa
this.hasEntry = true;
}
- private void calculateCost(ServiceReferenceDataDefine.ServiceReference serviceReference, long startTime,
- long endTime,
- boolean isError) {
+ private void calculateCost(ServiceReference serviceReference, long startTime,
+ long endTime, boolean isError) {
long cost = endTime - startTime;
if (cost <= 1000 && !isError) {
- serviceReference.setS1Lte(1);
+ serviceReference.setS1Lte(1L);
} else if (1000 < cost && cost <= 3000 && !isError) {
- serviceReference.setS3Lte(1);
+ serviceReference.setS3Lte(1L);
} else if (3000 < cost && cost <= 5000 && !isError) {
- serviceReference.setS5Lte(1);
+ serviceReference.setS5Lte(1L);
} else if (5000 < cost && !isError) {
- serviceReference.setS5Gt(1);
+ serviceReference.setS5Gt(1L);
} else {
- serviceReference.setError(1);
+ serviceReference.setError(1L);
}
- serviceReference.setSummary(1);
+ serviceReference.setSummary(1L);
serviceReference.setCostSummary(cost);
}
@Override public void build() {
logger.debug("service reference listener build");
if (hasEntry) {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
-
if (referenceServices.size() > 0) {
referenceServices.forEach(reference -> {
- ServiceReferenceDataDefine.ServiceReference serviceReference = new ServiceReferenceDataDefine.ServiceReference();
+ ServiceReference serviceReference = new ServiceReference(Const.EMPTY_STRING);
int entryServiceId = reference.getEntryServiceId();
int frontServiceId = reference.getParentServiceId();
int behindServiceId = serviceId;
calculateCost(serviceReference, startTime, endTime, isError);
logger.debug("has reference, entryServiceId: {}", entryServiceId);
- sendToAggregationWorker(context, serviceReference, entryServiceId, frontServiceId, behindServiceId);
+ sendToAggregationWorker(serviceReference, entryServiceId, frontServiceId, behindServiceId);
});
} else {
- ServiceReferenceDataDefine.ServiceReference serviceReference = new ServiceReferenceDataDefine.ServiceReference();
+ ServiceReference serviceReference = new ServiceReference(Const.EMPTY_STRING);
int entryServiceId = serviceId;
int frontServiceId = Const.NONE_SERVICE_ID;
int behindServiceId = serviceId;
calculateCost(serviceReference, startTime, endTime, isError);
- sendToAggregationWorker(context, serviceReference, entryServiceId, frontServiceId, behindServiceId);
+ sendToAggregationWorker(serviceReference, entryServiceId, frontServiceId, behindServiceId);
}
}
}
- private void sendToAggregationWorker(StreamModuleContext context,
- ServiceReferenceDataDefine.ServiceReference serviceReference, int entryServiceId, int frontServiceId,
+ private void sendToAggregationWorker(ServiceReference serviceReference, int entryServiceId, int frontServiceId,
int behindServiceId) {
StringBuilder idBuilder = new StringBuilder();
idBuilder.append(timeBucket).append(Const.ID_SPLIT);
idBuilder.append(entryServiceId).append(Const.ID_SPLIT);
serviceReference.setEntryServiceId(entryServiceId);
- serviceReference.setEntryServiceName(Const.EMPTY_STRING);
idBuilder.append(frontServiceId).append(Const.ID_SPLIT);
serviceReference.setFrontServiceId(frontServiceId);
- serviceReference.setFrontServiceName(Const.EMPTY_STRING);
idBuilder.append(behindServiceId);
serviceReference.setBehindServiceId(behindServiceId);
- serviceReference.setBehindServiceName(Const.EMPTY_STRING);
serviceReference.setId(idBuilder.toString());
serviceReference.setTimeBucket(timeBucket);
- try {
- logger.debug("send to service reference aggregation worker, id: {}", serviceReference.getId());
- context.getClusterWorkerContext().lookup(ServiceReferenceAggregationWorker.WorkerRole.INSTANCE).tell(serviceReference.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
+ logger.debug("send to service reference aggregation worker, id: {}", serviceReference.getId());
+
+ Graph graph = GraphManager.INSTANCE.createIfAbsent(TraceStreamGraph.SERVICE_REFERENCE_GRAPH_ID, ServiceReference.class);
+ graph.start(serviceReference);
}
}
diff --git a/apm-collector/apm-collector-agent/pom.xml b/apm-collector/apm-collector-agent/pom.xml
new file mode 100644
index 000000000..bca43c861
--- /dev/null
+++ b/apm-collector/apm-collector-agent/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ apm-collector
+ org.skywalking
+ 3.2.4-2017
+
+ 4.0.0
+
+ apm-collector-agent
+ pom
+
+ collector-agent-define
+ collector-agent-jetty-provider
+ collector-agent-grpc-provider
+ collector-agent-stream
+
+
+
+
+ org.skywalking
+ apm-collector-core
+ ${project.version}
+
+
+ org.skywalking
+ collector-cluster-define
+ ${project.version}
+
+
+ org.skywalking
+ collector-naming-define
+ ${project.version}
+
+
+
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
deleted file mode 100644
index 5e59f8e74..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.grpc.handler;
-
-import io.grpc.stub.StreamObserver;
-import java.util.List;
-import org.skywalking.apm.collector.agentjvm.worker.cpu.CpuMetricPersistenceWorker;
-import org.skywalking.apm.collector.agentjvm.worker.gc.GCMetricPersistenceWorker;
-import org.skywalking.apm.collector.agentjvm.worker.heartbeat.InstHeartBeatPersistenceWorker;
-import org.skywalking.apm.collector.agentjvm.worker.heartbeat.define.InstanceHeartBeatDataDefine;
-import org.skywalking.apm.collector.agentjvm.worker.memory.MemoryMetricPersistenceWorker;
-import org.skywalking.apm.collector.agentjvm.worker.memorypool.MemoryPoolMetricPersistenceWorker;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.server.grpc.GRPCHandler;
-import org.skywalking.apm.collector.storage.define.jvm.CpuMetricDataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.GCMetricDataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricDataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.network.proto.CPU;
-import org.skywalking.apm.network.proto.Downstream;
-import org.skywalking.apm.network.proto.GC;
-import org.skywalking.apm.network.proto.JVMMetrics;
-import org.skywalking.apm.network.proto.JVMMetricsServiceGrpc;
-import org.skywalking.apm.network.proto.Memory;
-import org.skywalking.apm.network.proto.MemoryPool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler {
-
- private final Logger logger = LoggerFactory.getLogger(JVMMetricsServiceHandler.class);
-
- @Override public void collect(JVMMetrics request, StreamObserver responseObserver) {
- int instanceId = request.getApplicationInstanceId();
- logger.debug("receive the jvm metric from application instance, id: {}", instanceId);
-
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
- request.getMetricsList().forEach(metric -> {
- long time = TimeBucketUtils.INSTANCE.getSecondTimeBucket(metric.getTime());
- senToInstanceHeartBeatPersistenceWorker(context, instanceId, metric.getTime());
- sendToCpuMetricPersistenceWorker(context, instanceId, time, metric.getCpu());
- sendToMemoryMetricPersistenceWorker(context, instanceId, time, metric.getMemoryList());
- sendToMemoryPoolMetricPersistenceWorker(context, instanceId, time, metric.getMemoryPoolList());
- sendToGCMetricPersistenceWorker(context, instanceId, time, metric.getGcList());
- });
-
- responseObserver.onNext(Downstream.newBuilder().build());
- responseObserver.onCompleted();
- }
-
- private void senToInstanceHeartBeatPersistenceWorker(StreamModuleContext context, int instanceId,
- long heartBeatTime) {
- InstanceHeartBeatDataDefine.InstanceHeartBeat heartBeat = new InstanceHeartBeatDataDefine.InstanceHeartBeat();
- heartBeat.setId(String.valueOf(instanceId));
- heartBeat.setHeartBeatTime(TimeBucketUtils.INSTANCE.getSecondTimeBucket(heartBeatTime));
- heartBeat.setInstanceId(instanceId);
- try {
- logger.debug("send to instance heart beat persistence worker, id: {}", heartBeat.getId());
- context.getClusterWorkerContext().lookup(InstHeartBeatPersistenceWorker.WorkerRole.INSTANCE).tell(heartBeat.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
- private void sendToCpuMetricPersistenceWorker(StreamModuleContext context, int instanceId,
- long timeBucket, CPU cpu) {
- CpuMetricDataDefine.CpuMetric cpuMetric = new CpuMetricDataDefine.CpuMetric();
- cpuMetric.setId(timeBucket + Const.ID_SPLIT + instanceId);
- cpuMetric.setInstanceId(instanceId);
- cpuMetric.setUsagePercent(cpu.getUsagePercent());
- cpuMetric.setTimeBucket(timeBucket);
- try {
- logger.debug("send to cpu metric persistence worker, id: {}", cpuMetric.getId());
- context.getClusterWorkerContext().lookup(CpuMetricPersistenceWorker.WorkerRole.INSTANCE).tell(cpuMetric.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
- }
-
- private void sendToMemoryMetricPersistenceWorker(StreamModuleContext context, int instanceId,
- long timeBucket, List memories) {
-
- memories.forEach(memory -> {
- MemoryMetricDataDefine.MemoryMetric memoryMetric = new MemoryMetricDataDefine.MemoryMetric();
- memoryMetric.setId(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(memory.getIsHeap()));
- memoryMetric.setApplicationInstanceId(instanceId);
- memoryMetric.setHeap(memory.getIsHeap());
- memoryMetric.setInit(memory.getInit());
- memoryMetric.setMax(memory.getMax());
- memoryMetric.setUsed(memory.getUsed());
- memoryMetric.setCommitted(memory.getCommitted());
- memoryMetric.setTimeBucket(timeBucket);
- try {
- logger.debug("send to memory metric persistence worker, id: {}", memoryMetric.getId());
- context.getClusterWorkerContext().lookup(MemoryMetricPersistenceWorker.WorkerRole.INSTANCE).tell(memoryMetric.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
- });
- }
-
- private void sendToMemoryPoolMetricPersistenceWorker(StreamModuleContext context, int instanceId,
- long timeBucket, List memoryPools) {
-
- memoryPools.forEach(memoryPool -> {
- MemoryPoolMetricDataDefine.MemoryPoolMetric memoryPoolMetric = new MemoryPoolMetricDataDefine.MemoryPoolMetric();
- memoryPoolMetric.setId(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(memoryPool.getType().getNumber()));
- memoryPoolMetric.setInstanceId(instanceId);
- memoryPoolMetric.setPoolType(memoryPool.getType().getNumber());
- memoryPoolMetric.setInit(memoryPool.getInit());
- memoryPoolMetric.setMax(memoryPool.getMax());
- memoryPoolMetric.setUsed(memoryPool.getUsed());
- memoryPoolMetric.setCommitted(memoryPool.getCommited());
- memoryPoolMetric.setTimeBucket(timeBucket);
- try {
- logger.debug("send to memory pool metric persistence worker, id: {}", memoryPoolMetric.getId());
- context.getClusterWorkerContext().lookup(MemoryPoolMetricPersistenceWorker.WorkerRole.INSTANCE).tell(memoryPoolMetric.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
- });
- }
-
- private void sendToGCMetricPersistenceWorker(StreamModuleContext context, int instanceId,
- long timeBucket, List gcs) {
- gcs.forEach(gc -> {
- GCMetricDataDefine.GCMetric gcMetric = new GCMetricDataDefine.GCMetric();
- gcMetric.setId(timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + String.valueOf(gc.getPhraseValue()));
- gcMetric.setInstanceId(instanceId);
- gcMetric.setPhrase(gc.getPhraseValue());
- gcMetric.setCount(gc.getCount());
- gcMetric.setTime(gc.getTime());
- gcMetric.setTimeBucket(timeBucket);
- try {
- logger.debug("send to gc metric persistence worker, id: {}", gcMetric.getId());
- context.getClusterWorkerContext().lookup(GCMetricPersistenceWorker.WorkerRole.INSTANCE).tell(gcMetric.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
- });
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/CpuMetricPersistenceWorker.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/CpuMetricPersistenceWorker.java
deleted file mode 100644
index 562db2c01..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/CpuMetricPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.cpu;
-
-import org.skywalking.apm.collector.agentjvm.worker.cpu.dao.ICpuMetricDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.CpuMetricDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.RollingSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class CpuMetricPersistenceWorker extends PersistenceWorker {
-
- public CpuMetricPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return false;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public CpuMetricPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new CpuMetricPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return CpuMetricPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new RollingSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new CpuMetricDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricEsDAO.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricEsDAO.java
deleted file mode 100644
index 03b42d710..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricEsDAO.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.cpu.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequestBuilder;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable;
-import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class CpuMetricEsDAO extends EsDAO implements ICpuMetricDAO, IPersistenceDAO {
-
- private final Logger logger = LoggerFactory.getLogger(CpuMetricEsDAO.class);
-
- @Override public Data get(String id, DataDefine dataDefine) {
- return null;
- }
-
- @Override public IndexRequestBuilder prepareBatchInsert(Data data) {
- Map source = new HashMap<>();
- source.put(CpuMetricTable.COLUMN_INSTANCE_ID, data.getDataInteger(0));
- source.put(CpuMetricTable.COLUMN_USAGE_PERCENT, data.getDataDouble(0));
- source.put(CpuMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
-
- logger.debug("prepare cpu metric batch insert, id: {}", data.getDataString(0));
- return getClient().prepareIndex(CpuMetricTable.TABLE, data.getDataString(0)).setSource(source);
- }
-
- @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) {
- return null;
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/GCMetricPersistenceWorker.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/GCMetricPersistenceWorker.java
deleted file mode 100644
index 68f6151ba..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/GCMetricPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.gc;
-
-import org.skywalking.apm.collector.agentjvm.worker.gc.dao.IGCMetricDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.GCMetricDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.RollingSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class GCMetricPersistenceWorker extends PersistenceWorker {
-
- public GCMetricPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return false;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public GCMetricPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new GCMetricPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return GCMetricPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new RollingSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new GCMetricDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricEsDAO.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricEsDAO.java
deleted file mode 100644
index e48122d56..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricEsDAO.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.gc.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequestBuilder;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable;
-import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-
-/**
- * @author peng-yongsheng
- */
-public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO, IPersistenceDAO {
-
- @Override public Data get(String id, DataDefine dataDefine) {
- return null;
- }
-
- @Override public IndexRequestBuilder prepareBatchInsert(Data data) {
- Map source = new HashMap<>();
- source.put(GCMetricTable.COLUMN_INSTANCE_ID, data.getDataInteger(0));
- source.put(GCMetricTable.COLUMN_PHRASE, data.getDataInteger(1));
- source.put(GCMetricTable.COLUMN_COUNT, data.getDataLong(0));
- source.put(GCMetricTable.COLUMN_TIME, data.getDataLong(1));
- source.put(GCMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(2));
-
- return getClient().prepareIndex(GCMetricTable.TABLE, data.getDataString(0)).setSource(source);
- }
-
- @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) {
- return null;
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricH2DAO.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricH2DAO.java
deleted file mode 100644
index 8657efc96..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/GCMetricH2DAO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.gc.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable;
-import org.skywalking.apm.collector.storage.h2.SqlBuilder;
-import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.storage.h2.define.H2SqlEntity;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-
-/**
- * @author peng-yongsheng, clevertension
- */
-public class GCMetricH2DAO extends H2DAO implements IGCMetricDAO, IPersistenceDAO {
- @Override public Data get(String id, DataDefine dataDefine) {
- return null;
- }
-
- @Override public H2SqlEntity prepareBatchInsert(Data data) {
- H2SqlEntity entity = new H2SqlEntity();
- Map source = new HashMap<>();
- source.put(GCMetricTable.COLUMN_ID, data.getDataString(0));
- source.put(GCMetricTable.COLUMN_INSTANCE_ID, data.getDataInteger(0));
- source.put(GCMetricTable.COLUMN_PHRASE, data.getDataInteger(1));
- source.put(GCMetricTable.COLUMN_COUNT, data.getDataLong(0));
- source.put(GCMetricTable.COLUMN_TIME, data.getDataLong(1));
- source.put(GCMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(2));
-
- String sql = SqlBuilder.buildBatchInsertSql(GCMetricTable.TABLE, source.keySet());
- entity.setSql(sql);
- entity.setParams(source.values().toArray(new Object[0]));
- return entity;
- }
-
- @Override public H2SqlEntity prepareBatchUpdate(Data data) {
- return null;
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/InstHeartBeatPersistenceWorker.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/InstHeartBeatPersistenceWorker.java
deleted file mode 100644
index bd37b9e28..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/InstHeartBeatPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.heartbeat;
-
-import org.skywalking.apm.collector.agentjvm.worker.heartbeat.dao.IInstanceHeartBeatDAO;
-import org.skywalking.apm.collector.agentjvm.worker.heartbeat.define.InstanceHeartBeatDataDefine;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.RollingSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class InstHeartBeatPersistenceWorker extends PersistenceWorker {
-
- public InstHeartBeatPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return true;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(IInstanceHeartBeatDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public InstHeartBeatPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new InstHeartBeatPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return InstHeartBeatPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new RollingSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new InstanceHeartBeatDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/IInstanceHeartBeatDAO.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/IInstanceHeartBeatDAO.java
deleted file mode 100644
index 31603c96f..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/IInstanceHeartBeatDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.heartbeat.dao;
-
-/**
- * @author peng-yongsheng
- */
-public interface IInstanceHeartBeatDAO {
-}
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/define/InstanceHeartBeatDataDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/define/InstanceHeartBeatDataDefine.java
deleted file mode 100644
index 8ab56aff4..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/define/InstanceHeartBeatDataDefine.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.heartbeat.define;
-
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.core.stream.Transform;
-import org.skywalking.apm.collector.core.stream.operate.CoverOperation;
-import org.skywalking.apm.collector.core.stream.operate.NonOperation;
-import org.skywalking.apm.collector.remote.grpc.proto.RemoteData;
-import org.skywalking.apm.collector.storage.define.Attribute;
-import org.skywalking.apm.collector.storage.define.AttributeType;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.InstanceTable;
-
-/**
- * @author peng-yongsheng
- */
-public class InstanceHeartBeatDataDefine extends DataDefine {
-
- @Override protected int initialCapacity() {
- return 3;
- }
-
- @Override protected void attributeDefine() {
- addAttribute(0, new Attribute(InstanceTable.COLUMN_ID, AttributeType.STRING, new NonOperation()));
- addAttribute(1, new Attribute(InstanceTable.COLUMN_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation()));
- addAttribute(2, new Attribute(InstanceTable.COLUMN_HEARTBEAT_TIME, AttributeType.LONG, new CoverOperation()));
- }
-
- @Override public Object deserialize(RemoteData remoteData) {
- String id = remoteData.getDataStrings(0);
- int instanceId = remoteData.getDataIntegers(0);
- long heartBeatTime = remoteData.getDataLongs(0);
- return new InstanceHeartBeat(id, heartBeatTime, instanceId);
- }
-
- @Override public RemoteData serialize(Object object) {
- InstanceHeartBeat instanceHeartBeat = (InstanceHeartBeat)object;
- RemoteData.Builder builder = RemoteData.newBuilder();
- builder.addDataStrings(instanceHeartBeat.getId());
- builder.addDataIntegers(instanceHeartBeat.getInstanceId());
- builder.addDataLongs(instanceHeartBeat.getHeartBeatTime());
- return builder.build();
- }
-
- public static class InstanceHeartBeat implements Transform {
- private String id;
- private long heartBeatTime;
- private int instanceId;
-
- public InstanceHeartBeat(String id, long heartBeatTime, int instanceId) {
- this.id = id;
- this.heartBeatTime = heartBeatTime;
- this.instanceId = instanceId;
- }
-
- public InstanceHeartBeat() {
- }
-
- @Override public Data toData() {
- InstanceHeartBeatDataDefine define = new InstanceHeartBeatDataDefine();
- Data data = define.build(id);
- data.setDataString(0, this.id);
- data.setDataInteger(0, this.instanceId);
- data.setDataLong(0, this.heartBeatTime);
- return data;
- }
-
- @Override public InstanceHeartBeat toSelf(Data data) {
- this.id = data.getDataString(0);
- this.instanceId = data.getDataInteger(0);
- this.heartBeatTime = data.getDataLong(0);
- return this;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public long getHeartBeatTime() {
- return heartBeatTime;
- }
-
- public void setHeartBeatTime(long heartBeatTime) {
- this.heartBeatTime = heartBeatTime;
- }
-
- public int getInstanceId() {
- return instanceId;
- }
-
- public void setInstanceId(int instanceId) {
- this.instanceId = instanceId;
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/MemoryMetricPersistenceWorker.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/MemoryMetricPersistenceWorker.java
deleted file mode 100644
index 00f4b700f..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/MemoryMetricPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.memory;
-
-import org.skywalking.apm.collector.agentjvm.worker.memory.dao.IMemoryMetricDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.RollingSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class MemoryMetricPersistenceWorker extends PersistenceWorker {
-
- public MemoryMetricPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return false;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public MemoryMetricPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new MemoryMetricPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return MemoryMetricPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new RollingSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new MemoryMetricDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/MemoryMetricEsDAO.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/MemoryMetricEsDAO.java
deleted file mode 100644
index 442f42541..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/MemoryMetricEsDAO.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.memory.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequestBuilder;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable;
-import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-
-/**
- * @author peng-yongsheng
- */
-public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO, IPersistenceDAO {
-
- @Override public Data get(String id, DataDefine dataDefine) {
- return null;
- }
-
- @Override public IndexRequestBuilder prepareBatchInsert(Data data) {
- Map source = new HashMap<>();
- source.put(MemoryMetricTable.COLUMN_APPLICATION_INSTANCE_ID, data.getDataInteger(0));
- source.put(MemoryMetricTable.COLUMN_IS_HEAP, data.getDataBoolean(0));
- source.put(MemoryMetricTable.COLUMN_INIT, data.getDataLong(0));
- source.put(MemoryMetricTable.COLUMN_MAX, data.getDataLong(1));
- source.put(MemoryMetricTable.COLUMN_USED, data.getDataLong(2));
- source.put(MemoryMetricTable.COLUMN_COMMITTED, data.getDataLong(3));
- source.put(MemoryMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(4));
-
- return getClient().prepareIndex(MemoryMetricTable.TABLE, data.getDataString(0)).setSource(source);
- }
-
- @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) {
- return null;
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/MemoryMetricH2DAO.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/MemoryMetricH2DAO.java
deleted file mode 100644
index eb4c823eb..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/MemoryMetricH2DAO.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.memory.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable;
-import org.skywalking.apm.collector.storage.h2.SqlBuilder;
-import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.storage.h2.define.H2SqlEntity;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-
-/**
- * @author peng-yongsheng, clevertension
- */
-public class MemoryMetricH2DAO extends H2DAO implements IMemoryMetricDAO, IPersistenceDAO {
- @Override public Data get(String id, DataDefine dataDefine) {
- return null;
- }
-
- @Override public H2SqlEntity prepareBatchInsert(Data data) {
- H2SqlEntity entity = new H2SqlEntity();
- Map source = new HashMap<>();
- source.put(MemoryMetricTable.COLUMN_ID, data.getDataString(0));
- source.put(MemoryMetricTable.COLUMN_APPLICATION_INSTANCE_ID, data.getDataInteger(0));
- source.put(MemoryMetricTable.COLUMN_IS_HEAP, data.getDataBoolean(0));
- source.put(MemoryMetricTable.COLUMN_INIT, data.getDataLong(0));
- source.put(MemoryMetricTable.COLUMN_MAX, data.getDataLong(1));
- source.put(MemoryMetricTable.COLUMN_USED, data.getDataLong(2));
- source.put(MemoryMetricTable.COLUMN_COMMITTED, data.getDataLong(3));
- source.put(MemoryMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(4));
-
- String sql = SqlBuilder.buildBatchInsertSql(MemoryMetricTable.TABLE, source.keySet());
- entity.setSql(sql);
- entity.setParams(source.values().toArray(new Object[0]));
- return entity;
- }
-
- @Override public H2SqlEntity prepareBatchUpdate(Data data) {
- return null;
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/MemoryPoolMetricPersistenceWorker.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/MemoryPoolMetricPersistenceWorker.java
deleted file mode 100644
index 11273ed47..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/MemoryPoolMetricPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.worker.memorypool;
-
-import org.skywalking.apm.collector.agentjvm.worker.memorypool.dao.IMemoryPoolMetricDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.RollingSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class MemoryPoolMetricPersistenceWorker extends PersistenceWorker {
-
- public MemoryPoolMetricPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return false;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public MemoryPoolMetricPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new MemoryPoolMetricPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return MemoryPoolMetricPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new RollingSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new MemoryPoolMetricDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/es_dao.define
deleted file mode 100644
index 13e6077c0..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/es_dao.define
+++ /dev/null
@@ -1,5 +0,0 @@
-org.skywalking.apm.collector.agentjvm.worker.cpu.dao.CpuMetricEsDAO
-org.skywalking.apm.collector.agentjvm.worker.memory.dao.MemoryMetricEsDAO
-org.skywalking.apm.collector.agentjvm.worker.memorypool.dao.MemoryPoolMetricEsDAO
-org.skywalking.apm.collector.agentjvm.worker.gc.dao.GCMetricEsDAO
-org.skywalking.apm.collector.agentjvm.worker.heartbeat.dao.InstanceHeartBeatEsDAO
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/h2_dao.define
deleted file mode 100644
index c6eb797fb..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/h2_dao.define
+++ /dev/null
@@ -1,5 +0,0 @@
-org.skywalking.apm.collector.agentjvm.worker.cpu.dao.CpuMetricH2DAO
-org.skywalking.apm.collector.agentjvm.worker.memory.dao.MemoryMetricH2DAO
-org.skywalking.apm.collector.agentjvm.worker.memorypool.dao.MemoryPoolMetricH2DAO
-org.skywalking.apm.collector.agentjvm.worker.gc.dao.GCMetricH2DAO
-org.skywalking.apm.collector.agentjvm.worker.heartbeat.dao.InstanceHeartBeatH2DAO
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/local_worker_provider.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/local_worker_provider.define
deleted file mode 100644
index 6c21da7db..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/local_worker_provider.define
+++ /dev/null
@@ -1,5 +0,0 @@
-org.skywalking.apm.collector.agentjvm.worker.cpu.CpuMetricPersistenceWorker$Factory
-org.skywalking.apm.collector.agentjvm.worker.memory.MemoryMetricPersistenceWorker$Factory
-org.skywalking.apm.collector.agentjvm.worker.memorypool.MemoryPoolMetricPersistenceWorker$Factory
-org.skywalking.apm.collector.agentjvm.worker.gc.GCMetricPersistenceWorker$Factory
-org.skywalking.apm.collector.agentjvm.worker.heartbeat.InstHeartBeatPersistenceWorker$Factory
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/storage.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/storage.define
deleted file mode 100644
index a4ac32ed2..000000000
--- a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/storage.define
+++ /dev/null
@@ -1,11 +0,0 @@
-org.skywalking.apm.collector.agentjvm.worker.cpu.define.CpuMetricEsTableDefine
-org.skywalking.apm.collector.agentjvm.worker.cpu.define.CpuMetricH2TableDefine
-
-org.skywalking.apm.collector.agentjvm.worker.memory.define.MemoryMetricEsTableDefine
-org.skywalking.apm.collector.agentjvm.worker.memory.define.MemoryMetricH2TableDefine
-
-org.skywalking.apm.collector.agentjvm.worker.memorypool.define.MemoryPoolMetricEsTableDefine
-org.skywalking.apm.collector.agentjvm.worker.memorypool.define.MemoryPoolMetricH2TableDefine
-
-org.skywalking.apm.collector.agentjvm.worker.gc.define.GCMetricEsTableDefine
-org.skywalking.apm.collector.agentjvm.worker.gc.define.GCMetricH2TableDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/test/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandlerTestCase.java b/apm-collector/apm-collector-agentjvm/src/test/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandlerTestCase.java
deleted file mode 100644
index fbb746256..000000000
--- a/apm-collector/apm-collector-agentjvm/src/test/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandlerTestCase.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentjvm.grpc.handler;
-
-import io.grpc.ManagedChannel;
-import io.grpc.ManagedChannelBuilder;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import org.skywalking.apm.network.proto.CPU;
-import org.skywalking.apm.network.proto.GC;
-import org.skywalking.apm.network.proto.GCPhrase;
-import org.skywalking.apm.network.proto.JVMMetric;
-import org.skywalking.apm.network.proto.JVMMetrics;
-import org.skywalking.apm.network.proto.JVMMetricsServiceGrpc;
-import org.skywalking.apm.network.proto.Memory;
-import org.skywalking.apm.network.proto.MemoryPool;
-import org.skywalking.apm.network.proto.PoolType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class JVMMetricsServiceHandlerTestCase {
-
- private final Logger logger = LoggerFactory.getLogger(JVMMetricsServiceHandlerTestCase.class);
-
- private static JVMMetricsServiceGrpc.JVMMetricsServiceBlockingStub STUB;
-
- public static void main(String[] args) {
- ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext(true).build();
- STUB = JVMMetricsServiceGrpc.newBlockingStub(channel);
-
- final long timeInterval = 1;
- Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> multiInstanceJvmSend(), 1, timeInterval, TimeUnit.SECONDS);
- }
-
- public static void multiInstanceJvmSend() {
- buildJvmMetric(2);
- buildJvmMetric(3);
- }
-
- private static void buildJvmMetric(int instanceId) {
- JVMMetrics.Builder jvmMetricsBuilder = JVMMetrics.newBuilder();
- jvmMetricsBuilder.setApplicationInstanceId(instanceId);
-
- JVMMetric.Builder jvmMetric = JVMMetric.newBuilder();
- jvmMetric.setTime(System.currentTimeMillis());
- buildCpuMetric(jvmMetric);
- buildMemoryMetric(jvmMetric);
- buildMemoryPoolMetric(jvmMetric);
- buildGcMetric(jvmMetric);
-
- jvmMetricsBuilder.addMetrics(jvmMetric.build());
- STUB.collect(jvmMetricsBuilder.build());
- }
-
- private static void buildCpuMetric(JVMMetric.Builder jvmMetric) {
- CPU.Builder cpuBuilder = CPU.newBuilder();
- cpuBuilder.setUsagePercent(70);
- jvmMetric.setCpu(cpuBuilder);
- }
-
- private static void buildMemoryMetric(JVMMetric.Builder jvmMetric) {
- Memory.Builder builderHeap = Memory.newBuilder();
- builderHeap.setIsHeap(true);
- builderHeap.setInit(20);
- builderHeap.setMax(100);
- builderHeap.setUsed(50);
- builderHeap.setCommitted(30);
- jvmMetric.addMemory(builderHeap.build());
-
- Memory.Builder builderNonHeap = Memory.newBuilder();
- builderNonHeap.setIsHeap(false);
- builderNonHeap.setInit(200);
- builderNonHeap.setMax(1000);
- builderNonHeap.setUsed(500);
- builderNonHeap.setCommitted(300);
- jvmMetric.addMemory(builderNonHeap.build());
- }
-
- private static void buildMemoryPoolMetric(JVMMetric.Builder jvmMetric) {
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.NEWGEN_USAGE, true).build());
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.NEWGEN_USAGE, false).build());
-
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.OLDGEN_USAGE, true).build());
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.OLDGEN_USAGE, false).build());
-
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.METASPACE_USAGE, true).build());
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.METASPACE_USAGE, false).build());
-
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.PERMGEN_USAGE, true).build());
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.PERMGEN_USAGE, false).build());
-
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.SURVIVOR_USAGE, true).build());
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.SURVIVOR_USAGE, false).build());
-
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.CODE_CACHE_USAGE, true).build());
- jvmMetric.addMemoryPool(buildMemoryPoolMetric(PoolType.CODE_CACHE_USAGE, false).build());
- }
-
- private static MemoryPool.Builder buildMemoryPoolMetric(PoolType poolType, boolean isHeap) {
- MemoryPool.Builder builder = MemoryPool.newBuilder();
- builder.setType(poolType);
- builder.setInit(20);
- builder.setMax(100);
- builder.setUsed(50);
- builder.setCommited(30);
- return builder;
- }
-
- private static void buildGcMetric(JVMMetric.Builder jvmMetric) {
- GC.Builder newGcBuilder = GC.newBuilder();
- newGcBuilder.setPhrase(GCPhrase.NEW);
- newGcBuilder.setCount(2);
- newGcBuilder.setTime(100);
- jvmMetric.addGc(newGcBuilder.build());
-
- GC.Builder oldGcBuilder = GC.newBuilder();
- oldGcBuilder.setPhrase(GCPhrase.OLD);
- oldGcBuilder.setCount(2);
- oldGcBuilder.setTime(100);
- jvmMetric.addGc(oldGcBuilder.build());
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java
deleted file mode 100644
index 20dbb3fd5..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/application/ApplicationIDService.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.application;
-
-import org.skywalking.apm.collector.agentregister.worker.application.ApplicationRegisterRemoteWorker;
-import org.skywalking.apm.collector.cache.ApplicationCache;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ApplicationIDService {
-
- private final Logger logger = LoggerFactory.getLogger(ApplicationIDService.class);
-
- public int getOrCreate(String applicationCode) {
- int applicationId = ApplicationCache.get(applicationCode);
-
- if (applicationId == 0) {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
- ApplicationDataDefine.Application application = new ApplicationDataDefine.Application(applicationCode, applicationCode, 0);
- try {
- context.getClusterWorkerContext().lookup(ApplicationRegisterRemoteWorker.WorkerRole.INSTANCE).tell(application);
- } catch (WorkerNotFoundException | WorkerInvokeException e) {
- logger.error(e.getMessage(), e);
- }
- }
- return applicationId;
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java
deleted file mode 100644
index 01678eef3..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/instance/InstanceIDService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.instance;
-
-import org.skywalking.apm.collector.agentregister.worker.instance.InstanceRegisterRemoteWorker;
-import org.skywalking.apm.collector.agentregister.worker.instance.dao.IInstanceDAO;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class InstanceIDService {
-
- private final Logger logger = LoggerFactory.getLogger(InstanceIDService.class);
-
- public int getOrCreate(int applicationId, String agentUUID, long registerTime, String osInfo) {
- logger.debug("get or create instance id, application id: {}, agentUUID: {}, registerTime: {}, osInfo: {}", applicationId, agentUUID, registerTime, osInfo);
- IInstanceDAO dao = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
- int instanceId = dao.getInstanceId(applicationId, agentUUID);
-
- if (instanceId == 0) {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
- InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance("0", applicationId, agentUUID, registerTime, 0, registerTime, osInfo);
- try {
- context.getClusterWorkerContext().lookup(InstanceRegisterRemoteWorker.WorkerRole.INSTANCE).tell(instance);
- } catch (WorkerNotFoundException | WorkerInvokeException e) {
- logger.error(e.getMessage(), e);
- }
- }
- return instanceId;
- }
-
- public void recover(int instanceId, int applicationId, long registerTime, String osInfo) {
- logger.debug("instance recover, instance id: {}, application id: {}, register time: {}", instanceId, applicationId, registerTime);
- IInstanceDAO dao = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
-
- InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance(String.valueOf(instanceId), applicationId, "", registerTime, instanceId, registerTime, osInfo);
- dao.save(instance);
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/ApplicationRegisterServletHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/ApplicationRegisterServletHandler.java
deleted file mode 100644
index 2c932efde..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/ApplicationRegisterServletHandler.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.jetty.handler;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.agentregister.application.ApplicationIDService;
-import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
-import org.skywalking.apm.collector.server.jetty.JettyHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ApplicationRegisterServletHandler extends JettyHandler {
-
- private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterServletHandler.class);
-
- private ApplicationIDService applicationIDService = new ApplicationIDService();
- private Gson gson = new Gson();
- private static final String APPLICATION_CODE = "c";
- private static final String APPLICATION_ID = "i";
-
- @Override public String pathSpec() {
- return "/application/register";
- }
-
- @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
- throw new UnsupportedOperationException();
- }
-
- @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
- JsonArray responseArray = new JsonArray();
- try {
- 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);
- JsonObject mapping = new JsonObject();
- mapping.addProperty(APPLICATION_CODE, applicationCode);
- mapping.addProperty(APPLICATION_ID, applicationId);
- responseArray.add(mapping);
- }
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return responseArray;
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/InstanceDiscoveryServletHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/InstanceDiscoveryServletHandler.java
deleted file mode 100644
index 1e847b1f3..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/InstanceDiscoveryServletHandler.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.jetty.handler;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.agentregister.instance.InstanceIDService;
-import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
-import org.skywalking.apm.collector.server.jetty.JettyHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class InstanceDiscoveryServletHandler extends JettyHandler {
-
- private final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServletHandler.class);
-
- private InstanceIDService instanceIDService = new InstanceIDService();
- private Gson gson = new Gson();
-
- private static final String APPLICATION_ID = "ai";
- private static final String AGENT_UUID = "au";
- private static final String REGISTER_TIME = "rt";
- private static final String INSTANCE_ID = "ii";
- private static final String OS_INFO = "oi";
-
- @Override public String pathSpec() {
- return "/instance/register";
- }
-
- @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
- throw new UnsupportedOperationException();
- }
-
- @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
- JsonObject responseJson = new JsonObject();
- try {
- JsonObject instance = gson.fromJson(req.getReader(), JsonObject.class);
- int applicationId = instance.get(APPLICATION_ID).getAsInt();
- String agentUUID = instance.get(AGENT_UUID).getAsString();
- long registerTime = instance.get(REGISTER_TIME).getAsLong();
- JsonObject osInfo = instance.get(OS_INFO).getAsJsonObject();
-
- int instanceId = instanceIDService.getOrCreate(applicationId, agentUUID, registerTime, osInfo.toString());
- responseJson.addProperty(APPLICATION_ID, applicationId);
- responseJson.addProperty(INSTANCE_ID, instanceId);
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return responseJson;
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/ServiceNameDiscoveryServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/ServiceNameDiscoveryServiceHandler.java
deleted file mode 100644
index 87f8083d5..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/handler/ServiceNameDiscoveryServiceHandler.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.jetty.handler;
-
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import java.io.IOException;
-import javax.servlet.http.HttpServletRequest;
-import org.skywalking.apm.collector.agentregister.servicename.ServiceNameService;
-import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
-import org.skywalking.apm.collector.server.jetty.JettyHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ServiceNameDiscoveryServiceHandler extends JettyHandler {
-
- private final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryServiceHandler.class);
-
- private ServiceNameService serviceNameService = new ServiceNameService();
- private Gson gson = new Gson();
-
- @Override public String pathSpec() {
- return "/servicename/discovery";
- }
-
- private static final String APPLICATION_ID = "ai";
- private static final String SERVICE_NAME = "sn";
- private static final String SERVICE_ID = "si";
- private static final String ELEMENT = "el";
-
- @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
- throw new UnsupportedOperationException();
- }
-
- @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
- JsonArray responseArray = new JsonArray();
- try {
- JsonArray services = gson.fromJson(req.getReader(), JsonArray.class);
- for (JsonElement service : services) {
- int applicationId = service.getAsJsonObject().get(APPLICATION_ID).getAsInt();
- String serviceName = service.getAsJsonObject().get(SERVICE_NAME).getAsString();
-
- int serviceId = serviceNameService.getOrCreate(applicationId, serviceName);
- if (serviceId != 0) {
- JsonObject responseJson = new JsonObject();
- responseJson.addProperty(SERVICE_ID, serviceId);
- responseJson.add(ELEMENT, service);
- responseArray.add(responseJson);
- }
- }
- } catch (IOException e) {
- logger.error(e.getMessage(), e);
- }
- return responseArray;
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
deleted file mode 100644
index 4f4daa761..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/servicename/ServiceNameService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.servicename;
-
-import org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameRegisterRemoteWorker;
-import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ServiceNameService {
-
- private final Logger logger = LoggerFactory.getLogger(ServiceNameService.class);
-
- public int getOrCreate(int applicationId, String serviceName) {
- IServiceNameCacheDAO dao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName());
- int serviceId = dao.getServiceId(applicationId, serviceName);
-
- if (serviceId == 0) {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
- ServiceNameDataDefine.ServiceName service = new ServiceNameDataDefine.ServiceName("0", serviceName, applicationId, 0);
- try {
- context.getClusterWorkerContext().lookup(ServiceNameRegisterRemoteWorker.WorkerRole.INSTANCE).tell(service);
- } catch (WorkerNotFoundException | WorkerInvokeException e) {
- logger.error(e.getMessage(), e);
- }
- }
- return serviceId;
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterRemoteWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterRemoteWorker.java
deleted file mode 100644
index d29e9a2be..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterRemoteWorker.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.application;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ApplicationRegisterRemoteWorker extends AbstractRemoteWorker {
-
- private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterRemoteWorker.class);
-
- protected ApplicationRegisterRemoteWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- ApplicationDataDefine.Application application = (ApplicationDataDefine.Application)message;
- logger.debug("application code: {}", application.getApplicationCode());
- getClusterContext().lookup(ApplicationRegisterSerialWorker.WorkerRole.INSTANCE).tell(application);
- }
-
- public static class Factory extends AbstractRemoteWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public ApplicationRegisterRemoteWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new ApplicationRegisterRemoteWorker(role(), clusterContext);
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return ApplicationRegisterRemoteWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new ForeverFirstSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new ApplicationDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
deleted file mode 100644
index 2bcc9fb27..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationRegisterSerialWorker.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.application;
-
-import org.skywalking.apm.collector.agentregister.worker.IdAutoIncrement;
-import org.skywalking.apm.collector.agentregister.worker.application.dao.IApplicationDAO;
-import org.skywalking.apm.collector.cache.dao.IApplicationCacheDAO;
-import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ApplicationRegisterSerialWorker extends AbstractLocalAsyncWorker {
-
- private final Logger logger = LoggerFactory.getLogger(ApplicationRegisterSerialWorker.class);
-
- public ApplicationRegisterSerialWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- if (message instanceof ApplicationDataDefine.Application) {
- ApplicationDataDefine.Application application = (ApplicationDataDefine.Application)message;
- logger.debug("register application, application code: {}", application.getApplicationCode());
-
- IApplicationCacheDAO cacheDao = (IApplicationCacheDAO)DAOContainer.INSTANCE.get(IApplicationCacheDAO.class.getName());
- int applicationId = cacheDao.getApplicationId(application.getApplicationCode());
-
- IApplicationDAO dao = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName());
- if (applicationId == 0) {
- int min = dao.getMinApplicationId();
- if (min == 0) {
- ApplicationDataDefine.Application userApplication = new ApplicationDataDefine.Application(String.valueOf(Const.USER_ID), Const.USER_CODE, Const.USER_ID);
- dao.save(userApplication);
-
- application.setApplicationId(-1);
- application.setId("-1");
- } else {
- int max = dao.getMaxApplicationId();
- applicationId = IdAutoIncrement.INSTANCE.increment(min, max);
- application.setApplicationId(applicationId);
- application.setId(String.valueOf(applicationId));
- }
- dao.save(application);
- }
- }
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public ApplicationRegisterSerialWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new ApplicationRegisterSerialWorker(role(), clusterContext);
- }
-
- @Override public int queueSize() {
- return 256;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return ApplicationRegisterSerialWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new ForeverFirstSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new ApplicationDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceRegisterRemoteWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceRegisterRemoteWorker.java
deleted file mode 100644
index e86ac5be8..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceRegisterRemoteWorker.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.instance;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class InstanceRegisterRemoteWorker extends AbstractRemoteWorker {
-
- private final Logger logger = LoggerFactory.getLogger(InstanceRegisterRemoteWorker.class);
-
- protected InstanceRegisterRemoteWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- InstanceDataDefine.Instance instance = (InstanceDataDefine.Instance)message;
- logger.debug("application id: {}, agentUUID: {}, register time: {}", instance.getApplicationId(), instance.getAgentUUID(), instance.getRegisterTime());
- getClusterContext().lookup(InstanceRegisterSerialWorker.WorkerRole.INSTANCE).tell(instance);
- }
-
- public static class Factory extends AbstractRemoteWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public InstanceRegisterRemoteWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new InstanceRegisterRemoteWorker(role(), clusterContext);
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return InstanceRegisterRemoteWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new ForeverFirstSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new InstanceDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceRegisterSerialWorker.java
deleted file mode 100644
index 0c581ec64..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceRegisterSerialWorker.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.instance;
-
-import org.skywalking.apm.collector.agentregister.worker.instance.dao.IInstanceDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine;
-import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class InstanceRegisterSerialWorker extends AbstractLocalAsyncWorker {
-
- private final Logger logger = LoggerFactory.getLogger(InstanceRegisterSerialWorker.class);
-
- public InstanceRegisterSerialWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- if (message instanceof InstanceDataDefine.Instance) {
- InstanceDataDefine.Instance instance = (InstanceDataDefine.Instance)message;
- logger.debug("register instance, application id: {}, agentUUID: {}", instance.getApplicationId(), instance.getAgentUUID());
-
- IInstanceDAO dao = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName());
- int instanceId = dao.getInstanceId(instance.getApplicationId(), instance.getAgentUUID());
- if (instanceId == 0) {
-// int min = dao.getMinInstanceId();
-// if (min == 0) {
-// instance.setId("1");
-// instance.setInstanceId(1);
-// } else {
-// int max = dao.getMaxInstanceId();
-// instanceId = IdAutoIncrement.INSTANCE.increment(min, max);
-// instance.setId(String.valueOf(instanceId));
-// instance.setInstanceId(instanceId);
-// }
- int max = dao.getMaxInstanceId();
- if (max == 0) {
- instance.setId("1");
- instance.setInstanceId(1);
- } else {
- instance.setId(String.valueOf(max + 1));
- instance.setInstanceId(max + 1);
- }
-
- dao.save(instance);
- }
- }
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public InstanceRegisterSerialWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new InstanceRegisterSerialWorker(role(), clusterContext);
- }
-
- @Override public int queueSize() {
- return 256;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return InstanceRegisterSerialWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new ForeverFirstSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new ApplicationDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterRemoteWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterRemoteWorker.java
deleted file mode 100644
index 28708f868..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterRemoteWorker.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.servicename;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ServiceNameRegisterRemoteWorker extends AbstractRemoteWorker {
-
- private final Logger logger = LoggerFactory.getLogger(ServiceNameRegisterRemoteWorker.class);
-
- protected ServiceNameRegisterRemoteWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- ServiceNameDataDefine.ServiceName serviceName = (ServiceNameDataDefine.ServiceName)message;
- logger.debug("service name: {}", serviceName.getServiceName());
- getClusterContext().lookup(ServiceNameRegisterSerialWorker.WorkerRole.INSTANCE).tell(serviceName);
- }
-
- public static class Factory extends AbstractRemoteWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public ServiceNameRegisterRemoteWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new ServiceNameRegisterRemoteWorker(role(), clusterContext);
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return ServiceNameRegisterRemoteWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new ForeverFirstSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new ServiceNameDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
deleted file mode 100644
index ac893e3c4..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameRegisterSerialWorker.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentregister.worker.servicename;
-
-import org.skywalking.apm.collector.agentregister.worker.IdAutoIncrement;
-import org.skywalking.apm.collector.agentregister.worker.servicename.dao.IServiceNameDAO;
-import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO;
-import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ServiceNameRegisterSerialWorker extends AbstractLocalAsyncWorker {
-
- private final Logger logger = LoggerFactory.getLogger(ServiceNameRegisterSerialWorker.class);
-
- public ServiceNameRegisterSerialWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- if (message instanceof ServiceNameDataDefine.ServiceName) {
- ServiceNameDataDefine.ServiceName serviceName = (ServiceNameDataDefine.ServiceName)message;
- logger.debug("register service name: {}, application id: {}", serviceName.getServiceName(), serviceName.getApplicationId());
-
- IServiceNameCacheDAO cacheDao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName());
- int serviceId = cacheDao.getServiceId(serviceName.getApplicationId(), serviceName.getServiceName());
-
- IServiceNameDAO dao = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName());
- if (serviceId == 0) {
- int min = dao.getMinServiceId();
- if (min == 0) {
- ServiceNameDataDefine.ServiceName noneServiceName = new ServiceNameDataDefine.ServiceName("1", Const.NONE_SERVICE_NAME, 0, Const.NONE_SERVICE_ID);
- dao.save(noneServiceName);
-
- serviceName.setServiceId(-1);
- serviceName.setId("-1");
- } else {
- int max = dao.getMaxServiceId();
- serviceId = IdAutoIncrement.INSTANCE.increment(min, max);
- serviceName.setId(String.valueOf(serviceId));
- serviceName.setServiceId(serviceId);
- }
- dao.save(serviceName);
- }
- }
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public ServiceNameRegisterSerialWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new ServiceNameRegisterSerialWorker(role(), clusterContext);
- }
-
- @Override public int queueSize() {
- return 256;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return ServiceNameRegisterSerialWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new ForeverFirstSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new ServiceNameDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/es_dao.define
deleted file mode 100644
index 90d0e020d..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/es_dao.define
+++ /dev/null
@@ -1,3 +0,0 @@
-org.skywalking.apm.collector.agentregister.worker.application.dao.ApplicationEsDAO
-org.skywalking.apm.collector.agentregister.worker.instance.dao.InstanceEsDAO
-org.skywalking.apm.collector.agentregister.worker.servicename.dao.ServiceNameEsDAO
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/h2_dao.define
deleted file mode 100644
index f381c6958..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/h2_dao.define
+++ /dev/null
@@ -1,3 +0,0 @@
-org.skywalking.apm.collector.agentregister.worker.application.dao.ApplicationH2DAO
-org.skywalking.apm.collector.agentregister.worker.instance.dao.InstanceH2DAO
-org.skywalking.apm.collector.agentregister.worker.servicename.dao.ServiceNameH2DAO
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/local_worker_provider.define b/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/local_worker_provider.define
deleted file mode 100644
index 758eed4ba..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/local_worker_provider.define
+++ /dev/null
@@ -1,3 +0,0 @@
-org.skywalking.apm.collector.agentregister.worker.application.ApplicationRegisterSerialWorker$Factory
-org.skywalking.apm.collector.agentregister.worker.instance.InstanceRegisterSerialWorker$Factory
-org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameRegisterSerialWorker$Factory
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/remote_worker_provider.define b/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/remote_worker_provider.define
deleted file mode 100644
index 2dc6e3e73..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/remote_worker_provider.define
+++ /dev/null
@@ -1,3 +0,0 @@
-org.skywalking.apm.collector.agentregister.worker.application.ApplicationRegisterRemoteWorker$Factory
-org.skywalking.apm.collector.agentregister.worker.instance.InstanceRegisterRemoteWorker$Factory
-org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameRegisterRemoteWorker$Factory
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/storage.define b/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/storage.define
deleted file mode 100644
index 52807b047..000000000
--- a/apm-collector/apm-collector-agentregister/src/main/resources/META-INF/defines/storage.define
+++ /dev/null
@@ -1,8 +0,0 @@
-org.skywalking.apm.collector.agentregister.worker.application.ApplicationEsTableDefine
-org.skywalking.apm.collector.agentregister.worker.application.ApplicationH2TableDefine
-
-org.skywalking.apm.collector.agentregister.worker.instance.InstanceEsTableDefine
-org.skywalking.apm.collector.agentregister.worker.instance.InstanceH2TableDefine
-
-org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameEsTableDefine
-org.skywalking.apm.collector.agentregister.worker.servicename.ServiceNameH2TableDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java
deleted file mode 100644
index f4b4a7e0a..000000000
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentserver;
-
-import org.skywalking.apm.collector.core.config.GroupConfigParser;
-import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
-import org.skywalking.apm.collector.core.module.ModuleInstaller;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentServerModuleGroupDefine implements ModuleGroupDefine {
-
- public static final String GROUP_NAME = "agent_server";
- private final AgentServerModuleInstaller installer;
-
- public AgentServerModuleGroupDefine() {
- installer = new AgentServerModuleInstaller();
- }
-
- @Override public String name() {
- return GROUP_NAME;
- }
-
- @Override public Context groupContext() {
- return new AgentServerModuleContext(GROUP_NAME);
- }
-
- @Override public ModuleInstaller moduleInstaller() {
- return installer;
- }
-
- @Override public GroupConfigParser groupConfigParser() {
- return null;
- }
-}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfig.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfig.java
deleted file mode 100644
index 23daa2ff2..000000000
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentserver.jetty;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentServerJettyConfig {
- public static String HOST;
- public static int PORT;
- public static String CONTEXT_PATH;
-}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java
deleted file mode 100644
index 304cc042f..000000000
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyConfigParser.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentserver.jetty;
-
-import java.util.Map;
-import org.skywalking.apm.collector.core.config.ConfigParseException;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.util.ObjectUtils;
-import org.skywalking.apm.collector.core.util.StringUtils;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentServerJettyConfigParser implements ModuleConfigParser {
-
- private static final String HOST = "host";
- private static final String PORT = "port";
- public static final String CONTEXT_PATH = "contextPath";
-
- @Override public void parse(Map config) throws ConfigParseException {
- AgentServerJettyConfig.CONTEXT_PATH = "/";
-
- if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) {
- AgentServerJettyConfig.HOST = "localhost";
- } else {
- AgentServerJettyConfig.HOST = (String)config.get(HOST);
- }
-
- if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) {
- AgentServerJettyConfig.PORT = 10800;
- } else {
- AgentServerJettyConfig.PORT = (Integer)config.get(PORT);
- }
- if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CONTEXT_PATH))) {
- AgentServerJettyConfig.CONTEXT_PATH = (String)config.get(CONTEXT_PATH);
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyModuleDefine.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyModuleDefine.java
deleted file mode 100644
index d2a58edab..000000000
--- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyModuleDefine.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentserver.jetty;
-
-import java.util.LinkedList;
-import java.util.List;
-import org.skywalking.apm.collector.agentserver.AgentServerModuleDefine;
-import org.skywalking.apm.collector.agentserver.AgentServerModuleGroupDefine;
-import org.skywalking.apm.collector.agentserver.jetty.handler.AgentStreamGRPCServerHandler;
-import org.skywalking.apm.collector.agentserver.jetty.handler.AgentStreamJettyServerHandler;
-import org.skywalking.apm.collector.agentserver.jetty.handler.UIJettyServerHandler;
-import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
-import org.skywalking.apm.collector.core.framework.Handler;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.module.ModuleRegistration;
-import org.skywalking.apm.collector.core.server.Server;
-import org.skywalking.apm.collector.server.jetty.JettyServer;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentServerJettyModuleDefine extends AgentServerModuleDefine {
-
- public static final String MODULE_NAME = "jetty";
-
- @Override protected String group() {
- return AgentServerModuleGroupDefine.GROUP_NAME;
- }
-
- @Override public String name() {
- return MODULE_NAME;
- }
-
- @Override public boolean defaultModule() {
- return true;
- }
-
- @Override protected ModuleConfigParser configParser() {
- return new AgentServerJettyConfigParser();
- }
-
- @Override protected Server server() {
- return new JettyServer(AgentServerJettyConfig.HOST, AgentServerJettyConfig.PORT, AgentServerJettyConfig.CONTEXT_PATH);
- }
-
- @Override protected ModuleRegistration registration() {
- return new AgentServerJettyModuleRegistration();
- }
-
- @Override public ClusterDataListener listener() {
- return new AgentServerJettyDataListener();
- }
-
- @Override public List handlerList() {
- List handlers = new LinkedList<>();
- handlers.add(new AgentStreamGRPCServerHandler());
- handlers.add(new AgentStreamJettyServerHandler());
- handlers.add(new UIJettyServerHandler());
- return handlers;
- }
-}
diff --git a/apm-collector/apm-collector-agentserver/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-agentserver/src/main/resources/META-INF/defines/group.define
deleted file mode 100644
index 229ed8a56..000000000
--- a/apm-collector/apm-collector-agentserver/src/main/resources/META-INF/defines/group.define
+++ /dev/null
@@ -1 +0,0 @@
-org.skywalking.apm.collector.agentserver.AgentServerModuleGroupDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentserver/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-agentserver/src/main/resources/META-INF/defines/module.define
deleted file mode 100644
index cdd20e3bf..000000000
--- a/apm-collector/apm-collector-agentserver/src/main/resources/META-INF/defines/module.define
+++ /dev/null
@@ -1 +0,0 @@
-org.skywalking.apm.collector.agentserver.jetty.AgentServerJettyModuleDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java
deleted file mode 100644
index 425b46d59..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupConfigParser.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream;
-
-import java.util.Map;
-import org.skywalking.apm.collector.agentstream.config.BufferFileConfig;
-import org.skywalking.apm.collector.core.config.GroupConfigParser;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamModuleGroupConfigParser implements GroupConfigParser {
-
- private static final String BUFFER_OFFSET_MAX_FILE_SIZE = "buffer_offset_max_file_size";
- private static final String BUFFER_SEGMENT_MAX_FILE_SIZE = "buffer_segment_max_file_size";
-
- @Override public void parse(Map config) {
- if (config.containsKey(GroupConfigParser.NODE_NAME)) {
- Map groupConfig = config.get(GroupConfigParser.NODE_NAME);
-
- if (groupConfig.containsKey(BUFFER_OFFSET_MAX_FILE_SIZE)) {
- String sizeStr = groupConfig.get(BUFFER_OFFSET_MAX_FILE_SIZE).toUpperCase();
- if (sizeStr.endsWith("K")) {
- int size = Integer.parseInt(sizeStr.replace("K", ""));
- BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024;
- } else if (sizeStr.endsWith("KB")) {
- int size = Integer.parseInt(sizeStr.replace("KB", ""));
- BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024;
- } else if (sizeStr.endsWith("M")) {
- int size = Integer.parseInt(sizeStr.replace("M", ""));
- BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024 * 1024;
- } else if (sizeStr.endsWith("MB")) {
- int size = Integer.parseInt(sizeStr.replace("MB", ""));
- BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = size * 1024 * 1024;
- } else {
- BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = 10 * 1024 * 1024;
- }
- } else {
- BufferFileConfig.BUFFER_OFFSET_MAX_FILE_SIZE = 10 * 1024 * 1024;
- }
-
- if (groupConfig.containsKey(BUFFER_SEGMENT_MAX_FILE_SIZE)) {
- String sizeStr = groupConfig.get(BUFFER_SEGMENT_MAX_FILE_SIZE).toUpperCase();
- if (sizeStr.endsWith("K")) {
- int size = Integer.parseInt(sizeStr.replace("K", ""));
- BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024;
- } else if (sizeStr.endsWith("KB")) {
- int size = Integer.parseInt(sizeStr.replace("KB", ""));
- BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024;
- } else if (sizeStr.endsWith("M")) {
- int size = Integer.parseInt(sizeStr.replace("M", ""));
- BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024 * 1024;
- } else if (sizeStr.endsWith("MB")) {
- int size = Integer.parseInt(sizeStr.replace("MB", ""));
- BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = size * 1024 * 1024;
- } else {
- BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = 1024 * 1024;
- }
- } else {
- BufferFileConfig.BUFFER_SEGMENT_MAX_FILE_SIZE = 1024 * 1024;
- }
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java
deleted file mode 100644
index 7b2501cda..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream;
-
-import org.skywalking.apm.collector.core.config.GroupConfigParser;
-import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
-import org.skywalking.apm.collector.core.module.ModuleInstaller;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamModuleGroupDefine implements ModuleGroupDefine {
-
- public static final String GROUP_NAME = "agent_stream";
- private final AgentStreamModuleInstaller installer;
-
- public AgentStreamModuleGroupDefine() {
- installer = new AgentStreamModuleInstaller();
- }
-
- @Override public String name() {
- return GROUP_NAME;
- }
-
- @Override public Context groupContext() {
- return new AgentStreamModuleContext(GROUP_NAME);
- }
-
- @Override public ModuleInstaller moduleInstaller() {
- return installer;
- }
-
- @Override public GroupConfigParser groupConfigParser() {
- return new AgentStreamModuleGroupConfigParser();
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java
deleted file mode 100644
index 416e5007c..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream;
-
-import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.storage.PersistenceTimer;
-import org.skywalking.apm.collector.core.client.ClientException;
-import org.skywalking.apm.collector.core.config.ConfigException;
-import org.skywalking.apm.collector.core.framework.Context;
-import org.skywalking.apm.collector.core.framework.DefineException;
-import org.skywalking.apm.collector.core.module.MultipleModuleInstaller;
-import org.skywalking.apm.collector.core.server.ServerException;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamModuleInstaller extends MultipleModuleInstaller {
-
- @Override public String groupName() {
- return AgentStreamModuleGroupDefine.GROUP_NAME;
- }
-
- @Override public Context moduleContext() {
- return new AgentStreamModuleContext(groupName());
- }
-
- @Override public List dependenceModules() {
- return null;
- }
-
- @Override public void install() throws DefineException, ConfigException, ServerException, ClientException {
- super.install();
- new PersistenceTimer().start();
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfig.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfig.java
deleted file mode 100644
index e98c32df1..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfig.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.grpc;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamGRPCConfig {
- public static String HOST;
- public static int PORT;
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java
deleted file mode 100644
index d9e3ef987..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCConfigParser.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.grpc;
-
-import java.util.Map;
-import org.skywalking.apm.collector.core.config.ConfigParseException;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.util.ObjectUtils;
-import org.skywalking.apm.collector.core.util.StringUtils;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamGRPCConfigParser implements ModuleConfigParser {
-
- private static final String HOST = "host";
- private static final String PORT = "port";
-
- @Override public void parse(Map config) throws ConfigParseException {
- if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) {
- AgentStreamGRPCConfig.HOST = "localhost";
- } else {
- AgentStreamGRPCConfig.HOST = (String)config.get(HOST);
- }
-
- if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) {
- AgentStreamGRPCConfig.PORT = 11800;
- } else {
- AgentStreamGRPCConfig.PORT = (Integer)config.get(PORT);
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCModuleDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCModuleDefine.java
deleted file mode 100644
index 23b643575..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCModuleDefine.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.grpc;
-
-import java.util.LinkedList;
-import java.util.List;
-import org.skywalking.apm.collector.agentjvm.grpc.handler.JVMMetricsServiceHandler;
-import org.skywalking.apm.collector.agentregister.grpc.handler.ApplicationRegisterServiceHandler;
-import org.skywalking.apm.collector.agentregister.grpc.handler.InstanceDiscoveryServiceHandler;
-import org.skywalking.apm.collector.agentregister.grpc.handler.ServiceNameDiscoveryServiceHandler;
-import org.skywalking.apm.collector.agentstream.AgentStreamModuleDefine;
-import org.skywalking.apm.collector.agentstream.AgentStreamModuleGroupDefine;
-import org.skywalking.apm.collector.agentstream.grpc.handler.TraceSegmentServiceHandler;
-import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
-import org.skywalking.apm.collector.core.framework.Handler;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.module.ModuleRegistration;
-import org.skywalking.apm.collector.core.server.Server;
-import org.skywalking.apm.collector.server.grpc.GRPCServer;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamGRPCModuleDefine extends AgentStreamModuleDefine {
-
- public static final String MODULE_NAME = "grpc";
-
- @Override protected String group() {
- return AgentStreamModuleGroupDefine.GROUP_NAME;
- }
-
- @Override public String name() {
- return MODULE_NAME;
- }
-
- @Override protected ModuleConfigParser configParser() {
- return new AgentStreamGRPCConfigParser();
- }
-
- @Override protected Server server() {
- return new GRPCServer(AgentStreamGRPCConfig.HOST, AgentStreamGRPCConfig.PORT);
- }
-
- @Override protected ModuleRegistration registration() {
- return new AgentStreamGRPCModuleRegistration();
- }
-
- @Override public ClusterDataListener listener() {
- return new AgentStreamGRPCDataListener();
- }
-
- @Override public List handlerList() {
- List handlers = new LinkedList<>();
- handlers.add(new TraceSegmentServiceHandler());
- handlers.add(new ApplicationRegisterServiceHandler());
- handlers.add(new InstanceDiscoveryServiceHandler());
- handlers.add(new ServiceNameDiscoveryServiceHandler());
- handlers.add(new JVMMetricsServiceHandler());
- return handlers;
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfig.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfig.java
deleted file mode 100644
index a29bfe120..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.jetty;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamJettyConfig {
- public static String HOST;
- public static int PORT;
- public static String CONTEXT_PATH;
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java
deleted file mode 100644
index e73fbd22b..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyConfigParser.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.jetty;
-
-import java.util.Map;
-import org.skywalking.apm.collector.core.config.ConfigParseException;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.util.ObjectUtils;
-import org.skywalking.apm.collector.core.util.StringUtils;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamJettyConfigParser implements ModuleConfigParser {
-
- private static final String HOST = "host";
- private static final String PORT = "port";
- public static final String CONTEXT_PATH = "contextPath";
-
- @Override public void parse(Map config) throws ConfigParseException {
- AgentStreamJettyConfig.CONTEXT_PATH = "/";
-
- if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) {
- AgentStreamJettyConfig.HOST = "localhost";
- } else {
- AgentStreamJettyConfig.HOST = (String)config.get(HOST);
- }
-
- if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) {
- AgentStreamJettyConfig.PORT = 12800;
- } else {
- AgentStreamJettyConfig.PORT = (Integer)config.get(PORT);
- }
- if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CONTEXT_PATH))) {
- AgentStreamJettyConfig.CONTEXT_PATH = (String)config.get(CONTEXT_PATH);
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java
deleted file mode 100644
index 173ee74b5..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.jetty;
-
-import org.skywalking.apm.collector.agentstream.AgentStreamModuleGroupDefine;
-import org.skywalking.apm.collector.cluster.ClusterModuleDefine;
-import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamJettyDataListener extends ClusterDataListener {
-
- public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + AgentStreamModuleGroupDefine.GROUP_NAME + "." + AgentStreamJettyModuleDefine.MODULE_NAME;
-
- @Override public String path() {
- return PATH;
- }
-
- @Override public void serverJoinNotify(String serverAddress) {
-
- }
-
- @Override public void serverQuitNotify(String serverAddress) {
-
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyModuleDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyModuleDefine.java
deleted file mode 100644
index 5867b164e..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyModuleDefine.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.jetty;
-
-import java.util.LinkedList;
-import java.util.List;
-import org.skywalking.apm.collector.agentregister.jetty.handler.ApplicationRegisterServletHandler;
-import org.skywalking.apm.collector.agentregister.jetty.handler.InstanceDiscoveryServletHandler;
-import org.skywalking.apm.collector.agentregister.jetty.handler.ServiceNameDiscoveryServiceHandler;
-import org.skywalking.apm.collector.agentstream.AgentStreamModuleDefine;
-import org.skywalking.apm.collector.agentstream.AgentStreamModuleGroupDefine;
-import org.skywalking.apm.collector.agentstream.jetty.handler.TraceSegmentServletHandler;
-import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
-import org.skywalking.apm.collector.core.framework.Handler;
-import org.skywalking.apm.collector.core.module.ModuleConfigParser;
-import org.skywalking.apm.collector.core.module.ModuleRegistration;
-import org.skywalking.apm.collector.core.server.Server;
-import org.skywalking.apm.collector.server.jetty.JettyServer;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamJettyModuleDefine extends AgentStreamModuleDefine {
-
- public static final String MODULE_NAME = "jetty";
-
- @Override protected String group() {
- return AgentStreamModuleGroupDefine.GROUP_NAME;
- }
-
- @Override public String name() {
- return MODULE_NAME;
- }
-
- @Override protected ModuleConfigParser configParser() {
- return new AgentStreamJettyConfigParser();
- }
-
- @Override protected Server server() {
- return new JettyServer(AgentStreamJettyConfig.HOST, AgentStreamJettyConfig.PORT, AgentStreamJettyConfig.CONTEXT_PATH);
- }
-
- @Override protected ModuleRegistration registration() {
- return new AgentStreamJettyModuleRegistration();
- }
-
- @Override public ClusterDataListener listener() {
- return new AgentStreamJettyDataListener();
- }
-
- @Override public List handlerList() {
- List handlers = new LinkedList<>();
- handlers.add(new TraceSegmentServletHandler());
- handlers.add(new ApplicationRegisterServletHandler());
- handlers.add(new InstanceDiscoveryServletHandler());
- handlers.add(new ServiceNameDiscoveryServiceHandler());
- return handlers;
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/AgentStreamModuleDefineException.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/AgentStreamModuleDefineException.java
deleted file mode 100644
index 4398ca80f..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/AgentStreamModuleDefineException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker;
-
-import org.skywalking.apm.collector.core.framework.DefineException;
-
-/**
- * @author peng-yongsheng
- */
-public class AgentStreamModuleDefineException extends DefineException {
-
- public AgentStreamModuleDefineException(String message) {
- super(message);
- }
-
- public AgentStreamModuleDefineException(String message, Throwable cause) {
- super(message, cause);
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTracePersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTracePersistenceWorker.java
deleted file mode 100644
index 25253e20d..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/GlobalTracePersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.global;
-
-import org.skywalking.apm.collector.agentstream.worker.global.dao.IGlobalTraceDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.global.GlobalTraceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.RollingSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class GlobalTracePersistenceWorker extends PersistenceWorker {
-
- public GlobalTracePersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return false;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(IGlobalTraceDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public GlobalTracePersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new GlobalTracePersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return GlobalTracePersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new RollingSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new GlobalTraceDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/IGlobalTraceDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/IGlobalTraceDAO.java
deleted file mode 100644
index e215ca5dd..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/IGlobalTraceDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.global.dao;
-
-/**
- * @author peng-yongsheng
- */
-public interface IGlobalTraceDAO {
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformancePersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformancePersistenceWorker.java
deleted file mode 100644
index 6974b56ea..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/InstPerformancePersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.instance.performance;
-
-import org.skywalking.apm.collector.agentstream.worker.instance.performance.dao.IInstPerformanceDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.instance.InstPerformanceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class InstPerformancePersistenceWorker extends PersistenceWorker {
-
- public InstPerformancePersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return true;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public InstPerformancePersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new InstPerformancePersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return InstPerformancePersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new InstPerformanceDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/IInstPerformanceDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/IInstPerformanceDAO.java
deleted file mode 100644
index 1821d54c1..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/IInstPerformanceDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.instance.performance.dao;
-
-/**
- * @author peng-yongsheng
- */
-public interface IInstPerformanceDAO {
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentAggregationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentAggregationWorker.java
deleted file mode 100644
index b994a5d9e..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentAggregationWorker.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.component;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeComponentDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.collector.stream.worker.WorkerRefs;
-import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeComponentAggregationWorker extends AggregationWorker {
-
- public NodeComponentAggregationWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected WorkerRefs nextWorkRef(String id) throws WorkerNotFoundException {
- return getClusterContext().lookup(NodeComponentRemoteWorker.WorkerRole.INSTANCE);
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeComponentAggregationWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeComponentAggregationWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeComponentAggregationWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeComponentDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentPersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentPersistenceWorker.java
deleted file mode 100644
index b9367aa82..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.component;
-
-import org.skywalking.apm.collector.agentstream.worker.node.component.dao.INodeComponentDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeComponentDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeComponentPersistenceWorker extends PersistenceWorker {
-
- public NodeComponentPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return true;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(INodeComponentDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeComponentPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeComponentPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeComponentPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeComponentDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentRemoteWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentRemoteWorker.java
deleted file mode 100644
index d197456d3..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentRemoteWorker.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.component;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeComponentDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeComponentRemoteWorker extends AbstractRemoteWorker {
-
- protected NodeComponentRemoteWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
-
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- getClusterContext().lookup(NodeComponentPersistenceWorker.WorkerRole.INSTANCE).tell(message);
- }
-
- public static class Factory extends AbstractRemoteWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeComponentRemoteWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeComponentRemoteWorker(role(), clusterContext);
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeComponentRemoteWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeComponentDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java
deleted file mode 100644
index 1eb17e223..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/NodeComponentSpanListener.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.component;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.skywalking.apm.collector.agentstream.worker.segment.EntrySpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.ExitSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.FirstSpanListener;
-import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SpanDecorator;
-import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
-import org.skywalking.apm.collector.core.util.Const;
-import org.skywalking.apm.collector.core.util.TimeBucketUtils;
-import org.skywalking.apm.collector.storage.define.node.NodeComponentDataDefine;
-import org.skywalking.apm.collector.stream.StreamModuleContext;
-import org.skywalking.apm.collector.stream.StreamModuleGroupDefine;
-import org.skywalking.apm.collector.stream.worker.WorkerInvokeException;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeComponentSpanListener implements EntrySpanListener, ExitSpanListener, FirstSpanListener {
-
- private final Logger logger = LoggerFactory.getLogger(NodeComponentSpanListener.class);
-
- private List nodeComponents = new ArrayList<>();
- private long timeBucket;
-
- @Override
- public void parseExit(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) {
- NodeComponentDataDefine.NodeComponent nodeComponent = new NodeComponentDataDefine.NodeComponent();
- nodeComponent.setComponentId(spanDecorator.getComponentId());
-
- String id;
- if (spanDecorator.getComponentId() == 0) {
- nodeComponent.setComponentName(spanDecorator.getComponent());
- id = nodeComponent.getComponentName();
- } else {
- nodeComponent.setComponentName(Const.EMPTY_STRING);
- id = String.valueOf(nodeComponent.getComponentId());
- }
-
- nodeComponent.setPeerId(spanDecorator.getPeerId());
- nodeComponent.setPeer(Const.EMPTY_STRING);
- id = id + Const.ID_SPLIT + nodeComponent.getPeerId();
- nodeComponent.setId(id);
- nodeComponents.add(nodeComponent);
- }
-
- @Override
- public void parseEntry(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
- String segmentId) {
- NodeComponentDataDefine.NodeComponent nodeComponent = new NodeComponentDataDefine.NodeComponent();
- nodeComponent.setComponentId(spanDecorator.getComponentId());
-
- String id;
- if (spanDecorator.getComponentId() == 0) {
- nodeComponent.setComponentName(spanDecorator.getComponent());
- id = nodeComponent.getComponentName();
- } else {
- id = String.valueOf(nodeComponent.getComponentId());
- nodeComponent.setComponentName(Const.EMPTY_STRING);
- }
-
- nodeComponent.setPeerId(applicationId);
- nodeComponent.setPeer(Const.EMPTY_STRING);
- id = id + Const.ID_SPLIT + String.valueOf(applicationId);
- nodeComponent.setId(id);
-
- nodeComponents.add(nodeComponent);
- }
-
- @Override
- public void parseFirst(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId,
- String segmentId) {
- timeBucket = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(spanDecorator.getStartTime());
- }
-
- @Override public void build() {
- StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME);
-
- nodeComponents.forEach(nodeComponent -> {
- nodeComponent.setId(timeBucket + Const.ID_SPLIT + nodeComponent.getId());
- nodeComponent.setTimeBucket(timeBucket);
-
- try {
- logger.debug("send to node component aggregation worker, id: {}", nodeComponent.getId());
- context.getClusterWorkerContext().lookup(NodeComponentAggregationWorker.WorkerRole.INSTANCE).tell(nodeComponent.toData());
- } catch (WorkerInvokeException | WorkerNotFoundException e) {
- logger.error(e.getMessage(), e);
- }
- });
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/INodeComponentDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/INodeComponentDAO.java
deleted file mode 100644
index 237f2e9f8..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/INodeComponentDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.component.dao;
-
-/**
- * @author peng-yongsheng
- */
-public interface INodeComponentDAO {
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/NodeComponentEsDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/NodeComponentEsDAO.java
deleted file mode 100644
index 7e367de7b..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/NodeComponentEsDAO.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.component.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequestBuilder;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeComponentTable;
-import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeComponentEsDAO extends EsDAO implements INodeComponentDAO, IPersistenceDAO {
-
- @Override public Data get(String id, DataDefine dataDefine) {
- GetResponse getResponse = getClient().prepareGet(NodeComponentTable.TABLE, id).get();
- if (getResponse.isExists()) {
- Data data = dataDefine.build(id);
- Map source = getResponse.getSource();
- data.setDataInteger(0, ((Number)source.get(NodeComponentTable.COLUMN_COMPONENT_ID)).intValue());
- data.setDataString(1, (String)source.get(NodeComponentTable.COLUMN_COMPONENT_NAME));
- data.setDataInteger(1, ((Number)source.get(NodeComponentTable.COLUMN_PEER_ID)).intValue());
- data.setDataString(2, (String)source.get(NodeComponentTable.COLUMN_PEER));
- data.setDataLong(0, (Long)source.get(NodeComponentTable.COLUMN_TIME_BUCKET));
- return data;
- } else {
- return null;
- }
- }
-
- @Override public IndexRequestBuilder prepareBatchInsert(Data data) {
- Map source = new HashMap<>();
- source.put(NodeComponentTable.COLUMN_COMPONENT_ID, data.getDataInteger(0));
- source.put(NodeComponentTable.COLUMN_COMPONENT_NAME, data.getDataString(1));
- source.put(NodeComponentTable.COLUMN_PEER_ID, data.getDataInteger(1));
- source.put(NodeComponentTable.COLUMN_PEER, data.getDataString(2));
- source.put(NodeComponentTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
-
- return getClient().prepareIndex(NodeComponentTable.TABLE, data.getDataString(0)).setSource(source);
- }
-
- @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) {
- Map source = new HashMap<>();
- source.put(NodeComponentTable.COLUMN_COMPONENT_ID, data.getDataInteger(0));
- source.put(NodeComponentTable.COLUMN_COMPONENT_NAME, data.getDataString(1));
- source.put(NodeComponentTable.COLUMN_PEER_ID, data.getDataInteger(1));
- source.put(NodeComponentTable.COLUMN_PEER, data.getDataString(2));
- source.put(NodeComponentTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
-
- return getClient().prepareUpdate(NodeComponentTable.TABLE, data.getDataString(0)).setDoc(source);
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingAggregationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingAggregationWorker.java
deleted file mode 100644
index ec07f3766..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingAggregationWorker.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.mapping;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeMappingDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.collector.stream.worker.WorkerRefs;
-import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeMappingAggregationWorker extends AggregationWorker {
-
- public NodeMappingAggregationWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected WorkerRefs nextWorkRef(String id) throws WorkerNotFoundException {
- return getClusterContext().lookup(NodeMappingRemoteWorker.WorkerRole.INSTANCE);
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeMappingAggregationWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeMappingAggregationWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeMappingAggregationWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeMappingDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingPersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingPersistenceWorker.java
deleted file mode 100644
index 0d1f8f1d4..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingPersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.mapping;
-
-import org.skywalking.apm.collector.agentstream.worker.node.mapping.dao.INodeMappingDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeMappingDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeMappingPersistenceWorker extends PersistenceWorker {
-
- public NodeMappingPersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return true;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(INodeMappingDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeMappingPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeMappingPersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeMappingPersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeMappingDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingRemoteWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingRemoteWorker.java
deleted file mode 100644
index 82e144aaa..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/NodeMappingRemoteWorker.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.mapping;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.node.NodeMappingDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeMappingRemoteWorker extends AbstractRemoteWorker {
-
- protected NodeMappingRemoteWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
-
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- getClusterContext().lookup(NodeMappingPersistenceWorker.WorkerRole.INSTANCE).tell(message);
- }
-
- public static class Factory extends AbstractRemoteWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeMappingRemoteWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeMappingRemoteWorker(role(), clusterContext);
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeMappingRemoteWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeMappingDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/INodeMappingDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/INodeMappingDAO.java
deleted file mode 100644
index 9049eca2d..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/INodeMappingDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.node.mapping.dao;
-
-/**
- * @author peng-yongsheng
- */
-public interface INodeMappingDAO {
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceAggregationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceAggregationWorker.java
deleted file mode 100644
index 26344ceac..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceAggregationWorker.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.noderef;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException;
-import org.skywalking.apm.collector.stream.worker.WorkerRefs;
-import org.skywalking.apm.collector.stream.worker.impl.AggregationWorker;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeReferenceAggregationWorker extends AggregationWorker {
-
- public NodeReferenceAggregationWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected WorkerRefs nextWorkRef(String id) throws WorkerNotFoundException {
- return getClusterContext().lookup(NodeReferenceRemoteWorker.WorkerRole.INSTANCE);
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeReferenceAggregationWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeReferenceAggregationWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeReferenceAggregationWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeReferenceDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferencePersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferencePersistenceWorker.java
deleted file mode 100644
index bad368e0c..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferencePersistenceWorker.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.noderef;
-
-import org.skywalking.apm.collector.agentstream.worker.noderef.dao.INodeReferenceDAO;
-import org.skywalking.apm.collector.storage.dao.DAOContainer;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeReferencePersistenceWorker extends PersistenceWorker {
-
- public NodeReferencePersistenceWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
- super.preStart();
- }
-
- @Override protected boolean needMergeDBData() {
- return true;
- }
-
- @Override protected IPersistenceDAO persistenceDAO() {
- return (IPersistenceDAO)DAOContainer.INSTANCE.get(INodeReferenceDAO.class.getName());
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeReferencePersistenceWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeReferencePersistenceWorker(role(), clusterContext);
- }
-
- @Override
- public int queueSize() {
- return 1024;
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeReferencePersistenceWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeReferenceDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceRemoteWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceRemoteWorker.java
deleted file mode 100644
index 56d712994..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/NodeReferenceRemoteWorker.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.noderef;
-
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceDataDefine;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker;
-import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider;
-import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext;
-import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException;
-import org.skywalking.apm.collector.stream.worker.Role;
-import org.skywalking.apm.collector.stream.worker.WorkerException;
-import org.skywalking.apm.collector.stream.worker.selector.HashCodeSelector;
-import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeReferenceRemoteWorker extends AbstractRemoteWorker {
-
- protected NodeReferenceRemoteWorker(Role role, ClusterWorkerContext clusterContext) {
- super(role, clusterContext);
- }
-
- @Override public void preStart() throws ProviderNotFoundException {
-
- }
-
- @Override protected void onWork(Object message) throws WorkerException {
- getClusterContext().lookup(NodeReferencePersistenceWorker.WorkerRole.INSTANCE).tell(message);
- }
-
- public static class Factory extends AbstractRemoteWorkerProvider {
- @Override
- public Role role() {
- return WorkerRole.INSTANCE;
- }
-
- @Override
- public NodeReferenceRemoteWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeReferenceRemoteWorker(role(), clusterContext);
- }
- }
-
- public enum WorkerRole implements Role {
- INSTANCE;
-
- @Override
- public String roleName() {
- return NodeReferenceRemoteWorker.class.getSimpleName();
- }
-
- @Override
- public WorkerSelector workerSelector() {
- return new HashCodeSelector();
- }
-
- @Override public DataDefine dataDefine() {
- return new NodeReferenceDataDefine();
- }
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/INodeReferenceDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/INodeReferenceDAO.java
deleted file mode 100644
index db8d485d2..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/INodeReferenceDAO.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.noderef.dao;
-
-/**
- * @author peng-yongsheng
- */
-public interface INodeReferenceDAO {
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/NodeReferenceEsDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/NodeReferenceEsDAO.java
deleted file mode 100644
index 1fe559062..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/NodeReferenceEsDAO.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.noderef.dao;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequestBuilder;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable;
-import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-
-/**
- * @author peng-yongsheng
- */
-public class NodeReferenceEsDAO extends EsDAO implements INodeReferenceDAO, IPersistenceDAO {
-
- @Override public Data get(String id, DataDefine dataDefine) {
- GetResponse getResponse = getClient().prepareGet(NodeReferenceTable.TABLE, id).get();
- if (getResponse.isExists()) {
- Data data = dataDefine.build(id);
- Map source = getResponse.getSource();
- data.setDataInteger(0, ((Number)source.get(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID)).intValue());
- data.setDataInteger(1, ((Number)source.get(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID)).intValue());
- data.setDataString(1, (String)source.get(NodeReferenceTable.COLUMN_BEHIND_PEER));
- data.setDataInteger(2, ((Number)source.get(NodeReferenceTable.COLUMN_S1_LTE)).intValue());
- data.setDataInteger(3, ((Number)source.get(NodeReferenceTable.COLUMN_S3_LTE)).intValue());
- data.setDataInteger(4, ((Number)source.get(NodeReferenceTable.COLUMN_S5_LTE)).intValue());
- data.setDataInteger(5, ((Number)source.get(NodeReferenceTable.COLUMN_S5_GT)).intValue());
- data.setDataInteger(6, ((Number)source.get(NodeReferenceTable.COLUMN_SUMMARY)).intValue());
- data.setDataInteger(7, ((Number)source.get(NodeReferenceTable.COLUMN_ERROR)).intValue());
- data.setDataLong(0, ((Number)source.get(NodeReferenceTable.COLUMN_TIME_BUCKET)).longValue());
- return data;
- } else {
- return null;
- }
- }
-
- @Override public IndexRequestBuilder prepareBatchInsert(Data data) {
- Map source = new HashMap<>();
- source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getDataInteger(0));
- source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getDataInteger(1));
- source.put(NodeReferenceTable.COLUMN_BEHIND_PEER, data.getDataString(1));
- source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getDataInteger(2));
- source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getDataInteger(3));
- source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getDataInteger(4));
- source.put(NodeReferenceTable.COLUMN_S5_GT, data.getDataInteger(5));
- source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getDataInteger(6));
- source.put(NodeReferenceTable.COLUMN_ERROR, data.getDataInteger(7));
- source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
-
- return getClient().prepareIndex(NodeReferenceTable.TABLE, data.getDataString(0)).setSource(source);
- }
-
- @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) {
- Map source = new HashMap<>();
- source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getDataInteger(0));
- source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getDataInteger(1));
- source.put(NodeReferenceTable.COLUMN_BEHIND_PEER, data.getDataString(1));
- source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getDataInteger(2));
- source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getDataInteger(3));
- source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getDataInteger(4));
- source.put(NodeReferenceTable.COLUMN_S5_GT, data.getDataInteger(5));
- source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getDataInteger(6));
- source.put(NodeReferenceTable.COLUMN_ERROR, data.getDataInteger(7));
- source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
-
- return getClient().prepareUpdate(NodeReferenceTable.TABLE, data.getDataString(0)).setDoc(source);
- }
-}
diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/NodeReferenceH2DAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/NodeReferenceH2DAO.java
deleted file mode 100644
index 2a0e89994..000000000
--- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/dao/NodeReferenceH2DAO.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2017, OpenSkywalking Organization All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * Project repository: https://github.com/OpenSkywalking/skywalking
- */
-
-package org.skywalking.apm.collector.agentstream.worker.noderef.dao;
-
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.skywalking.apm.collector.client.h2.H2Client;
-import org.skywalking.apm.collector.client.h2.H2ClientException;
-import org.skywalking.apm.collector.core.stream.Data;
-import org.skywalking.apm.collector.storage.define.DataDefine;
-import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable;
-import org.skywalking.apm.collector.storage.h2.SqlBuilder;
-import org.skywalking.apm.collector.storage.h2.dao.H2DAO;
-import org.skywalking.apm.collector.storage.h2.define.H2SqlEntity;
-import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng, clevertension
- */
-public class NodeReferenceH2DAO extends H2DAO implements INodeReferenceDAO, IPersistenceDAO {
- private final Logger logger = LoggerFactory.getLogger(NodeReferenceH2DAO.class);
- private static final String GET_SQL = "select * from {0} where {1} = ?";
-
- @Override public Data get(String id, DataDefine dataDefine) {
- H2Client client = getClient();
- String sql = SqlBuilder.buildSql(GET_SQL, NodeReferenceTable.TABLE, NodeReferenceTable.COLUMN_ID);
- Object[] params = new Object[] {id};
- try (ResultSet rs = client.executeQuery(sql, params)) {
- if (rs.next()) {
- Data data = dataDefine.build(id);
- data.setDataInteger(0, rs.getInt(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID));
- data.setDataInteger(1, rs.getInt(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID));
- data.setDataString(1, rs.getString(NodeReferenceTable.COLUMN_BEHIND_PEER));
- data.setDataInteger(2, rs.getInt(NodeReferenceTable.COLUMN_S1_LTE));
- data.setDataInteger(3, rs.getInt(NodeReferenceTable.COLUMN_S3_LTE));
- data.setDataInteger(4, rs.getInt(NodeReferenceTable.COLUMN_S5_LTE));
- data.setDataInteger(5, rs.getInt(NodeReferenceTable.COLUMN_S5_GT));
- data.setDataInteger(6, rs.getInt(NodeReferenceTable.COLUMN_SUMMARY));
- data.setDataInteger(7, rs.getInt(NodeReferenceTable.COLUMN_ERROR));
- data.setDataLong(0, rs.getLong(NodeReferenceTable.COLUMN_TIME_BUCKET));
- return data;
- }
- } catch (SQLException | H2ClientException e) {
- logger.error(e.getMessage(), e);
- }
- return null;
- }
-
- @Override public H2SqlEntity prepareBatchInsert(Data data) {
- Map source = new HashMap<>();
- H2SqlEntity entity = new H2SqlEntity();
- source.put(NodeReferenceTable.COLUMN_ID, data.getDataString(0));
- source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getDataInteger(0));
- source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getDataInteger(1));
- source.put(NodeReferenceTable.COLUMN_BEHIND_PEER, data.getDataString(1));
- source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getDataInteger(2));
- source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getDataInteger(3));
- source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getDataInteger(4));
- source.put(NodeReferenceTable.COLUMN_S5_GT, data.getDataInteger(5));
- source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getDataInteger(6));
- source.put(NodeReferenceTable.COLUMN_ERROR, data.getDataInteger(7));
- source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
- String sql = SqlBuilder.buildBatchInsertSql(NodeReferenceTable.TABLE, source.keySet());
- entity.setSql(sql);
-
- entity.setParams(source.values().toArray(new Object[0]));
- return entity;
- }
-
- @Override public H2SqlEntity prepareBatchUpdate(Data data) {
- Map source = new HashMap<>();
- H2SqlEntity entity = new H2SqlEntity();
- source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getDataInteger(0));
- source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getDataInteger(1));
- source.put(NodeReferenceTable.COLUMN_BEHIND_PEER, data.getDataString(1));
- source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getDataInteger(2));
- source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getDataInteger(3));
- source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getDataInteger(4));
- source.put(NodeReferenceTable.COLUMN_S5_GT, data.getDataInteger(5));
- source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getDataInteger(6));
- source.put(NodeReferenceTable.COLUMN_ERROR, data.getDataInteger(7));
- source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(0));
- String id = data.getDataString(0);
- String sql = SqlBuilder.buildBatchUpdateSql(NodeReferenceTable.TABLE, source.keySet(), NodeReferenceTable.COLUMN_ID);
- entity.setSql(sql);
- List