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. [![Build Status](https://travis-ci.org/OpenSkywalking/skywalking.svg?branch=master)](https://travis-ci.org/OpenSkywalking/skywalking) -[![Coverage Status](https://coveralls.io/repos/github/OpenSkywalking/skywalking/badge.svg?branch=master&forceUpdate=2)](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master) +[![Coverage Status](https://coveralls.io/repos/github/OpenSkywalking/skywalking/badge.svg?branch=master&forceUpdate=3)](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master) [![Join the chat at https://gitter.im/sky-walking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) [![OpenTracing-1.x Badge](https://img.shields.io/badge/OpenTracing--1.x-enabled-blue.svg)](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) +[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](docs/README.md) [![cn doc](https://img.shields.io/badge/document-中文-blue.svg)](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系统,也被称为分布式追踪系统 [![Build Status](https://travis-ci.org/OpenSkywalking/skywalking.svg?branch=master)](https://travis-ci.org/OpenSkywalking/skywalking) -[![Coverage Status](https://coveralls.io/repos/github/OpenSkywalking/skywalking/badge.svg?branch=master&forceUpdate=2)](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master) +[![Coverage Status](https://coveralls.io/repos/github/OpenSkywalking/skywalking/badge.svg?branch=master&forceUpdate=3)](https://coveralls.io/github/OpenSkywalking/skywalking?branch=master) [![Join the chat at https://gitter.im/openskywalking/Lobby](https://badges.gitter.im/openskywalking/Lobby.svg)](https://gitter.im/openskywalking/Lobby) [![OpenTracing-1.x Badge](https://img.shields.io/badge/OpenTracing--1.x-enabled-blue.svg)](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) +[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](docs/README.md) [![cn doc](https://img.shields.io/badge/document-中文-blue.svg)](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 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 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 values = new ArrayList<>(source.values()); - values.add(id); - entity.setParams(values.toArray(new Object[0])); - return entity; - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostPersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostPersistenceWorker.java deleted file mode 100644 index e5b5320db..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/SegmentCostPersistenceWorker.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.segment.cost; - -import org.skywalking.apm.collector.agentstream.worker.segment.cost.dao.ISegmentCostDAO; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.segment.SegmentCostDataDefine; -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 SegmentCostPersistenceWorker extends PersistenceWorker { - - public SegmentCostPersistenceWorker(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(ISegmentCostDAO.class.getName()); - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public SegmentCostPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) { - return new SegmentCostPersistenceWorker(role(), clusterContext); - } - - @Override - public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return SegmentCostPersistenceWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new RollingSelector(); - } - - @Override public DataDefine dataDefine() { - return new SegmentCostDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/ISegmentCostDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/ISegmentCostDAO.java deleted file mode 100644 index b09d6d330..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/ISegmentCostDAO.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.segment.cost.dao; - -/** - * @author peng-yongsheng - */ -public interface ISegmentCostDAO { -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/SegmentPersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/SegmentPersistenceWorker.java deleted file mode 100644 index 8c51294f5..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/SegmentPersistenceWorker.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.segment.origin; - -import org.skywalking.apm.collector.agentstream.worker.segment.origin.dao.ISegmentDAO; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.segment.SegmentDataDefine; -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 SegmentPersistenceWorker extends PersistenceWorker { - - public SegmentPersistenceWorker(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(ISegmentDAO.class.getName()); - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public SegmentPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) { - return new SegmentPersistenceWorker(role(), clusterContext); - } - - @Override - public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return SegmentPersistenceWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new RollingSelector(); - } - - @Override public DataDefine dataDefine() { - return new SegmentDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/ISegmentDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/ISegmentDAO.java deleted file mode 100644 index eb3ef5a52..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/ISegmentDAO.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.segment.origin.dao; - -/** - * @author peng-yongsheng - */ -public interface ISegmentDAO { -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java deleted file mode 100644 index 003059a70..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/standardization/SegmentStandardizationWorker.java +++ /dev/null @@ -1,98 +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.segment.standardization; - -import org.skywalking.apm.collector.agentstream.worker.segment.buffer.SegmentBufferManager; -import org.skywalking.apm.collector.core.queue.EndOfBatchCommand; -import org.skywalking.apm.collector.storage.define.DataDefine; -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.impl.FlushAndSwitch; -import org.skywalking.apm.collector.stream.worker.selector.ForeverFirstSelector; -import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector; -import org.skywalking.apm.network.proto.UpstreamSegment; -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(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - } - - @Override public void preStart() throws ProviderNotFoundException { - super.preStart(); - SegmentBufferManager.INSTANCE.initialize(); - } - - @Override protected void onWork(Object message) throws WorkerException { - if (message instanceof FlushAndSwitch) { - SegmentBufferManager.INSTANCE.flush(); - } else if (message instanceof EndOfBatchCommand) { - } else if (message instanceof UpstreamSegment) { - UpstreamSegment upstreamSegment = (UpstreamSegment)message; - SegmentBufferManager.INSTANCE.writeBuffer(upstreamSegment); - } else { - logger.error("unhandled message, message instance must UpstreamSegment, but is %s", message.getClass().toString()); - } - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return SegmentStandardizationWorker.WorkerRole.INSTANCE; - } - - @Override - public SegmentStandardizationWorker workerInstance(ClusterWorkerContext clusterContext) { - return new SegmentStandardizationWorker(role(), clusterContext); - } - - @Override public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return SegmentStandardizationWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new ForeverFirstSelector(); - } - - @Override public DataDefine dataDefine() { - return null; - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryAggregationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryAggregationWorker.java deleted file mode 100644 index 4cd82ba9f..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryAggregationWorker.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.service.entry; - -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryDataDefine; -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 ServiceEntryAggregationWorker extends AggregationWorker { - - public ServiceEntryAggregationWorker(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(ServiceEntryRemoteWorker.WorkerRole.INSTANCE); - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public ServiceEntryAggregationWorker workerInstance(ClusterWorkerContext clusterContext) { - return new ServiceEntryAggregationWorker(role(), clusterContext); - } - - @Override - public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return ServiceEntryAggregationWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new HashCodeSelector(); - } - - @Override public DataDefine dataDefine() { - return new ServiceEntryDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryPersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryPersistenceWorker.java deleted file mode 100644 index 154dabb4e..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryPersistenceWorker.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.service.entry; - -import org.skywalking.apm.collector.agentstream.worker.service.entry.dao.IServiceEntryDAO; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryDataDefine; -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 ServiceEntryPersistenceWorker extends PersistenceWorker { - - public ServiceEntryPersistenceWorker(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(IServiceEntryDAO.class.getName()); - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public ServiceEntryPersistenceWorker workerInstance(ClusterWorkerContext clusterContext) { - return new ServiceEntryPersistenceWorker(role(), clusterContext); - } - - @Override - public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return ServiceEntryPersistenceWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new HashCodeSelector(); - } - - @Override public DataDefine dataDefine() { - return new ServiceEntryDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryRemoteWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryRemoteWorker.java deleted file mode 100644 index 14adfe27c..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/ServiceEntryRemoteWorker.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.service.entry; - -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryDataDefine; -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 ServiceEntryRemoteWorker extends AbstractRemoteWorker { - - protected ServiceEntryRemoteWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - } - - @Override public void preStart() throws ProviderNotFoundException { - - } - - @Override protected void onWork(Object message) throws WorkerException { - getClusterContext().lookup(ServiceEntryPersistenceWorker.WorkerRole.INSTANCE).tell(message); - } - - public static class Factory extends AbstractRemoteWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public ServiceEntryRemoteWorker workerInstance(ClusterWorkerContext clusterContext) { - return new ServiceEntryRemoteWorker(role(), clusterContext); - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return ServiceEntryRemoteWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new HashCodeSelector(); - } - - @Override public DataDefine dataDefine() { - return new ServiceEntryDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/IServiceEntryDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/IServiceEntryDAO.java deleted file mode 100644 index eb1fc88c4..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/IServiceEntryDAO.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.service.entry.dao; - -/** - * @author peng-yongsheng - */ -public interface IServiceEntryDAO { -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceAggregationWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceAggregationWorker.java deleted file mode 100644 index 52a71efea..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceAggregationWorker.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.serviceref; - -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceDataDefine; -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 ServiceReferenceAggregationWorker extends AggregationWorker { - - public ServiceReferenceAggregationWorker(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(ServiceReferenceRemoteWorker.WorkerRole.INSTANCE); - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public ServiceReferenceAggregationWorker workerInstance(ClusterWorkerContext clusterContext) { - return new ServiceReferenceAggregationWorker(role(), clusterContext); - } - - @Override - public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return ServiceReferenceAggregationWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new HashCodeSelector(); - } - - @Override public DataDefine dataDefine() { - return new ServiceReferenceDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferencePersistenceWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferencePersistenceWorker.java deleted file mode 100644 index 095f9f434..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferencePersistenceWorker.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.serviceref; - -import org.skywalking.apm.collector.agentstream.worker.serviceref.dao.IServiceReferenceDAO; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceDataDefine; -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 ServiceReferencePersistenceWorker extends PersistenceWorker { - - public ServiceReferencePersistenceWorker(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(IServiceReferenceDAO.class.getName()); - } - - public static class Factory extends AbstractLocalAsyncWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public ServiceReferencePersistenceWorker workerInstance(ClusterWorkerContext clusterContext) { - return new ServiceReferencePersistenceWorker(role(), clusterContext); - } - - @Override - public int queueSize() { - return 1024; - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return ServiceReferencePersistenceWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new HashCodeSelector(); - } - - @Override public DataDefine dataDefine() { - return new ServiceReferenceDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceRemoteWorker.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceRemoteWorker.java deleted file mode 100644 index 6b915cef5..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/ServiceReferenceRemoteWorker.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.serviceref; - -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceDataDefine; -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 ServiceReferenceRemoteWorker extends AbstractRemoteWorker { - - protected ServiceReferenceRemoteWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - } - - @Override public void preStart() throws ProviderNotFoundException { - - } - - @Override protected void onWork(Object message) throws WorkerException { - getClusterContext().lookup(ServiceReferencePersistenceWorker.WorkerRole.INSTANCE).tell(message); - } - - public static class Factory extends AbstractRemoteWorkerProvider { - @Override - public Role role() { - return WorkerRole.INSTANCE; - } - - @Override - public ServiceReferenceRemoteWorker workerInstance(ClusterWorkerContext clusterContext) { - return new ServiceReferenceRemoteWorker(role(), clusterContext); - } - } - - public enum WorkerRole implements Role { - INSTANCE; - - @Override - public String roleName() { - return ServiceReferenceRemoteWorker.class.getSimpleName(); - } - - @Override - public WorkerSelector workerSelector() { - return new HashCodeSelector(); - } - - @Override public DataDefine dataDefine() { - return new ServiceReferenceDataDefine(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/IServiceReferenceDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/IServiceReferenceDAO.java deleted file mode 100644 index 15c9e4a4a..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/IServiceReferenceDAO.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.serviceref.dao; - -/** - * @author peng-yongsheng - */ -public interface IServiceReferenceDAO { -} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceEsDAO.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceEsDAO.java deleted file mode 100644 index 55d8ba70c..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceEsDAO.java +++ /dev/null @@ -1,105 +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.serviceref.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.serviceref.ServiceReferenceTable; -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 ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO, IPersistenceDAO { - - private final Logger logger = LoggerFactory.getLogger(ServiceReferenceEsDAO.class); - - @Override public Data get(String id, DataDefine dataDefine) { - GetResponse getResponse = getClient().prepareGet(ServiceReferenceTable.TABLE, id).get(); - if (getResponse.isExists()) { - Data data = dataDefine.build(id); - Map source = getResponse.getSource(); - data.setDataInteger(0, ((Number)source.get(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID)).intValue()); - data.setDataString(1, (String)source.get(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME)); - data.setDataInteger(1, ((Number)source.get(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).intValue()); - data.setDataString(2, (String)source.get(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME)); - data.setDataInteger(2, ((Number)source.get(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).intValue()); - data.setDataString(3, (String)source.get(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME)); - data.setDataLong(0, ((Number)source.get(ServiceReferenceTable.COLUMN_S1_LTE)).longValue()); - data.setDataLong(1, ((Number)source.get(ServiceReferenceTable.COLUMN_S3_LTE)).longValue()); - data.setDataLong(2, ((Number)source.get(ServiceReferenceTable.COLUMN_S5_LTE)).longValue()); - data.setDataLong(3, ((Number)source.get(ServiceReferenceTable.COLUMN_S5_GT)).longValue()); - data.setDataLong(4, ((Number)source.get(ServiceReferenceTable.COLUMN_SUMMARY)).longValue()); - data.setDataLong(5, ((Number)source.get(ServiceReferenceTable.COLUMN_ERROR)).longValue()); - data.setDataLong(6, ((Number)source.get(ServiceReferenceTable.COLUMN_COST_SUMMARY)).longValue()); - data.setDataLong(7, ((Number)source.get(ServiceReferenceTable.COLUMN_TIME_BUCKET)).longValue()); - return data; - } else { - return null; - } - } - - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { - Map source = new HashMap<>(); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(0)); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, data.getDataString(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getDataInteger(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, data.getDataString(3)); - source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getDataLong(0)); - source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getDataLong(1)); - source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getDataLong(2)); - source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getDataLong(3)); - source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getDataLong(4)); - source.put(ServiceReferenceTable.COLUMN_ERROR, data.getDataLong(5)); - source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getDataLong(6)); - source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(7)); - - return getClient().prepareIndex(ServiceReferenceTable.TABLE, data.getDataString(0)).setSource(source); - } - - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { - Map source = new HashMap<>(); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(0)); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, data.getDataString(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getDataInteger(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, data.getDataString(3)); - source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getDataLong(0)); - source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getDataLong(1)); - source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getDataLong(2)); - source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getDataLong(3)); - source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getDataLong(4)); - source.put(ServiceReferenceTable.COLUMN_ERROR, data.getDataLong(5)); - source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getDataLong(6)); - source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(7)); - - return getClient().prepareUpdate(ServiceReferenceTable.TABLE, data.getDataString(0)).setDoc(source); - } -} diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/es_dao.define deleted file mode 100644 index 5f55512c3..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/es_dao.define +++ /dev/null @@ -1,9 +0,0 @@ -org.skywalking.apm.collector.agentstream.worker.node.component.dao.NodeComponentEsDAO -org.skywalking.apm.collector.agentstream.worker.node.mapping.dao.NodeMappingEsDAO -org.skywalking.apm.collector.agentstream.worker.noderef.dao.NodeReferenceEsDAO -org.skywalking.apm.collector.agentstream.worker.segment.origin.dao.SegmentEsDAO -org.skywalking.apm.collector.agentstream.worker.segment.cost.dao.SegmentCostEsDAO -org.skywalking.apm.collector.agentstream.worker.global.dao.GlobalTraceEsDAO -org.skywalking.apm.collector.agentstream.worker.service.entry.dao.ServiceEntryEsDAO -org.skywalking.apm.collector.agentstream.worker.serviceref.dao.ServiceReferenceEsDAO -org.skywalking.apm.collector.agentstream.worker.instance.performance.dao.InstPerformanceEsDAO \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/group.define deleted file mode 100644 index 2c200d484..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/group.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.agentstream.AgentStreamModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/h2_dao.define deleted file mode 100644 index b1064d603..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/h2_dao.define +++ /dev/null @@ -1,9 +0,0 @@ -org.skywalking.apm.collector.agentstream.worker.node.component.dao.NodeComponentH2DAO -org.skywalking.apm.collector.agentstream.worker.node.mapping.dao.NodeMappingH2DAO -org.skywalking.apm.collector.agentstream.worker.noderef.dao.NodeReferenceH2DAO -org.skywalking.apm.collector.agentstream.worker.segment.origin.dao.SegmentH2DAO -org.skywalking.apm.collector.agentstream.worker.segment.cost.dao.SegmentCostH2DAO -org.skywalking.apm.collector.agentstream.worker.global.dao.GlobalTraceH2DAO -org.skywalking.apm.collector.agentstream.worker.service.entry.dao.ServiceEntryH2DAO -org.skywalking.apm.collector.agentstream.worker.serviceref.dao.ServiceReferenceH2DAO -org.skywalking.apm.collector.agentstream.worker.instance.performance.dao.InstPerformanceH2DAO \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define deleted file mode 100644 index 465adeac2..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/local_worker_provider.define +++ /dev/null @@ -1,22 +0,0 @@ -org.skywalking.apm.collector.agentstream.worker.node.component.NodeComponentAggregationWorker$Factory -org.skywalking.apm.collector.agentstream.worker.node.component.NodeComponentPersistenceWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.node.mapping.NodeMappingAggregationWorker$Factory -org.skywalking.apm.collector.agentstream.worker.node.mapping.NodeMappingPersistenceWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.noderef.NodeReferenceAggregationWorker$Factory -org.skywalking.apm.collector.agentstream.worker.noderef.NodeReferencePersistenceWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.service.entry.ServiceEntryAggregationWorker$Factory -org.skywalking.apm.collector.agentstream.worker.service.entry.ServiceEntryPersistenceWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.serviceref.ServiceReferenceAggregationWorker$Factory -org.skywalking.apm.collector.agentstream.worker.serviceref.ServiceReferencePersistenceWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.segment.origin.SegmentPersistenceWorker$Factory -org.skywalking.apm.collector.agentstream.worker.segment.cost.SegmentCostPersistenceWorker$Factory -org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentStandardizationWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.global.GlobalTracePersistenceWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.instance.performance.InstPerformancePersistenceWorker$Factory \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/module.define deleted file mode 100644 index 7103f4219..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/module.define +++ /dev/null @@ -1,2 +0,0 @@ -org.skywalking.apm.collector.agentstream.grpc.AgentStreamGRPCModuleDefine -org.skywalking.apm.collector.agentstream.jetty.AgentStreamJettyModuleDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/remote_worker_provider.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/remote_worker_provider.define deleted file mode 100644 index 17a6ae7b5..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/remote_worker_provider.define +++ /dev/null @@ -1,6 +0,0 @@ -org.skywalking.apm.collector.agentstream.worker.node.component.NodeComponentRemoteWorker$Factory -org.skywalking.apm.collector.agentstream.worker.node.mapping.NodeMappingRemoteWorker$Factory -org.skywalking.apm.collector.agentstream.worker.noderef.NodeReferenceRemoteWorker$Factory - -org.skywalking.apm.collector.agentstream.worker.service.entry.ServiceEntryRemoteWorker$Factory -org.skywalking.apm.collector.agentstream.worker.serviceref.ServiceReferenceRemoteWorker$Factory \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/storage.define b/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/storage.define deleted file mode 100644 index 098e51e7a..000000000 --- a/apm-collector/apm-collector-agentstream/src/main/resources/META-INF/defines/storage.define +++ /dev/null @@ -1,26 +0,0 @@ -org.skywalking.apm.collector.agentstream.worker.node.component.define.NodeComponentEsTableDefine -org.skywalking.apm.collector.agentstream.worker.node.component.define.NodeComponentH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.node.mapping.define.NodeMappingEsTableDefine -org.skywalking.apm.collector.agentstream.worker.node.mapping.define.NodeMappingH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.noderef.define.NodeReferenceEsTableDefine -org.skywalking.apm.collector.agentstream.worker.noderef.define.NodeReferenceH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.segment.origin.define.SegmentEsTableDefine -org.skywalking.apm.collector.agentstream.worker.segment.origin.define.SegmentH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.segment.cost.define.SegmentCostEsTableDefine -org.skywalking.apm.collector.agentstream.worker.segment.cost.define.SegmentCostH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.global.define.GlobalTraceEsTableDefine -org.skywalking.apm.collector.agentstream.worker.global.define.GlobalTraceH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.service.entry.define.ServiceEntryEsTableDefine -org.skywalking.apm.collector.agentstream.worker.service.entry.define.ServiceEntryH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.serviceref.define.ServiceReferenceEsTableDefine -org.skywalking.apm.collector.agentstream.worker.serviceref.define.ServiceReferenceH2TableDefine - -org.skywalking.apm.collector.agentstream.worker.instance.performance.define.InstPerformanceEsTableDefine -org.skywalking.apm.collector.agentstream.worker.instance.performance.define.InstPerformanceH2TableDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/HttpClientTools.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/HttpClientTools.java deleted file mode 100644 index d90269bab..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/HttpClientTools.java +++ /dev/null @@ -1,95 +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.io.IOException; -import java.net.URI; -import java.util.List; -import org.apache.http.Consts; -import org.apache.http.HttpEntity; -import org.apache.http.NameValuePair; -import org.apache.http.client.entity.UrlEncodedFormEntity; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public enum HttpClientTools { - INSTANCE; - - private final Logger logger = LoggerFactory.getLogger(HttpClientTools.class); - - public String get(String url, List params) throws IOException { - CloseableHttpClient httpClient = HttpClients.createDefault(); - try { - HttpGet httpget = new HttpGet(url); - String paramStr = EntityUtils.toString(new UrlEncodedFormEntity(params)); - httpget.setURI(new URI(httpget.getURI().toString() + "?" + paramStr)); - logger.debug("executing get request {}", httpget.getURI()); - - try (CloseableHttpResponse response = httpClient.execute(httpget)) { - HttpEntity entity = response.getEntity(); - if (entity != null) { - return EntityUtils.toString(entity); - } - } - } catch (Exception e) { - logger.error(e.getMessage(), e); - } finally { - try { - httpClient.close(); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - } - return null; - } - - public String post(String url, String data) throws IOException { - CloseableHttpClient httpClient = HttpClients.createDefault(); - try { - HttpPost httppost = new HttpPost(url); - httppost.setEntity(new StringEntity(data, Consts.UTF_8)); - logger.debug("executing post request {}", httppost.getURI()); - try (CloseableHttpResponse response = httpClient.execute(httppost)) { - HttpEntity entity = response.getEntity(); - if (entity != null) { - return EntityUtils.toString(entity); - } - } - } catch (Exception e) { - logger.error(e.getMessage(), e); - } finally { - try { - httpClient.close(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - } - } - return null; - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java deleted file mode 100644 index 9ae169960..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/grpc/handler/TraceSegmentServiceHandlerTestCase.java +++ /dev/null @@ -1,136 +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.handler; - -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import org.junit.Test; -import org.skywalking.apm.network.proto.Downstream; -import org.skywalking.apm.network.proto.KeyWithStringValue; -import org.skywalking.apm.network.proto.LogMessage; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.TraceSegmentReference; -import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class TraceSegmentServiceHandlerTestCase { - - private final Logger logger = LoggerFactory.getLogger(TraceSegmentServiceHandlerTestCase.class); - - private TraceSegmentServiceGrpc.TraceSegmentServiceStub stub; - - @Test - public void testCollect() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext(true).build(); - stub = TraceSegmentServiceGrpc.newStub(channel); - - StreamObserver streamObserver = stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - } - - @Override public void onCompleted() { - - } - }); - - UpstreamSegment.Builder builder = UpstreamSegment.newBuilder(); - buildGlobalTraceIds(builder); - buildSegment(builder); - - streamObserver.onNext(builder.build()); - streamObserver.onCompleted(); - - try { - Thread.sleep(10000); - } catch (InterruptedException e) { - } - } - - private void buildGlobalTraceIds(UpstreamSegment.Builder builder) { - UniqueId.Builder builder1 = UniqueId.newBuilder(); - builder1.addIdParts(100); - builder1.addIdParts(100); - builder1.addIdParts(100); - builder.addGlobalTraceIds(builder1.build()); - } - - private void buildSegment(UpstreamSegment.Builder builder) { - long now = System.currentTimeMillis(); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(2); - segmentBuilder.setApplicationInstanceId(2); - segmentBuilder.setTraceSegmentId(UniqueId.newBuilder().addIdParts(200).addIdParts(200).addIdParts(200).build()); - - SpanObject.Builder span0 = SpanObject.newBuilder(); - span0.setSpanId(0); - span0.setOperationName("/dubbox-case/case/dubbox-rest"); - span0.setOperationNameId(0); - span0.setParentSpanId(-1); - span0.setSpanLayer(SpanLayer.Http); - span0.setStartTime(now); - span0.setEndTime(now + 100000); - span0.setComponentId(ComponentsDefine.TOMCAT.getId()); - span0.setIsError(false); - span0.setSpanType(SpanType.Entry); - span0.setPeerId(2); - span0.setPeer("localhost:8082"); - - LogMessage.Builder log0 = LogMessage.newBuilder(); - log0.setTime(now); - log0.addData(KeyWithStringValue.newBuilder().setKey("log1").setValue("value1")); - log0.addData(KeyWithStringValue.newBuilder().setKey("log2").setValue("value2")); - log0.addData(KeyWithStringValue.newBuilder().setKey("log3").setValue("value3")); - span0.addLogs(log0.build()); - - span0.addTags(KeyWithStringValue.newBuilder().setKey("tag1").setValue("value1")); - span0.addTags(KeyWithStringValue.newBuilder().setKey("tag2").setValue("value2")); - span0.addTags(KeyWithStringValue.newBuilder().setKey("tag3").setValue("value3")); - segmentBuilder.addSpans(span0); - - TraceSegmentReference.Builder ref0 = TraceSegmentReference.newBuilder(); - ref0.setEntryServiceId(1); - ref0.setEntryServiceName("ServiceName"); - ref0.setNetworkAddress("localhost:8081"); - ref0.setNetworkAddressId(1); - ref0.setParentApplicationInstanceId(1); - ref0.setParentServiceId(1); - ref0.setParentServiceName(""); - ref0.setParentSpanId(2); - ref0.setParentTraceSegmentId(UniqueId.newBuilder().addIdParts(100).addIdParts(100).addIdParts(100).build()); -// segmentBuilder.addRefs(ref_0); - - builder.setSegment(segmentBuilder.build().toByteString()); - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReaderTestCase.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReaderTestCase.java deleted file mode 100644 index 65ec356f8..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/jetty/handler/reader/TraceSegmentJsonReaderTestCase.java +++ /dev/null @@ -1,45 +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.handler.reader; - -import com.google.gson.JsonElement; -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import java.io.StringReader; -import org.junit.Test; -import org.skywalking.apm.collector.agentstream.mock.JsonFileReader; - -/** - * @author peng-yongsheng - */ -public class TraceSegmentJsonReaderTestCase { - - @Test - public void testRead() throws IOException { - TraceSegmentJsonReader reader = new TraceSegmentJsonReader(); - JsonElement jsonElement = JsonFileReader.INSTANCE.read("json/segment/normal/dubbox-consumer.json"); - - JsonReader jsonReader = new JsonReader(new StringReader(jsonElement.toString())); - jsonReader.beginArray(); - while (jsonReader.hasNext()) { - reader.read(jsonReader); - } - jsonReader.endArray(); - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/JsonFileReader.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/JsonFileReader.java deleted file mode 100644 index a5b171af9..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/JsonFileReader.java +++ /dev/null @@ -1,42 +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.mock; - -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import java.io.FileNotFoundException; -import java.io.FileReader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public enum JsonFileReader { - INSTANCE; - - private final Logger logger = LoggerFactory.getLogger(JsonFileReader.class); - - public JsonElement read(String fileName) throws FileNotFoundException { - String path = this.getClass().getClassLoader().getResource(fileName).getFile(); - logger.debug("path: {}", path); - JsonParser jsonParser = new JsonParser(); - return jsonParser.parse(new FileReader(path)); - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java deleted file mode 100644 index 28af86e74..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/SegmentPost.java +++ /dev/null @@ -1,138 +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.mock; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import java.io.IOException; -import org.skywalking.apm.collector.agentregister.worker.application.dao.IApplicationDAO; -import org.skywalking.apm.collector.agentregister.worker.instance.dao.IInstanceDAO; -import org.skywalking.apm.collector.agentregister.worker.servicename.dao.IServiceNameDAO; -import org.skywalking.apm.collector.agentstream.HttpClientTools; -import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.client.h2.H2Client; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.config.SystemConfig; -import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine; -import org.skywalking.apm.collector.storage.elasticsearch.StorageElasticSearchModuleDefine; -import org.skywalking.apm.collector.storage.h2.StorageH2ModuleDefine; - -/** - * @author peng-yongsheng - */ -public class SegmentPost { - - public static void main(String[] args) throws IOException, InterruptedException, CollectorException { - SystemConfig.DATA_PATH = "/Users/pengys5/code/sky-walking/sky-walking/apm-collector/data"; - - ElasticSearchClient elasticSearchClient = new ElasticSearchClient("CollectorDBCluster", true, "127.0.0.1:9300"); - elasticSearchClient.initialize(); - StorageElasticSearchModuleDefine storageElasticSearchModuleDefine = new StorageElasticSearchModuleDefine(); - storageElasticSearchModuleDefine.injectClientIntoDAO(elasticSearchClient); - - H2Client h2Client = new H2Client("jdbc:h2:tcp://localhost/~/test", "sa", ""); - h2Client.initialize(); - StorageH2ModuleDefine storageH2ModuleDefine = new StorageH2ModuleDefine(); - storageH2ModuleDefine.injectClientIntoDAO(h2Client); - - long now = TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()); - - IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName()); - InstanceDataDefine.Instance consumerInstance = new InstanceDataDefine.Instance("2", 2, "dubbox-consumer", now, 2, now, osInfo("consumer").toString()); - instanceDAO.save(consumerInstance); - InstanceDataDefine.Instance providerInstance = new InstanceDataDefine.Instance("3", 3, "dubbox-provider", now, 3, now, osInfo("provider").toString()); - instanceDAO.save(providerInstance); - - IApplicationDAO applicationDAO = (IApplicationDAO)DAOContainer.INSTANCE.get(IApplicationDAO.class.getName()); - - ApplicationDataDefine.Application userApplication = new ApplicationDataDefine.Application("1", "User", 1); - applicationDAO.save(userApplication); - ApplicationDataDefine.Application consumerApplication = new ApplicationDataDefine.Application("2", "dubbox-consumer", 2); - applicationDAO.save(consumerApplication); - ApplicationDataDefine.Application providerApplication = new ApplicationDataDefine.Application("3", "dubbox-provider", 3); - applicationDAO.save(providerApplication); - ApplicationDataDefine.Application peer = new ApplicationDataDefine.Application("4", "172.25.0.4:20880", 4); - applicationDAO.save(peer); - - IServiceNameDAO serviceNameDAO = (IServiceNameDAO)DAOContainer.INSTANCE.get(IServiceNameDAO.class.getName()); - - ServiceNameDataDefine.ServiceName serviceName1 = new ServiceNameDataDefine.ServiceName("1", "", 0, 1); - serviceNameDAO.save(serviceName1); - ServiceNameDataDefine.ServiceName serviceName2 = new ServiceNameDataDefine.ServiceName("2", "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", 2, 2); - serviceNameDAO.save(serviceName2); - ServiceNameDataDefine.ServiceName serviceName3 = new ServiceNameDataDefine.ServiceName("3", "/dubbox-case/case/dubbox-rest", 2, 3); - serviceNameDAO.save(serviceName3); - ServiceNameDataDefine.ServiceName serviceName4 = new ServiceNameDataDefine.ServiceName("4", "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", 3, 4); - serviceNameDAO.save(serviceName4); - - while (true) { - JsonElement consumer = JsonFileReader.INSTANCE.read("json/segment/normal/dubbox-consumer.json"); - modifyTime(consumer); - HttpClientTools.INSTANCE.post("http://localhost:12800/segments", consumer.toString()); - - JsonElement provider = JsonFileReader.INSTANCE.read("json/segment/normal/dubbox-provider.json"); - modifyTime(provider); - HttpClientTools.INSTANCE.post("http://localhost:12800/segments", provider.toString()); - - DIFF = 0; - Thread.sleep(1000); - break; - } - } - - private static long DIFF = 0; - - private static void modifyTime(JsonElement jsonElement) { - JsonArray segmentArray = jsonElement.getAsJsonArray(); - for (JsonElement element : segmentArray) { - JsonObject segmentObj = element.getAsJsonObject(); - JsonArray spans = segmentObj.get("sg").getAsJsonObject().get("ss").getAsJsonArray(); - for (JsonElement span : spans) { - long startTime = span.getAsJsonObject().get("st").getAsLong(); - long endTime = span.getAsJsonObject().get("et").getAsLong(); - - if (DIFF == 0) { - DIFF = System.currentTimeMillis() - startTime; - } - - span.getAsJsonObject().addProperty("st", startTime + DIFF); - span.getAsJsonObject().addProperty("et", endTime + DIFF); - } - } - } - - private static JsonObject osInfo(String hostName) { - JsonObject osInfoJson = new JsonObject(); - osInfoJson.addProperty("osName", "Linux"); - osInfoJson.addProperty("hostName", hostName); - osInfoJson.addProperty("processId", 1); - - JsonArray ipv4Array = new JsonArray(); - ipv4Array.add("123.123.123.123"); - ipv4Array.add("124.124.124.124"); - osInfoJson.add("ipv4s", ipv4Array); - - return osInfoJson; - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ApplicationRegister.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ApplicationRegister.java deleted file mode 100644 index 3a5a2788d..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ApplicationRegister.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.mock.grpc; - -import io.grpc.ManagedChannel; -import org.skywalking.apm.network.proto.Application; -import org.skywalking.apm.network.proto.ApplicationMapping; -import org.skywalking.apm.network.proto.ApplicationRegisterServiceGrpc; - -/** - * @author peng-yongsheng - */ -public class ApplicationRegister { - - public static int register(ManagedChannel channel, String applicationCode) { - ApplicationRegisterServiceGrpc.ApplicationRegisterServiceBlockingStub stub = ApplicationRegisterServiceGrpc.newBlockingStub(channel); - Application application = Application.newBuilder().addApplicationCode(applicationCode).build(); - ApplicationMapping mapping = stub.register(application); - int applicationId = mapping.getApplication(0).getValue(); - - try { - Thread.sleep(10); - } catch (InterruptedException e) { - } - return applicationId; - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/GrpcSegmentPost.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/GrpcSegmentPost.java deleted file mode 100644 index 6c38d44b9..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/GrpcSegmentPost.java +++ /dev/null @@ -1,422 +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.mock.grpc; - -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; -import org.junit.Test; -import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.network.proto.Downstream; -import org.skywalking.apm.network.proto.KeyWithStringValue; -import org.skywalking.apm.network.proto.LogMessage; -import org.skywalking.apm.network.proto.RefType; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.TraceSegmentReference; -import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class GrpcSegmentPost { - - private final Logger logger = LoggerFactory.getLogger(GrpcSegmentPost.class); - - private AtomicLong sequence = new AtomicLong(1); - - @Test - public void init() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).maxInboundMessageSize(1024 * 1024 * 50).usePlaintext(true).build(); - - int consumerApplicationId = 0; - int providerApplicationId = 0; - int consumerInstanceId = 0; - int providerInstanceId = 0; - int consumerEntryServiceId = 0; - int consumerExitServiceId = 0; - int consumerExitApplicationId = 0; - int providerEntryServiceId = 0; - - while (consumerApplicationId == 0) { - consumerApplicationId = ApplicationRegister.register(channel, "consumer"); - } - while (consumerExitApplicationId == 0) { - consumerExitApplicationId = ApplicationRegister.register(channel, "172.25.0.4:20880"); - } - while (providerApplicationId == 0) { - providerApplicationId = ApplicationRegister.register(channel, "provider"); - } - while (consumerInstanceId == 0) { - consumerInstanceId = InstanceRegister.register(channel, "ConsumerUUID", consumerApplicationId, "consumer_host_name", 1); - } - while (providerInstanceId == 0) { - providerInstanceId = InstanceRegister.register(channel, "ProviderUUID", providerApplicationId, "provider_host_name", 2); - } - while (consumerEntryServiceId == 0) { - consumerEntryServiceId = ServiceRegister.register(channel, consumerApplicationId, "/dubbox-case/case/dubbox-rest"); - } - while (consumerExitServiceId == 0) { - consumerExitServiceId = ServiceRegister.register(channel, consumerApplicationId, "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - } - while (providerEntryServiceId == 0) { - providerEntryServiceId = ServiceRegister.register(channel, providerApplicationId, "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - } - - Ids ids = new Ids(); - ids.setConsumerApplicationId(consumerApplicationId); - ids.setProviderApplicationId(providerApplicationId); - ids.setConsumerInstanceId(consumerInstanceId); - ids.setProviderInstanceId(providerInstanceId); - ids.setConsumerEntryServiceId(consumerEntryServiceId); - ids.setConsumerExitServiceId(consumerExitServiceId); - ids.setConsumerExitApplicationId(consumerExitApplicationId); - - long startTime = TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()); - logger.info("start time: {}", startTime); - - int count = 10; - ThreadCount threadCount = new ThreadCount(count); - for (int i = 0; i < count; i++) { - Status status = new Status(); - BuildNewSegment buildNewSegment = new BuildNewSegment(channel, ids, threadCount, i, status); - Executors.newSingleThreadExecutor().execute(buildNewSegment); - } - - while (threadCount.getCount() != 0) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - } - } - long endTime = TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis()); - logger.info("end time: {}", endTime); - - channel.shutdownNow(); - while (!channel.isTerminated()) { - try { - channel.awaitTermination(100, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.error(e.getMessage(), e); - } - } - } - - class BuildNewSegment implements Runnable { - private final ManagedChannel segmentChannel; - private final Ids ids; - private final ThreadCount threadCount; - private final int procNo; - private final Status status; - private StreamObserver streamObserver; - - public BuildNewSegment(ManagedChannel segmentChannel, - Ids ids, ThreadCount threadCount, int procNo, - Status status) { - this.segmentChannel = segmentChannel; - this.ids = ids; - this.threadCount = threadCount; - this.procNo = procNo; - this.status = status; - } - - @Override public void run() { - statusChange(); - int i = 0; - while (i < 50000) { - send(streamObserver, ids); - - i++; - if (i % 10000 == 0) { - logger.info("process no: {}, send segment count: {}", procNo, i); - streamObserver.onCompleted(); - while (!status.isFinish) { - try { - Thread.sleep(10); - } catch (InterruptedException e) { - } - } - status.setFinish(false); - statusChange(); - } - } - this.threadCount.finishOne(); - } - - private void statusChange() { - TraceSegmentServiceGrpc.TraceSegmentServiceStub stub = TraceSegmentServiceGrpc.newStub(segmentChannel); - streamObserver = stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - } - - @Override public void onCompleted() { - status.setFinish(true); - logger.info("process no: {}, server completed", procNo); - } - }); - } - } - - public void send(StreamObserver streamObserver, Ids ids) { - long now = System.currentTimeMillis(); - UniqueId consumerSegmentId = createSegmentId(); - UniqueId providerSegmentId = createSegmentId(); - - streamObserver.onNext(createConsumerSegment(consumerSegmentId, ids, now)); - streamObserver.onNext(createProviderSegment(consumerSegmentId, providerSegmentId, ids, now)); - } - - private UpstreamSegment createConsumerSegment(UniqueId segmentId, Ids ids, long timestamp) { - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(segmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(ids.consumerApplicationId); - segmentBuilder.setApplicationInstanceId(ids.consumerInstanceId); - segmentBuilder.setTraceSegmentId(segmentId); - - SpanObject.Builder entrySpan = SpanObject.newBuilder(); - entrySpan.setSpanId(0); - entrySpan.setSpanType(SpanType.Entry); - entrySpan.setSpanLayer(SpanLayer.Http); - entrySpan.setParentSpanId(-1); - entrySpan.setStartTime(timestamp); - entrySpan.setEndTime(timestamp + 3000); - entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - entrySpan.setOperationNameId(ids.getConsumerEntryServiceId()); - entrySpan.setIsError(false); - - LogMessage.Builder entryLogMessage = LogMessage.newBuilder(); - entryLogMessage.setTime(timestamp); - - KeyWithStringValue.Builder data1 = KeyWithStringValue.newBuilder(); - data1.setKey("url"); - data1.setValue("http://localhost:18080/dubbox-case/case/dubbox-rest"); - entryLogMessage.addData(data1); - - KeyWithStringValue.Builder data2 = KeyWithStringValue.newBuilder(); - data2.setKey("http.method"); - data2.setValue("GET"); - entryLogMessage.addData(data2); - entrySpan.addLogs(entryLogMessage); - segmentBuilder.addSpans(entrySpan); - - SpanObject.Builder exitSpan = SpanObject.newBuilder(); - exitSpan.setSpanId(1); - exitSpan.setSpanType(SpanType.Exit); - exitSpan.setSpanLayer(SpanLayer.RPCFramework); - exitSpan.setParentSpanId(0); - exitSpan.setStartTime(timestamp + 500); - exitSpan.setEndTime(timestamp + 2500); - exitSpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - exitSpan.setOperationNameId(ids.getConsumerExitServiceId()); - exitSpan.setPeerId(ids.consumerExitApplicationId); - exitSpan.setIsError(false); - - LogMessage.Builder exitLogMessage = LogMessage.newBuilder(); - exitLogMessage.setTime(timestamp); - - KeyWithStringValue.Builder data = KeyWithStringValue.newBuilder(); - data.setKey("url"); - data.setValue("rest://172.25.0.4:20880/org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - exitLogMessage.addData(data); - exitSpan.addLogs(exitLogMessage); - segmentBuilder.addSpans(exitSpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - return upstream.build(); - } - - private UpstreamSegment createProviderSegment(UniqueId consumerSegmentId, UniqueId providerSegmentId, Ids ids, - long timestamp) { - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(consumerSegmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(ids.providerApplicationId); - segmentBuilder.setApplicationInstanceId(ids.providerInstanceId); - segmentBuilder.setTraceSegmentId(providerSegmentId); - - TraceSegmentReference.Builder referenceBuilder = TraceSegmentReference.newBuilder(); - referenceBuilder.setParentTraceSegmentId(consumerSegmentId); - referenceBuilder.setParentApplicationInstanceId(ids.getConsumerInstanceId()); - referenceBuilder.setParentSpanId(1); - referenceBuilder.setParentServiceId(ids.getConsumerExitServiceId()); - referenceBuilder.setEntryApplicationInstanceId(ids.getConsumerInstanceId()); - referenceBuilder.setEntryServiceId(ids.getConsumerEntryServiceId()); - referenceBuilder.setNetworkAddressId(ids.consumerExitApplicationId); - referenceBuilder.setRefType(RefType.CrossProcess); - segmentBuilder.addRefs(referenceBuilder); - - SpanObject.Builder entrySpan = SpanObject.newBuilder(); - entrySpan.setSpanId(0); - entrySpan.setSpanType(SpanType.Entry); - entrySpan.setSpanLayer(SpanLayer.RPCFramework); - entrySpan.setParentSpanId(-1); - entrySpan.setStartTime(timestamp + 1000); - entrySpan.setEndTime(timestamp + 2000); - entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - entrySpan.setOperationNameId(ids.getProviderEntryServiceId()); - entrySpan.setIsError(false); - - LogMessage.Builder entryLogMessage = LogMessage.newBuilder(); - entryLogMessage.setTime(timestamp); - - KeyWithStringValue.Builder data1 = KeyWithStringValue.newBuilder(); - data1.setKey("url"); - data1.setValue("rest://172.25.0.4:20880/org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - entryLogMessage.addData(data1); - - KeyWithStringValue.Builder data2 = KeyWithStringValue.newBuilder(); - data2.setKey("http.method"); - data2.setValue("GET"); - entryLogMessage.addData(data2); - entrySpan.addLogs(entryLogMessage); - segmentBuilder.addSpans(entrySpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - return upstream.build(); - } - - private UniqueId createSegmentId() { - long id = sequence.getAndIncrement(); - UniqueId.Builder builder = UniqueId.newBuilder(); - builder.addIdParts(id); - builder.addIdParts(id); - builder.addIdParts(id); - return builder.build(); - } - - class Ids { - private int consumerApplicationId = 0; - private int providerApplicationId = 0; - private int consumerInstanceId = 0; - private int providerInstanceId = 0; - private int consumerEntryServiceId = 0; - private int consumerExitServiceId = 0; - private int consumerExitApplicationId = 0; - private int providerEntryServiceId = 0; - - public int getConsumerApplicationId() { - return consumerApplicationId; - } - - public void setConsumerApplicationId(int consumerApplicationId) { - this.consumerApplicationId = consumerApplicationId; - } - - public int getProviderApplicationId() { - return providerApplicationId; - } - - public void setProviderApplicationId(int providerApplicationId) { - this.providerApplicationId = providerApplicationId; - } - - public int getConsumerInstanceId() { - return consumerInstanceId; - } - - public void setConsumerInstanceId(int consumerInstanceId) { - this.consumerInstanceId = consumerInstanceId; - } - - public int getProviderInstanceId() { - return providerInstanceId; - } - - public void setProviderInstanceId(int providerInstanceId) { - this.providerInstanceId = providerInstanceId; - } - - public int getConsumerEntryServiceId() { - return consumerEntryServiceId; - } - - public void setConsumerEntryServiceId(int consumerEntryServiceId) { - this.consumerEntryServiceId = consumerEntryServiceId; - } - - public int getConsumerExitServiceId() { - return consumerExitServiceId; - } - - public void setConsumerExitServiceId(int consumerExitServiceId) { - this.consumerExitServiceId = consumerExitServiceId; - } - - public int getConsumerExitApplicationId() { - return consumerExitApplicationId; - } - - public void setConsumerExitApplicationId(int consumerExitApplicationId) { - this.consumerExitApplicationId = consumerExitApplicationId; - } - - public int getProviderEntryServiceId() { - return providerEntryServiceId; - } - - public void setProviderEntryServiceId(int providerEntryServiceId) { - this.providerEntryServiceId = providerEntryServiceId; - } - } - - class ThreadCount { - private int count; - - public ThreadCount(int count) { - this.count = count; - } - - public void finishOne() { - count--; - } - - public int getCount() { - return count; - } - } - - class Status { - private boolean isFinish = false; - - public boolean isFinish() { - return isFinish; - } - - public void setFinish(boolean finish) { - isFinish = finish; - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/InstanceRegister.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/InstanceRegister.java deleted file mode 100644 index 6602d9d4f..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/InstanceRegister.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.agentstream.mock.grpc; - -import io.grpc.ManagedChannel; -import org.skywalking.apm.network.proto.ApplicationInstance; -import org.skywalking.apm.network.proto.ApplicationInstanceMapping; -import org.skywalking.apm.network.proto.InstanceDiscoveryServiceGrpc; -import org.skywalking.apm.network.proto.OSInfo; - -/** - * @author peng-yongsheng - */ -public class InstanceRegister { - - public static int register(ManagedChannel channel, String agentUUId, Integer applicationId, - String hostName, int processNo) { - InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceBlockingStub stub = InstanceDiscoveryServiceGrpc.newBlockingStub(channel); - ApplicationInstance.Builder instance = ApplicationInstance.newBuilder(); - instance.setApplicationId(applicationId); - instance.setRegisterTime(System.currentTimeMillis()); - instance.setAgentUUID(agentUUId); - - OSInfo.Builder osInfo = OSInfo.newBuilder(); - osInfo.setHostname(hostName); - osInfo.setOsName("Linux"); - osInfo.setProcessNo(processNo); - osInfo.addIpv4S("10.0.0.1"); - osInfo.addIpv4S("10.0.0.2"); - instance.setOsinfo(osInfo.build()); - - ApplicationInstanceMapping mapping = stub.register(instance.build()); - int instanceId = mapping.getApplicationInstanceId(); - - try { - Thread.sleep(10); - } catch (InterruptedException e) { - } - return instanceId; - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ServiceRegister.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ServiceRegister.java deleted file mode 100644 index 6666eea65..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/ServiceRegister.java +++ /dev/null @@ -1,50 +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.mock.grpc; - -import io.grpc.ManagedChannel; -import org.skywalking.apm.network.proto.ServiceNameCollection; -import org.skywalking.apm.network.proto.ServiceNameDiscoveryServiceGrpc; -import org.skywalking.apm.network.proto.ServiceNameElement; -import org.skywalking.apm.network.proto.ServiceNameMappingCollection; - -/** - * @author peng-yongsheng - */ -public class ServiceRegister { - - public static int register(ManagedChannel channel, int applicationId, String serviceName) { - ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceBlockingStub stub = ServiceNameDiscoveryServiceGrpc.newBlockingStub(channel); - ServiceNameCollection.Builder collection = ServiceNameCollection.newBuilder(); - - ServiceNameElement.Builder element = ServiceNameElement.newBuilder(); - element.setApplicationId(applicationId); - element.setServiceName(serviceName); - collection.addElements(element); - - ServiceNameMappingCollection mappingCollection = stub.discovery(collection.build()); - int serviceId = mappingCollection.getElements(0).getServiceId(); - - try { - Thread.sleep(10); - } catch (InterruptedException e) { - } - return serviceId; - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryHasExitNoRefSpan.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryHasExitNoRefSpan.java deleted file mode 100644 index ee1917d4f..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryHasExitNoRefSpan.java +++ /dev/null @@ -1,133 +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.mock.grpc; - -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import org.skywalking.apm.network.proto.Downstream; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class SingleHasEntryHasExitNoRefSpan { - - public static void main(String[] args) { - Post post = new Post(); - post.send(); - - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - } - } - - static class Post { - private final Logger logger = LoggerFactory.getLogger(Post.class); - - public void send() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).maxInboundMessageSize(1024 * 1024 * 50).usePlaintext(true).build(); - - int applicationId = 0; - int instanceId = 0; - int entryServiceId = 0; - while (applicationId == 0) { - applicationId = ApplicationRegister.register(channel, "consumer"); - } - - while (instanceId == 0) { - instanceId = InstanceRegister.register(channel, "ConsumerUUID", applicationId, "consumer_host_name", 1); - } - - while (entryServiceId == 0) { - entryServiceId = ServiceRegister.register(channel, applicationId, "/dubbox-case/case/dubbox-rest"); - } - - TraceSegmentServiceGrpc.TraceSegmentServiceStub stub = TraceSegmentServiceGrpc.newStub(channel); - StreamObserver streamObserver = stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - } - - @Override public void onCompleted() { - } - }); - - long now = System.currentTimeMillis(); - - int id = 1; - UniqueId.Builder builder = UniqueId.newBuilder(); - builder.addIdParts(id); - builder.addIdParts(id); - builder.addIdParts(id); - UniqueId segmentId = builder.build(); - - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(segmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(applicationId); - segmentBuilder.setApplicationInstanceId(instanceId); - segmentBuilder.setTraceSegmentId(segmentId); - - SpanObject.Builder entrySpan = SpanObject.newBuilder(); - entrySpan.setSpanId(0); - entrySpan.setSpanType(SpanType.Entry); - entrySpan.setSpanLayer(SpanLayer.Http); - entrySpan.setParentSpanId(-1); - entrySpan.setStartTime(now); - entrySpan.setEndTime(now + 3000); - entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - entrySpan.setOperationNameId(entryServiceId); - entrySpan.setIsError(false); - segmentBuilder.addSpans(entrySpan); - - SpanObject.Builder exitSpan = SpanObject.newBuilder(); - exitSpan.setSpanId(1); - exitSpan.setSpanType(SpanType.Exit); - exitSpan.setSpanLayer(SpanLayer.Database); - exitSpan.setParentSpanId(0); - exitSpan.setStartTime(now); - exitSpan.setEndTime(now + 3000); - exitSpan.setComponentId(ComponentsDefine.MONGODB.getId()); - exitSpan.setOperationNameId(entryServiceId); - exitSpan.setIsError(false); - exitSpan.setPeer("localhost:8888"); - segmentBuilder.addSpans(exitSpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - - streamObserver.onNext(upstream.build()); - streamObserver.onCompleted(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitHasRefSpan.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitHasRefSpan.java deleted file mode 100644 index 048dd9c13..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitHasRefSpan.java +++ /dev/null @@ -1,150 +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.mock.grpc; - -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import org.skywalking.apm.network.proto.Downstream; -import org.skywalking.apm.network.proto.RefType; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.TraceSegmentReference; -import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class SingleHasEntryNoExitHasRefSpan { - - public static void main(String[] args) { - Post post = new Post(); - post.send(); - - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - } - } - - static class Post { - private final Logger logger = LoggerFactory.getLogger(Post.class); - - public void send() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).maxInboundMessageSize(1024 * 1024 * 50).usePlaintext(true).build(); - - int consumerApplicationId = 0; - int providerApplicationId = 0; - int consumerInstanceId = 0; - int providerInstanceId = 0; - int consumerEntryServiceId = 0; - int consumerExitServiceId = 0; - int consumerExitApplicationId = 0; - int providerEntryServiceId = 0; - - while (consumerApplicationId == 0) { - consumerApplicationId = ApplicationRegister.register(channel, "consumer"); - } - while (consumerExitApplicationId == 0) { - consumerExitApplicationId = ApplicationRegister.register(channel, "172.25.0.4:20880"); - } - while (providerApplicationId == 0) { - providerApplicationId = ApplicationRegister.register(channel, "provider"); - } - while (consumerInstanceId == 0) { - consumerInstanceId = InstanceRegister.register(channel, "ConsumerUUID", consumerApplicationId, "consumer_host_name", 1); - } - while (providerInstanceId == 0) { - providerInstanceId = InstanceRegister.register(channel, "ProviderUUID", providerApplicationId, "provider_host_name", 2); - } - while (consumerEntryServiceId == 0) { - consumerEntryServiceId = ServiceRegister.register(channel, consumerApplicationId, "/dubbox-case/case/dubbox-rest"); - } - while (consumerExitServiceId == 0) { - consumerExitServiceId = ServiceRegister.register(channel, consumerApplicationId, "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - } - while (providerEntryServiceId == 0) { - providerEntryServiceId = ServiceRegister.register(channel, providerApplicationId, "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - } - - TraceSegmentServiceGrpc.TraceSegmentServiceStub stub = TraceSegmentServiceGrpc.newStub(channel); - StreamObserver streamObserver = stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - } - - @Override public void onCompleted() { - } - }); - - long now = System.currentTimeMillis(); - - int id = 1; - UniqueId.Builder builder = UniqueId.newBuilder(); - builder.addIdParts(id); - builder.addIdParts(id); - builder.addIdParts(id); - UniqueId segmentId = builder.build(); - - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(segmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(consumerApplicationId); - segmentBuilder.setApplicationInstanceId(consumerInstanceId); - segmentBuilder.setTraceSegmentId(segmentId); - - TraceSegmentReference.Builder referenceBuilder = TraceSegmentReference.newBuilder(); - referenceBuilder.setEntryApplicationInstanceId(providerInstanceId); - referenceBuilder.setEntryServiceName("/rest/test"); - referenceBuilder.setParentApplicationInstanceId(providerInstanceId); - referenceBuilder.setParentServiceName("/rest/test"); - referenceBuilder.setRefType(RefType.CrossProcess); - referenceBuilder.setNetworkAddress("localhost:8080"); - segmentBuilder.addRefs(referenceBuilder); - - SpanObject.Builder entrySpan = SpanObject.newBuilder(); - entrySpan.setSpanId(0); - entrySpan.setSpanType(SpanType.Entry); - entrySpan.setSpanLayer(SpanLayer.Http); - entrySpan.setParentSpanId(-1); - entrySpan.setStartTime(now); - entrySpan.setEndTime(now + 3000); - entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - entrySpan.setOperationNameId(consumerEntryServiceId); - entrySpan.setIsError(false); - segmentBuilder.addSpans(entrySpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - - streamObserver.onNext(upstream.build()); - streamObserver.onCompleted(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitNoRefSpan.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitNoRefSpan.java deleted file mode 100644 index 0d2db0b0a..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleHasEntryNoExitNoRefSpan.java +++ /dev/null @@ -1,120 +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.mock.grpc; - -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import org.skywalking.apm.network.proto.Downstream; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class SingleHasEntryNoExitNoRefSpan { - - public static void main(String[] args) { - Post post = new Post(); - post.send(); - - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - } - } - - static class Post { - private final Logger logger = LoggerFactory.getLogger(Post.class); - - public void send() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).maxInboundMessageSize(1024 * 1024 * 50).usePlaintext(true).build(); - - int applicationId = 0; - int instanceId = 0; - int entryServiceId = 0; - while (applicationId == 0) { - applicationId = ApplicationRegister.register(channel, "consumer"); - } - - while (instanceId == 0) { - instanceId = InstanceRegister.register(channel, "ConsumerUUID", applicationId, "consumer_host_name", 1); - } - - while (entryServiceId == 0) { - entryServiceId = ServiceRegister.register(channel, applicationId, "/dubbox-case/case/dubbox-rest"); - } - - TraceSegmentServiceGrpc.TraceSegmentServiceStub stub = TraceSegmentServiceGrpc.newStub(channel); - StreamObserver streamObserver = stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - } - - @Override public void onCompleted() { - } - }); - - long now = System.currentTimeMillis(); - - int id = 1; - UniqueId.Builder builder = UniqueId.newBuilder(); - builder.addIdParts(id); - builder.addIdParts(id); - builder.addIdParts(id); - UniqueId segmentId = builder.build(); - - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(segmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(applicationId); - segmentBuilder.setApplicationInstanceId(instanceId); - segmentBuilder.setTraceSegmentId(segmentId); - - SpanObject.Builder entrySpan = SpanObject.newBuilder(); - entrySpan.setSpanId(0); - entrySpan.setSpanType(SpanType.Entry); - entrySpan.setSpanLayer(SpanLayer.Http); - entrySpan.setParentSpanId(-1); - entrySpan.setStartTime(now); - entrySpan.setEndTime(now + 3000); - entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - entrySpan.setOperationNameId(entryServiceId); - entrySpan.setIsError(false); - segmentBuilder.addSpans(entrySpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - - streamObserver.onNext(upstream.build()); - streamObserver.onCompleted(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleNoEntryHasExitNoRefSpan.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleNoEntryHasExitNoRefSpan.java deleted file mode 100644 index cad21030a..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/mock/grpc/SingleNoEntryHasExitNoRefSpan.java +++ /dev/null @@ -1,121 +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.mock.grpc; - -import io.grpc.ManagedChannel; -import io.grpc.ManagedChannelBuilder; -import io.grpc.stub.StreamObserver; -import org.skywalking.apm.network.proto.Downstream; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.TraceSegmentServiceGrpc; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class SingleNoEntryHasExitNoRefSpan { - - public static void main(String[] args) { - Post post = new Post(); - post.send(); - - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - } - } - - static class Post { - private final Logger logger = LoggerFactory.getLogger(Post.class); - - public void send() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).maxInboundMessageSize(1024 * 1024 * 50).usePlaintext(true).build(); - - int applicationId = 0; - int instanceId = 0; - int entryServiceId = 0; - while (applicationId == 0) { - applicationId = ApplicationRegister.register(channel, "consumer"); - } - - while (instanceId == 0) { - instanceId = InstanceRegister.register(channel, "ConsumerUUID", applicationId, "consumer_host_name", 1); - } - - while (entryServiceId == 0) { - entryServiceId = ServiceRegister.register(channel, applicationId, "/dubbox-case/case/dubbox-rest"); - } - - TraceSegmentServiceGrpc.TraceSegmentServiceStub stub = TraceSegmentServiceGrpc.newStub(channel); - StreamObserver streamObserver = stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - } - - @Override public void onCompleted() { - } - }); - - long now = System.currentTimeMillis(); - - int id = 1; - UniqueId.Builder builder = UniqueId.newBuilder(); - builder.addIdParts(id); - builder.addIdParts(id); - builder.addIdParts(id); - UniqueId segmentId = builder.build(); - - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(segmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(applicationId); - segmentBuilder.setApplicationInstanceId(instanceId); - segmentBuilder.setTraceSegmentId(segmentId); - - SpanObject.Builder exitSpan = SpanObject.newBuilder(); - exitSpan.setSpanId(0); - exitSpan.setSpanType(SpanType.Exit); - exitSpan.setSpanLayer(SpanLayer.Database); - exitSpan.setParentSpanId(-1); - exitSpan.setStartTime(now); - exitSpan.setEndTime(now + 3000); - exitSpan.setComponentId(ComponentsDefine.MONGODB.getId()); - exitSpan.setOperationNameId(entryServiceId); - exitSpan.setIsError(false); - exitSpan.setPeer("localhost:8888"); - segmentBuilder.addSpans(exitSpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - - streamObserver.onNext(upstream.build()); - streamObserver.onCompleted(); - } - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java b/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java deleted file mode 100644 index 1409ed754..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/java/org/skywalking/apm/collector/agentstream/worker/segment/buffer/SegmentBufferWriteWorkerTestCase.java +++ /dev/null @@ -1,95 +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.segment.buffer; - -import org.skywalking.apm.collector.agentstream.worker.segment.standardization.SegmentStandardizationWorker; -import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException; -import org.skywalking.apm.collector.stream.worker.WorkerException; -import org.skywalking.apm.network.proto.SpanLayer; -import org.skywalking.apm.network.proto.SpanObject; -import org.skywalking.apm.network.proto.SpanType; -import org.skywalking.apm.network.proto.TraceSegmentObject; -import org.skywalking.apm.network.proto.UniqueId; -import org.skywalking.apm.network.proto.UpstreamSegment; -import org.skywalking.apm.network.trace.component.ComponentsDefine; - -/** - * @author peng-yongsheng - */ -public class SegmentBufferWriteWorkerTestCase { - - public static void main(String[] args) throws WorkerException, ProviderNotFoundException { - SegmentBufferConfig.BUFFER_PATH = "/Users/peng-yongsheng/code/sky-walking/sky-walking/apm-collector/buffer/"; - - SegmentStandardizationWorker worker = new SegmentStandardizationWorker(null, null); - worker.preStart(); - worker.allocateJob(buildSegment()); - worker.allocateJob(buildSegment()); - worker.allocateJob(buildSegment()); - worker.allocateJob(buildSegment()); - worker.allocateJob(buildSegment()); - } - - private static UpstreamSegment buildSegment() { - long now = System.currentTimeMillis(); - - int id = 1; - UniqueId.Builder builder = UniqueId.newBuilder(); - builder.addIdParts(id); - builder.addIdParts(id); - builder.addIdParts(id); - UniqueId segmentId = builder.build(); - - UpstreamSegment.Builder upstream = UpstreamSegment.newBuilder(); - upstream.addGlobalTraceIds(segmentId); - - TraceSegmentObject.Builder segmentBuilder = TraceSegmentObject.newBuilder(); - segmentBuilder.setApplicationId(1); - segmentBuilder.setApplicationInstanceId(1); - segmentBuilder.setTraceSegmentId(segmentId); - - SpanObject.Builder entrySpan = SpanObject.newBuilder(); - entrySpan.setSpanId(0); - entrySpan.setSpanType(SpanType.Entry); - entrySpan.setSpanLayer(SpanLayer.Http); - entrySpan.setParentSpanId(-1); - entrySpan.setStartTime(now); - entrySpan.setEndTime(now + 3000); - entrySpan.setComponentId(ComponentsDefine.TOMCAT.getId()); - entrySpan.setOperationNameId(1); - entrySpan.setIsError(false); - segmentBuilder.addSpans(entrySpan); - - SpanObject.Builder exitSpan = SpanObject.newBuilder(); - exitSpan.setSpanId(1); - exitSpan.setSpanType(SpanType.Exit); - exitSpan.setSpanLayer(SpanLayer.Database); - exitSpan.setParentSpanId(0); - exitSpan.setStartTime(now); - exitSpan.setEndTime(now + 3000); - exitSpan.setComponentId(ComponentsDefine.MONGODB.getId()); - exitSpan.setOperationNameId(2); - exitSpan.setIsError(false); - exitSpan.setPeer("localhost:8888"); - segmentBuilder.addSpans(exitSpan); - - upstream.setSegment(segmentBuilder.build().toByteString()); - return upstream.build(); - } -} diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/application-register.json b/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/application-register.json deleted file mode 100644 index eb829c2cb..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/application-register.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "dubbox-consumer", - "dubbox-provider" -] \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-consumer.json b/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-consumer.json deleted file mode 100644 index 57c79c9c3..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-consumer.json +++ /dev/null @@ -1,71 +0,0 @@ -[ - { - "gt": [ - [ - 230150, - 185809, - 24040000 - ] - ], - "sg": { - "ts": [ - 230150, - 185809, - 24040000 - ], - "ai": 2, - "ii": 2, - "rs": [], - "ss": [ - { - "si": 1, - "tv": 1, - "lv": 1, - "ps": 0, - "st": 1501858094526, - "et": 1501858097004, - "ci": 3, - "cn": "", - "oi": 0, - "on": "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", - "pi": 0, - "pn": "172.25.0.4:20880", - "ie": false, - "to": [ - { - "k": "url", - "v": "rest://172.25.0.4:20880/org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()" - } - ], - "lo": [] - }, - { - "si": 0, - "tv": 0, - "lv": 2, - "ps": -1, - "st": 1501858092409, - "et": 1501858097033, - "ci": 1, - "cn": "", - "oi": 0, - "on": "/dubbox-case/case/dubbox-rest", - "pi": 0, - "pn": "", - "ie": false, - "to": [ - { - "k": "url", - "v": "http://localhost:18080/dubbox-case/case/dubbox-rest" - }, - { - "k": "http.method", - "v": "GET" - } - ], - "lo": [] - } - ] - } - } -] \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-provider.json b/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-provider.json deleted file mode 100644 index 28a61aee0..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/dubbox-provider.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "gt": [ - [ - 230150, - 185809, - 24040000 - ] - ], - "sg": { - "ts": [ - 137150, - 185809, - 48780000 - ], - "ai": 3, - "ii": 3, - "rs": [ - { - "ts": [ - 230150, - 185809, - 24040000 - ], - "ai": 2, - "si": 1, - "vi": 0, - "vn": "/dubbox-case/case/dubbox-rest", - "ni": 0, - "nn": "172.25.0.4:20880", - "ea": 2, - "ei": 0, - "en": "/dubbox-case/case/dubbox-rest", - "rn": 0 - } - ], - "ss": [ - { - "si": 0, - "tv": 0, - "lv": 2, - "ps": -1, - "st": 1501858094726, - "et": 1501858096804, - "ci": 3, - "cn": "", - "oi": 0, - "on": "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", - "pi": 0, - "pn": "", - "ie": false, - "to": [ - { - "k": "url", - "v": "rest://172.25.0.4:20880/org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()" - }, - { - "k": "http.method", - "v": "GET" - } - ], - "lo": [] - } - ] - } - } -] \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/instance-register.json b/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/instance-register.json deleted file mode 100644 index f29ab121d..000000000 --- a/apm-collector/apm-collector-agentstream/src/test/resources/json/segment/normal/instance-register.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ai": 0, - "au": "dubbox-consumer", - "rt": 1501858094526 -} \ No newline at end of file diff --git a/apm-collector/apm-collector-boot/bin/collector-service.bat b/apm-collector/apm-collector-boot/bin/collector-service.bat deleted file mode 100755 index eb58f7ebc..000000000 --- a/apm-collector/apm-collector-boot/bin/collector-service.bat +++ /dev/null @@ -1,23 +0,0 @@ -@echo off - -setlocal -set COLLECOTR_PROCESS_TITLE=Skywalking-Collector -set COLLECTOR_BASE_PATH=%~dp0%.. -set COLLECTOR_RUNTIME_OPTIONS="-Xms256M -Xmx512M -Dcollector.logDir=%COLLECTOR_BASE_PATH%\logs" - -set CLASSPATH=%COLLECTOR_BASE_PATH%\config; -SET CLASSPATH=%COLLECTOR_BASE_PATH%\libs\*;%CLASSPATH% - -if defined JAVA_HOME ( - set _EXECJAVA="%JAVA_HOME:"=%"\bin\java -) - -if not defined JAVA_HOME ( - echo "JAVA_HOME not set." - set _EXECJAVA=java -) - -start /MIN "%COLLECOTR_PROCESS_TITLE%" %_EXECJAVA% "%COLLECTOR_RUNTIME_OPTIONS%" -cp "%CLASSPATH%" org.skywalking.apm.collector.boot.CollectorBootStartUp & -echo Collector started successfully! - -endlocal diff --git a/apm-collector/apm-collector-boot/bin/collector-service.sh b/apm-collector/apm-collector-boot/bin/collector-service.sh deleted file mode 100755 index 993fa0217..000000000 --- a/apm-collector/apm-collector-boot/bin/collector-service.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash - -PRG="$0" -PRGDIR=`dirname "$PRG"` -[ -z "$COLLECTOR_HOME" ] && COLLECTOR_HOME=`cd "$PRGDIR/.." >/dev/null; pwd` - -COLLECTOR_LOGS_DIR="${COLLECTOR_HOME}/logs" -JAVA_OPTS=" -Xms256M -Xmx512M" - -if [ ! -d "${COLLECTOR_HOME}/logs" ]; then - mkdir -p "${COLLECTOR_LOGS_DIR}" -fi - -_RUNJAVA=${JAVA_HOME}/bin/java -[ -z "$JAVA_HOME" ] && _RUNJAVA=java - -CLASSPATH="$COLLECTOR_HOME/config:$CLASSPATH" -for i in "$COLLECTOR_HOME"/libs/*.jar -do - CLASSPATH="$i:$CLASSPATH" -done -COLLECTOR_OPTIONS=" -Dcollector.logDir=$COLLECTOR_LOGS_DIR" -echo "Starting collector...." - -eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} ${COLLECTOR_OPTIONS} -classpath $CLASSPATH org.skywalking.apm.collector.boot.CollectorBootStartUp \ - 2>${COLLECTOR_LOGS_DIR}/collector.log 1> /dev/null &" - -retval=$? -pid=$! -FAIL_MSG="Collector started failure!" -SUCCESS_MSG="Collector started successfully!" -[ ${retval} -eq 0 ] || (echo ${FAIL_MSG}; exit ${retval}) -sleep 1 -if ! ps -p ${pid} > /dev/null ; then - echo ${FAIL_MSG} - exit 1 -fi -echo ${SUCCESS_MSG} diff --git a/apm-collector/apm-collector-boot/bin/startup.bat b/apm-collector/apm-collector-boot/bin/startup.bat deleted file mode 100755 index 22023060d..000000000 --- a/apm-collector/apm-collector-boot/bin/startup.bat +++ /dev/null @@ -1,5 +0,0 @@ -@echo off - -setlocal -call "%~dp0"\collector-service.bat start -endlocal \ No newline at end of file diff --git a/apm-collector/apm-collector-boot/bin/startup.sh b/apm-collector/apm-collector-boot/bin/startup.sh deleted file mode 100755 index 7f9c0d3ab..000000000 --- a/apm-collector/apm-collector-boot/bin/startup.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash - -PRG="$0" -PRGDIR=`dirname "$PRG"` -EXECUTABLE=collector-service.sh - -exec "$PRGDIR"/"$EXECUTABLE" start \ No newline at end of file diff --git a/apm-collector/apm-collector-boot/docker/Dockerfile b/apm-collector/apm-collector-boot/docker/Dockerfile deleted file mode 100644 index 8e5539028..000000000 --- a/apm-collector/apm-collector-boot/docker/Dockerfile +++ /dev/null @@ -1,28 +0,0 @@ -FROM openjdk:8u111-jdk - -ENV ZK_ADDRESSES=127.0.0.1:2181 \ - ES_CLUSTER_NAME=CollectorDBCluster \ - ES_ADDRESSES=localhost:9300 \ - BIND_HOST=localhost \ - CLUSTER_BIND_HOST=localhost \ - CLUSTER_BIND_PORT=11800 \ - UI_BIND_HOST=localhost \ - UI_BIND_PORT=12800 \ - GRPC_BIND_PORT=11800 \ - AGENT_SERVER_BIND_PORT=10800 \ - AGENT_STREAM_JETTY_BIND_PORT=12800 - -ADD skywalking-collector.tar.gz /usr/local -COPY collector-service.sh /usr/local/skywalking-collector/bin -COPY log4j2.xml /usr/local/skywalking-collector/config -COPY application.yml /usr/local/skywalking-collector/config -COPY docker-entrypoint.sh / - -RUN chmod +x /usr/local/skywalking-collector/bin/collector-service.sh && chmod +x /docker-entrypoint.sh - -EXPOSE 10800 -EXPOSE 11800 -EXPOSE 12800 - -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["/usr/local/skywalking-collector/bin/collector-service.sh"] diff --git a/apm-collector/apm-collector-boot/docker/application.yml b/apm-collector/apm-collector-boot/docker/application.yml deleted file mode 100644 index a8ab6e69a..000000000 --- a/apm-collector/apm-collector-boot/docker/application.yml +++ /dev/null @@ -1,33 +0,0 @@ -cluster: - zookeeper: - hostPort: {ZK_ADDRESSES} - sessionTimeout: 100000 -agent_server: - jetty: - host: {BIND_HOST} - port: {AGENT_SERVER_BIND_PORT} - context_path: / -agent_stream: - grpc: - host: {BIND_HOST} - port: {GRPC_BIND_PORT} - jetty: - host: {UI_BIND_HOST} - port: {UI_BIND_PORT} - context_path: / -ui: - jetty: - host: {UI_BIND_HOST} - port: {UI_BIND_PORT} - context_path: / -collector_inside: - grpc: - host: {CLUSTER_BIND_HOST} - port: {CLUSTER_BIND_PORT} -storage: - elasticsearch: - cluster_name: {ES_CLUSTER_NAME} - cluster_transport_sniffer: true - cluster_nodes: {ES_ADDRESSES} - index_shards_number: 2 - index_replicas_number: 0 diff --git a/apm-collector/apm-collector-boot/docker/collector-service.sh b/apm-collector/apm-collector-boot/docker/collector-service.sh deleted file mode 100755 index 67baa12a7..000000000 --- a/apm-collector/apm-collector-boot/docker/collector-service.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -PRG="$0" -PRGDIR=`dirname "$PRG"` -[ -z "$COLLECTOR_HOME" ] && COLLECTOR_HOME=`cd "$PRGDIR/.." >/dev/null; pwd` - -CLASSPATH="$COLLECTOR_HOME/config:$CLASSPATH" -for i in "$COLLECTOR_HOME"/libs/*.jar -do - CLASSPATH="$i:$CLASSPATH" -done - -java ${JAVA_OPTS} ${COLLECTOR_OPTIONS} -classpath $CLASSPATH org.skywalking.apm.collector.boot.CollectorBootStartUp diff --git a/apm-collector/apm-collector-boot/docker/docker-entrypoint.sh b/apm-collector/apm-collector-boot/docker/docker-entrypoint.sh deleted file mode 100644 index 222d2feda..000000000 --- a/apm-collector/apm-collector-boot/docker/docker-entrypoint.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -echo "replace {ZK_ADDRESSES} to ${ZK_ADDRESSES}" -eval sed -i -e 's/\{ZK_ADDRESSES\}/${ZK_ADDRESSES}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {ES_CLUSTER_NAME} to ${ES_CLUSTER_NAME}" -eval sed -i -e 's/\{ES_CLUSTER_NAME\}/${ES_CLUSTER_NAME}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {ES_ADDRESSES} to ${ES_ADDRESSES}" -eval sed -i -e 's/\{ES_ADDRESSES\}/${ES_ADDRESSES}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {BIND_HOST} to ${BIND_HOST}" -eval sed -i -e 's/\{BIND_HOST\}/${BIND_HOST}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {GRPC_BIND_PORT} to ${GRPC_BIND_PORT}" -eval sed -i -e 's/\{GRPC_BIND_PORT\}/${GRPC_BIND_PORT}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {AGENT_SERVER_BIND_PORT} to ${AGENT_SERVER_BIND_PORT}" -eval sed -i -e 's/\{AGENT_SERVER_BIND_PORT\}/${AGENT_SERVER_BIND_PORT}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {AGENT_STREAM_JETTY_BIND_PORT} to ${AGENT_STREAM_JETTY_BIND_PORT}" -eval sed -i -e 's/\{AGENT_STREAM_JETTY_BIND_PORT\}/${AGENT_STREAM_JETTY_BIND_PORT}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {UI_BIND_HOST} to ${UI_BIND_HOST}" -eval sed -i -e 's/\{UI_BIND_HOST\}/${UI_BIND_HOST}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {UI_BIND_PORT} to ${UI_BIND_PORT}" -eval sed -i -e 's/\{UI_BIND_PORT\}/${UI_BIND_PORT}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {CLUSTER_BIND_HOST} to ${CLUSTER_BIND_HOST}" -eval sed -i -e 's/\{CLUSTER_BIND_HOST\}/${CLUSTER_BIND_HOST}/' /usr/local/skywalking-collector/config/application.yml - -echo "replace {CLUSTER_BIND_PORT} to ${CLUSTER_BIND_PORT}" -eval sed -i -e 's/\{CLUSTER_BIND_PORT\}/${CLUSTER_BIND_PORT}/' /usr/local/skywalking-collector/config/application.yml - - -exec "$@" diff --git a/apm-collector/apm-collector-boot/docker/log4j2.xml b/apm-collector/apm-collector-boot/docker/log4j2.xml deleted file mode 100644 index 44e2c384f..000000000 --- a/apm-collector/apm-collector-boot/docker/log4j2.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/apm-collector/apm-collector-boot/pom.xml b/apm-collector/apm-collector-boot/pom.xml index 918c9b866..7f6fd0560 100644 --- a/apm-collector/apm-collector-boot/pom.xml +++ b/apm-collector/apm-collector-boot/pom.xml @@ -30,123 +30,118 @@ apm-collector-boot jar - - org.skywalking.apm.collector.boot.CollectorBootStartUp - UTF-8 - skywalking/skywalking-collector - ${version} - - + + org.yaml + snakeyaml + 1.18 + org.skywalking - apm-collector-cluster + apm-collector-core + ${project.version} + + + + org.skywalking + collector-cluster-redis-provider ${project.version} org.skywalking - apm-collector-queue + collector-cluster-standalone-provider ${project.version} org.skywalking - apm-collector-storage + collector-cluster-zookeeper-provider + ${project.version} + + + + + org.skywalking + collector-grpc-manager-provider + ${project.version} + + + + + org.skywalking + collector-jetty-manager-provider + ${project.version} + + + + + org.skywalking + collector-naming-jetty-provider + ${project.version} + + + + + org.skywalking + collector-agent-grpc-provider ${project.version} org.skywalking - apm-collector-ui + collector-agent-jetty-provider + ${project.version} + + + + + org.skywalking + collector-ui-jetty-provider + ${project.version} + + + + + org.skywalking + collector-storage-es-provider ${project.version} org.skywalking - apm-collector-agentserver + collector-storage-h2-provider + ${project.version} + + + + + org.skywalking + collector-remote-grpc-provider + ${project.version} + + + + + org.skywalking + collector-queue-datacarrier-provider ${project.version} org.skywalking - apm-collector-agentstream + collector-queue-disruptor-provider ${project.version} + + org.skywalking - apm-collector-agentregister + collector-stream-provider ${project.version} + + org.skywalking - apm-collector-agentjvm + collector-cache-guava-provider ${project.version} + - - - skywalking-collector - - - org.apache.maven.plugins - maven-jar-plugin - 2.3.2 - - - *.xml - *.config - *.yml - - - - ${main.class} - - - - - - org.apache.maven.plugins - maven-assembly-plugin - - - assembly - package - - single - - - - src/main/assembly/assembly.xml - - ${project.basedir}/../../packages - - - - - - com.spotify - docker-maven-plugin - ${docker.plugin.version} - - false - ${docker.image.name} - - ${docker.image.version} - - ${project.basedir}/docker - - - / - ${project.basedir}/../../packages - ${build.finalName}.tar.gz - - - - - - org.apache.maven.plugins - maven-resources-plugin - 2.4.3 - - ${project.build.sourceEncoding} - - - - - + \ No newline at end of file diff --git a/apm-collector/apm-collector-boot/src/main/assembly/assembly.xml b/apm-collector/apm-collector-boot/src/main/assembly/assembly.xml deleted file mode 100644 index b1e6e3ec1..000000000 --- a/apm-collector/apm-collector-boot/src/main/assembly/assembly.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - tar.gz - zip - - - - /libs - runtime - - - - - ${project.basedir}/bin - /bin - - *.sh - *.bat - - 0755 - - - src/main/resources - - application.yml - - - /config - - - src/main/assembly - - log4j2.xml - - /config - - - diff --git a/apm-collector/apm-collector-boot/src/main/assembly/log4j2.xml b/apm-collector/apm-collector-boot/src/main/assembly/log4j2.xml deleted file mode 100644 index 265dd3358..000000000 --- a/apm-collector/apm-collector-boot/src/main/assembly/log4j2.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - ${sys:collector.logDir} - - - - - %d - %c -%-4r [%t] %-5p %x - %m%n - - - - - - - - - - - - - - - - diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java index f4746bf2f..d747733a0 100644 --- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java @@ -18,8 +18,13 @@ package org.skywalking.apm.collector.boot; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.config.SystemConfigParser; +import org.skywalking.apm.collector.boot.config.ApplicationConfigLoader; +import org.skywalking.apm.collector.boot.config.ConfigFileNotFoundException; +import org.skywalking.apm.collector.core.module.ApplicationConfiguration; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.core.module.ModuleNotFoundException; +import org.skywalking.apm.collector.core.module.ProviderNotFoundException; +import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,13 +33,27 @@ import org.slf4j.LoggerFactory; */ public class CollectorBootStartUp { - private static final Logger logger = LoggerFactory.getLogger(CollectorBootStartUp.class); + public static void main(String[] args) { + final Logger logger = LoggerFactory.getLogger(CollectorBootStartUp.class); - public static void main(String[] args) throws CollectorException { - logger.info("collector starting..."); - SystemConfigParser.INSTANCE.parse(); - CollectorStarter starter = new CollectorStarter(); - starter.start(); - logger.info("collector start successful."); + ApplicationConfigLoader configLoader = new ApplicationConfigLoader(); + ModuleManager manager = new ModuleManager(); + try { + ApplicationConfiguration applicationConfiguration = configLoader.load(); + manager.init(applicationConfiguration); + } catch (ConfigFileNotFoundException e) { + logger.error(e.getMessage(), e); + } catch (ModuleNotFoundException e) { + logger.error(e.getMessage(), e); + } catch (ProviderNotFoundException e) { + logger.error(e.getMessage(), e); + } catch (ServiceNotProvidedException e) { + logger.error(e.getMessage(), e); + } + + try { + Thread.sleep(60000); + } catch (InterruptedException e) { + } } } diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java deleted file mode 100644 index b8902cc81..000000000 --- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java +++ /dev/null @@ -1,101 +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.boot; - -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.framework.Starter; -import org.skywalking.apm.collector.core.module.ModuleConfigLoader; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleDefineLoader; -import org.skywalking.apm.collector.core.module.ModuleGroupDefine; -import org.skywalking.apm.collector.core.module.ModuleGroupDefineLoader; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.CollectionUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class CollectorStarter implements Starter { - - private final Logger logger = LoggerFactory.getLogger(CollectorStarter.class); - private Map moduleGroupDefineMap; - - @Override public void start() throws CollectorException { - ModuleConfigLoader configLoader = new ModuleConfigLoader(); - Map configuration = configLoader.load(); - - ModuleGroupDefineLoader groupDefineLoader = new ModuleGroupDefineLoader(); - moduleGroupDefineMap = groupDefineLoader.load(); - - ModuleDefineLoader defineLoader = new ModuleDefineLoader(); - Map> moduleDefineMap = defineLoader.load(); - - ServerHolder serverHolder = new ServerHolder(); - for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { - if (moduleGroupDefine.groupConfigParser() != null) { - moduleGroupDefine.groupConfigParser().parse(configuration.get(moduleGroupDefine.name())); - } - moduleGroupDefine.moduleInstaller().injectConfiguration(configuration.get(moduleGroupDefine.name()), moduleDefineMap.get(moduleGroupDefine.name())); - moduleGroupDefine.moduleInstaller().injectServerHolder(serverHolder); - moduleGroupDefine.moduleInstaller().preInstall(); - } - - moduleGroupDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME).moduleInstaller().install(); - - for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { - if (!(moduleGroupDefine instanceof ClusterModuleGroupDefine)) { - moduleGroupDefine.moduleInstaller().install(); - } - } - - serverHolder.getServers().forEach(server -> { - try { - server.start(); - } catch (ServerException e) { - logger.error(e.getMessage(), e); - } - }); - - dependenceAfterInstall(); - } - - private void dependenceAfterInstall() throws CollectorException { - for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { - moduleInstall(moduleGroupDefine); - } - } - - private void moduleInstall(ModuleGroupDefine moduleGroupDefine) throws CollectorException { - if (CollectionUtils.isNotEmpty(moduleGroupDefine.moduleInstaller().dependenceModules())) { - for (String groupName : moduleGroupDefine.moduleInstaller().dependenceModules()) { - moduleInstall(moduleGroupDefineMap.get(groupName)); - } - logger.info("after install module group: {}", moduleGroupDefine.name()); - moduleGroupDefine.moduleInstaller().afterInstall(); - } else { - logger.info("after install module group: {}", moduleGroupDefine.name()); - moduleGroupDefine.moduleInstaller().afterInstall(); - } - } -} diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ApplicationConfigLoader.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ApplicationConfigLoader.java new file mode 100644 index 000000000..4b6b6a77e --- /dev/null +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ApplicationConfigLoader.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.boot.config; + +import java.io.FileNotFoundException; +import java.io.Reader; +import java.util.Map; +import java.util.Properties; +import org.skywalking.apm.collector.core.module.ApplicationConfiguration; +import org.skywalking.apm.collector.core.util.ResourceUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +/** + * @author peng-yongsheng + */ +public class ApplicationConfigLoader implements ConfigLoader { + + private final Logger logger = LoggerFactory.getLogger(ApplicationConfigLoader.class); + + private final Yaml yaml = new Yaml(); + + @Override public ApplicationConfiguration load() throws ConfigFileNotFoundException { + ApplicationConfiguration configuration = new ApplicationConfiguration(); + this.loadConfig(configuration); + this.loadDefaultConfig(configuration); + return configuration; + } + + private void loadConfig(ApplicationConfiguration configuration) throws ConfigFileNotFoundException { + try { + Reader applicationReader = ResourceUtils.read("application.yml"); + Map>> moduleConfig = yaml.loadAs(applicationReader, Map.class); + moduleConfig.forEach((moduleName, providerConfig) -> { + if (providerConfig.size() > 0) { + logger.info("Get a module define from application.yml, module name: {}", moduleName); + ApplicationConfiguration.ModuleConfiguration moduleConfiguration = configuration.addModule(moduleName); + providerConfig.forEach((name, propertiesConfig) -> { + logger.info("Get a provider define belong to {} module, provider name: {}", moduleName, name); + Properties properties = new Properties(); + if (propertiesConfig != null) { + propertiesConfig.forEach((key, value) -> { + properties.put(key, value); + logger.info("The property with key: {}, value: {}, in {} provider", key, value, name); + }); + } + moduleConfiguration.addProviderConfiguration(name, properties); + }); + } else { + logger.warn("Get a module define from application.yml, but no provider define, use default, module name: {}", moduleName); + } + }); + } catch (FileNotFoundException e) { + throw new ConfigFileNotFoundException(e.getMessage(), e); + } + } + + private void loadDefaultConfig(ApplicationConfiguration configuration) throws ConfigFileNotFoundException { + try { + Reader applicationReader = ResourceUtils.read("application-default.yml"); + Map>> moduleConfig = yaml.loadAs(applicationReader, Map.class); + moduleConfig.forEach((moduleName, providerConfig) -> { + if (!configuration.has(moduleName)) { + logger.warn("The {} module did't define in application.yml, use default", moduleName); + ApplicationConfiguration.ModuleConfiguration moduleConfiguration = configuration.addModule(moduleName); + providerConfig.forEach((name, propertiesConfig) -> { + Properties properties = new Properties(); + if (propertiesConfig != null) { + propertiesConfig.forEach(properties::put); + } + moduleConfiguration.addProviderConfiguration(name, properties); + }); + } + }); + } catch (FileNotFoundException e) { + throw new ConfigFileNotFoundException(e.getMessage(), e); + } + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigLoaderException.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ConfigFileNotFoundException.java similarity index 72% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigLoaderException.java rename to apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ConfigFileNotFoundException.java index 2a6ce6bc7..335ca7015 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigLoaderException.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ConfigFileNotFoundException.java @@ -16,18 +16,20 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.config; +package org.skywalking.apm.collector.boot.config; + +import org.skywalking.apm.collector.core.CollectorException; /** * @author peng-yongsheng */ -public abstract class ConfigLoaderException extends ConfigException { +public class ConfigFileNotFoundException extends CollectorException { - public ConfigLoaderException(String message) { + public ConfigFileNotFoundException(String message) { super(message); } - public ConfigLoaderException(String message, Throwable cause) { + public ConfigFileNotFoundException(String message, Throwable cause) { super(message, cause); } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigLoader.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ConfigLoader.java similarity index 81% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigLoader.java rename to apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ConfigLoader.java index bc0deb8b6..ff089fc03 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigLoader.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/config/ConfigLoader.java @@ -16,12 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.config; - -import org.skywalking.apm.collector.core.framework.Loader; +package org.skywalking.apm.collector.boot.config; /** * @author peng-yongsheng */ -public interface ConfigLoader extends Loader { +public interface ConfigLoader { + T load() throws ConfigFileNotFoundException; } diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml index 8a4f7b3b6..275e975bb 100644 --- a/apm-collector/apm-collector-boot/src/main/resources/application.yml +++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml @@ -2,13 +2,13 @@ # zookeeper: # hostPort: localhost:2181 # sessionTimeout: 100000 -agent_server: +naming: jetty: host: localhost port: 10800 context_path: / -agent_stream: - grpc: +agent: + gRPC: host: localhost port: 11800 jetty: @@ -23,18 +23,10 @@ ui: host: localhost port: 12800 context_path: / -collector_inside: - grpc: - host: localhost - port: 11800 #storage: # elasticsearch: # cluster_name: CollectorDBCluster # cluster_transport_sniffer: true # cluster_nodes: localhost:9300 # index_shards_number: 2 -# index_replicas_number: 0 -#storage: -# h2: -# url: jdbc:h2:tcp://localhost/~/test -# user_name: sa \ No newline at end of file +# index_replicas_number: 0 \ No newline at end of file diff --git a/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml b/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml index a76ab8c13..db54a6402 100644 --- a/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml +++ b/apm-collector/apm-collector-boot/src/main/resources/log4j2.xml @@ -17,7 +17,7 @@ ~ Project repository: https://github.com/OpenSkywalking/skywalking --> - + @@ -26,9 +26,10 @@ - - - + + + + diff --git a/apm-collector/apm-collector-core/src/test/resources/logback-test.xml b/apm-collector/apm-collector-cache/collector-cache-define/pom.xml similarity index 59% rename from apm-collector/apm-collector-core/src/test/resources/logback-test.xml rename to apm-collector/apm-collector-cache/collector-cache-define/pom.xml index acd6b8a57..9661e414b 100644 --- a/apm-collector/apm-collector-core/src/test/resources/logback-test.xml +++ b/apm-collector/apm-collector-cache/collector-cache-define/pom.xml @@ -17,14 +17,17 @@ ~ Project repository: https://github.com/OpenSkywalking/skywalking --> - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - + + + apm-collector-cache + org.skywalking + 3.2.4-2017 + + 4.0.0 - - - - \ No newline at end of file + collector-cache-define + jar + + \ No newline at end of file diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/CacheModule.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/CacheModule.java new file mode 100644 index 000000000..aed9cb719 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/CacheModule.java @@ -0,0 +1,41 @@ +/* + * 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.cache; + +import org.skywalking.apm.collector.cache.service.ApplicationCacheService; +import org.skywalking.apm.collector.cache.service.InstanceCacheService; +import org.skywalking.apm.collector.cache.service.ServiceIdCacheService; +import org.skywalking.apm.collector.cache.service.ServiceNameCacheService; +import org.skywalking.apm.collector.core.module.Module; + +/** + * @author peng-yongsheng + */ +public class CacheModule extends Module { + + public static final String NAME = "cache"; + + @Override public String name() { + return NAME; + } + + @Override public Class[] services() { + return new Class[] {ApplicationCacheService.class, InstanceCacheService.class, ServiceIdCacheService.class, ServiceNameCacheService.class}; + } +} diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ApplicationCacheService.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ApplicationCacheService.java new file mode 100644 index 000000000..46fc477a5 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ApplicationCacheService.java @@ -0,0 +1,30 @@ +/* + * 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.cache.service; + +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ApplicationCacheService extends Service { + int get(String applicationCode); + + String get(int applicationId); +} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleContext.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/InstanceCacheService.java similarity index 73% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleContext.java rename to apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/InstanceCacheService.java index 9a369fba5..a4333040c 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleContext.java +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/InstanceCacheService.java @@ -16,16 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream; +package org.skywalking.apm.collector.cache.service; -import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.module.Service; /** * @author peng-yongsheng */ -public class AgentStreamModuleContext extends Context { +public interface InstanceCacheService extends Service { + int get(int applicationInstanceId); - public AgentStreamModuleContext(String groupName) { - super(groupName); - } + int getInstanceId(int applicationId, String agentUUID); } diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ServiceIdCacheService.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ServiceIdCacheService.java new file mode 100644 index 000000000..bd155c8e6 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ServiceIdCacheService.java @@ -0,0 +1,28 @@ +/* + * 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.cache.service; + +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ServiceIdCacheService extends Service { + int get(int applicationId, String serviceName); +} diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ServiceNameCacheService.java b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ServiceNameCacheService.java new file mode 100644 index 000000000..54de07605 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-define/src/main/java/org/skywalking/apm/collector/cache/service/ServiceNameCacheService.java @@ -0,0 +1,30 @@ +/* + * 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.cache.service; + +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ServiceNameCacheService extends Service { + String get(int serviceId); + + String getSplitServiceName(String serviceName); +} diff --git a/apm-collector/apm-collector-cache/collector-cache-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-cache/collector-cache-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..3f6af42aa --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-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.cache.CacheModule \ No newline at end of file diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/pom.xml b/apm-collector/apm-collector-cache/collector-cache-guava-provider/pom.xml new file mode 100644 index 000000000..b6069953b --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-cache + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-cache-guava-provider + jar + + + + org.skywalking + collector-cache-define + ${project.version} + + + \ No newline at end of file diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/CacheModuleGuavaProvider.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/CacheModuleGuavaProvider.java new file mode 100644 index 000000000..fbfbc7cea --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/CacheModuleGuavaProvider.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.cache.guava; + +import java.util.Properties; +import org.skywalking.apm.collector.cache.CacheModule; +import org.skywalking.apm.collector.cache.guava.service.ApplicationCacheGuavaService; +import org.skywalking.apm.collector.cache.guava.service.InstanceCacheGuavaService; +import org.skywalking.apm.collector.cache.guava.service.ServiceIdCacheGuavaService; +import org.skywalking.apm.collector.cache.guava.service.ServiceNameCacheGuavaService; +import org.skywalking.apm.collector.cache.service.ApplicationCacheService; +import org.skywalking.apm.collector.cache.service.InstanceCacheService; +import org.skywalking.apm.collector.cache.service.ServiceIdCacheService; +import org.skywalking.apm.collector.cache.service.ServiceNameCacheService; +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.storage.StorageModule; + +/** + * @author peng-yongsheng + */ +public class CacheModuleGuavaProvider extends ModuleProvider { + + @Override public String name() { + return "guava"; + } + + @Override public Class module() { + return CacheModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(ApplicationCacheService.class, new ApplicationCacheGuavaService(getManager())); + this.registerServiceImplementation(InstanceCacheService.class, new InstanceCacheGuavaService(getManager())); + this.registerServiceImplementation(ServiceIdCacheService.class, new ServiceIdCacheGuavaService(getManager())); + this.registerServiceImplementation(ServiceNameCacheService.class, new ServiceNameCacheGuavaService(getManager())); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[] {StorageModule.NAME}; + } +} diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java new file mode 100644 index 000000000..80770f160 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ApplicationCacheGuavaService.java @@ -0,0 +1,82 @@ +/* + * 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.cache.guava.service; + +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +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.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class ApplicationCacheGuavaService implements ApplicationCacheService { + + private final Logger logger = LoggerFactory.getLogger(ApplicationCacheGuavaService.class); + + private final Cache codeCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build(); + + private final IApplicationCacheDAO applicationCacheDAO; + + public ApplicationCacheGuavaService(ModuleManager moduleManager) { + this.applicationCacheDAO = moduleManager.find(StorageModule.NAME).getService(IApplicationCacheDAO.class); + } + + public int get(String applicationCode) { + int applicationId = 0; + try { + applicationId = codeCache.get(applicationCode, () -> applicationCacheDAO.getApplicationId(applicationCode)); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + + if (applicationId == 0) { + applicationId = applicationCacheDAO.getApplicationId(applicationCode); + if (applicationId != 0) { + codeCache.put(applicationCode, applicationId); + } + } + return applicationId; + } + + private final Cache idCache = CacheBuilder.newBuilder().maximumSize(1000).build(); + + public String get(int applicationId) { + String applicationCode = Const.EMPTY_STRING; + try { + applicationCode = idCache.get(applicationId, () -> applicationCacheDAO.getApplicationCode(applicationId)); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + + if (StringUtils.isEmpty(applicationCode)) { + applicationCode = applicationCacheDAO.getApplicationCode(applicationId); + if (StringUtils.isNotEmpty(applicationCode)) { + codeCache.put(applicationCode, applicationId); + } + } + return applicationCode; + } +} diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java new file mode 100644 index 000000000..330b3b9a1 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/InstanceCacheGuavaService.java @@ -0,0 +1,84 @@ +/* + * 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.cache.guava.service; + +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +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.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class InstanceCacheGuavaService implements InstanceCacheService { + + private final Logger logger = LoggerFactory.getLogger(InstanceCacheGuavaService.class); + + private final Cache integerCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); + + private final Cache stringCache = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); + + private final IInstanceCacheDAO instanceCacheDAO; + + public InstanceCacheGuavaService(ModuleManager moduleManager) { + this.instanceCacheDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceCacheDAO.class); + } + + public int get(int applicationInstanceId) { + + int applicationId = 0; + try { + applicationId = integerCache.get(applicationInstanceId, () -> instanceCacheDAO.getApplicationId(applicationInstanceId)); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + + if (applicationId == 0) { + applicationId = instanceCacheDAO.getApplicationId(applicationInstanceId); + if (applicationId != 0) { + integerCache.put(applicationInstanceId, applicationId); + } + } + return applicationId; + } + + @Override public int getInstanceId(int applicationId, String agentUUID) { + String key = applicationId + Const.ID_SPLIT + agentUUID; + + int instanceId = 0; + try { + instanceId = stringCache.get(key, () -> instanceCacheDAO.getInstanceId(applicationId, agentUUID)); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + + if (instanceId == 0) { + instanceId = instanceCacheDAO.getInstanceId(applicationId, agentUUID); + if (applicationId != 0) { + stringCache.put(key, instanceId); + } + } + return instanceId; + } +} diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ServiceIdCacheGuavaService.java similarity index 50% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java rename to apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ServiceIdCacheGuavaService.java index d4c25118f..eb59ec750 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceIdCache.java +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ServiceIdCacheGuavaService.java @@ -16,40 +16,45 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache; +package org.skywalking.apm.collector.cache.guava.service; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO; +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.storage.dao.DAOContainer; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ServiceIdCache { +public class ServiceIdCacheGuavaService implements ServiceIdCacheService { - private static final Logger logger = LoggerFactory.getLogger(ServiceIdCache.class); + private final Logger logger = LoggerFactory.getLogger(ServiceIdCacheGuavaService.class); - //TODO size configuration - private static Cache SERVICE_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build(); + private final Cache serviceIdCache = CacheBuilder.newBuilder().maximumSize(1000).build(); - public static int get(int applicationId, String serviceName) { - IServiceNameCacheDAO dao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName()); + private final IServiceNameCacheDAO serviceNameCacheDAO; + public ServiceIdCacheGuavaService(ModuleManager moduleManager) { + this.serviceNameCacheDAO = moduleManager.find(StorageModule.NAME).getService(IServiceNameCacheDAO.class); + } + + public int get(int applicationId, String serviceName) { int serviceId = 0; try { - serviceId = SERVICE_CACHE.get(applicationId + Const.ID_SPLIT + serviceName, () -> dao.getServiceId(applicationId, serviceName)); + serviceId = serviceIdCache.get(applicationId + Const.ID_SPLIT + serviceName, () -> serviceNameCacheDAO.getServiceId(applicationId, serviceName)); } catch (Throwable e) { logger.error(e.getMessage(), e); } if (serviceId == 0) { - serviceId = dao.getServiceId(applicationId, serviceName); + serviceId = serviceNameCacheDAO.getServiceId(applicationId, serviceName); if (serviceId != 0) { - SERVICE_CACHE.put(applicationId + Const.ID_SPLIT + serviceName, serviceId); + serviceIdCache.put(applicationId + Const.ID_SPLIT + serviceName, serviceId); } } return serviceId; diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ServiceNameCacheGuavaService.java similarity index 57% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java rename to apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ServiceNameCacheGuavaService.java index 26546ec49..2b235ef9d 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ServiceNameCache.java +++ b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/java/org/skywalking/apm/collector/cache/guava/service/ServiceNameCacheGuavaService.java @@ -16,48 +16,53 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache; +package org.skywalking.apm.collector.cache.guava.service; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; -import org.skywalking.apm.collector.cache.dao.IServiceNameCacheDAO; +import org.skywalking.apm.collector.cache.service.ServiceNameCacheService; +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.skywalking.apm.collector.storage.dao.DAOContainer; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ServiceNameCache { +public class ServiceNameCacheGuavaService implements ServiceNameCacheService { - private static final Logger logger = LoggerFactory.getLogger(ServiceNameCache.class); + private final Logger logger = LoggerFactory.getLogger(ServiceNameCacheGuavaService.class); - //TODO size configuration - private static Cache CACHE = CacheBuilder.newBuilder().maximumSize(10000).build(); + private final Cache serviceNameCache = CacheBuilder.newBuilder().maximumSize(10000).build(); - public static String get(int serviceId) { - IServiceNameCacheDAO dao = (IServiceNameCacheDAO)DAOContainer.INSTANCE.get(IServiceNameCacheDAO.class.getName()); + private final IServiceNameCacheDAO serviceNameCacheDAO; + public ServiceNameCacheGuavaService(ModuleManager moduleManager) { + this.serviceNameCacheDAO = moduleManager.find(StorageModule.NAME).getService(IServiceNameCacheDAO.class); + } + + public String get(int serviceId) { String serviceName = Const.EMPTY_STRING; try { - serviceName = CACHE.get(serviceId, () -> dao.getServiceName(serviceId)); + serviceName = serviceNameCache.get(serviceId, () -> serviceNameCacheDAO.getServiceName(serviceId)); } catch (Throwable e) { logger.error(e.getMessage(), e); } if (StringUtils.isEmpty(serviceName)) { - serviceName = dao.getServiceName(serviceId); + serviceName = serviceNameCacheDAO.getServiceName(serviceId); if (StringUtils.isNotEmpty(serviceName)) { - CACHE.put(serviceId, serviceName); + serviceNameCache.put(serviceId, serviceName); } } return serviceName; } - public static String getSplitServiceName(String serviceName) { + public String getSplitServiceName(String serviceName) { if (StringUtils.isNotEmpty(serviceName)) { String[] serviceNames = serviceName.split(Const.ID_SPLIT); if (serviceNames.length == 2) { diff --git a/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-cache/collector-cache-guava-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..b944ba647 --- /dev/null +++ b/apm-collector/apm-collector-cache/collector-cache-guava-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.cache.guava.CacheModuleGuavaProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-cache/pom.xml b/apm-collector/apm-collector-cache/pom.xml index 152912b0d..37eb5b40c 100644 --- a/apm-collector/apm-collector-cache/pom.xml +++ b/apm-collector/apm-collector-cache/pom.xml @@ -10,7 +10,11 @@ 4.0.0 apm-collector-cache - jar + pom + + collector-cache-define + collector-cache-guava-provider + @@ -20,7 +24,7 @@ org.skywalking - apm-collector-storage + collector-storage-define ${project.version} diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.java deleted file mode 100644 index de0f82053..000000000 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/ApplicationCache.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.cache; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import org.skywalking.apm.collector.cache.dao.IApplicationCacheDAO; -import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class ApplicationCache { - - private static final Logger logger = LoggerFactory.getLogger(ApplicationCache.class); - - private static Cache CODE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(1000).build(); - - public static int get(String applicationCode) { - IApplicationCacheDAO dao = (IApplicationCacheDAO)DAOContainer.INSTANCE.get(IApplicationCacheDAO.class.getName()); - - int applicationId = 0; - try { - applicationId = CODE_CACHE.get(applicationCode, () -> dao.getApplicationId(applicationCode)); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } - - if (applicationId == 0) { - applicationId = dao.getApplicationId(applicationCode); - if (applicationId != 0) { - CODE_CACHE.put(applicationCode, applicationId); - } - } - return applicationId; - } - - private static Cache ID_CACHE = CacheBuilder.newBuilder().maximumSize(1000).build(); - - public static String get(int applicationId) { - IApplicationCacheDAO dao = (IApplicationCacheDAO)DAOContainer.INSTANCE.get(IApplicationCacheDAO.class.getName()); - - String applicationCode = Const.EMPTY_STRING; - try { - applicationCode = ID_CACHE.get(applicationId, () -> dao.getApplicationCode(applicationId)); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } - - if (StringUtils.isEmpty(applicationCode)) { - applicationCode = dao.getApplicationCode(applicationId); - if (StringUtils.isNotEmpty(applicationCode)) { - CODE_CACHE.put(applicationCode, applicationId); - } - } - return applicationCode; - } -} diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.java deleted file mode 100644 index 946d992d9..000000000 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/InstanceCache.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.cache; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import org.skywalking.apm.collector.cache.dao.IInstanceCacheDAO; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class InstanceCache { - - private static final Logger logger = LoggerFactory.getLogger(InstanceCache.class); - - private static Cache INSTANCE_CACHE = CacheBuilder.newBuilder().initialCapacity(100).maximumSize(5000).build(); - - public static int get(int applicationInstanceId) { - IInstanceCacheDAO dao = (IInstanceCacheDAO)DAOContainer.INSTANCE.get(IInstanceCacheDAO.class.getName()); - - int applicationId = 0; - try { - applicationId = INSTANCE_CACHE.get(applicationInstanceId, () -> dao.getApplicationId(applicationInstanceId)); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } - - if (applicationId == 0) { - applicationId = dao.getApplicationId(applicationInstanceId); - if (applicationId != 0) { - INSTANCE_CACHE.put(applicationInstanceId, applicationId); - } - } - return applicationId; - } -} diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceCacheDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceCacheDAO.java deleted file mode 100644 index 97e398502..000000000 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IInstanceCacheDAO.java +++ /dev/null @@ -1,26 +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.cache.dao; - -/** - * @author peng-yongsheng - */ -public interface IInstanceCacheDAO { - int getApplicationId(int applicationInstanceId); -} diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsCacheDAO.java b/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsCacheDAO.java deleted file mode 100644 index b65501f9d..000000000 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceEsCacheDAO.java +++ /dev/null @@ -1,42 +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.cache.dao; - -import org.elasticsearch.action.get.GetResponse; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class InstanceEsCacheDAO extends EsDAO implements IInstanceCacheDAO { - - private final Logger logger = LoggerFactory.getLogger(InstanceEsCacheDAO.class); - - @Override public int getApplicationId(int applicationInstanceId) { - GetResponse response = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(applicationInstanceId)).get(); - if (response.isExists()) { - return (int)response.getSource().get(InstanceTable.COLUMN_APPLICATION_ID); - } else { - return 0; - } - } -} diff --git a/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define deleted file mode 100644 index e2c7caea3..000000000 --- a/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/es_dao.define +++ /dev/null @@ -1,3 +0,0 @@ -org.skywalking.apm.collector.cache.dao.ApplicationEsCacheDAO -org.skywalking.apm.collector.cache.dao.InstanceEsCacheDAO -org.skywalking.apm.collector.cache.dao.ServiceNameEsCacheDAO diff --git a/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define deleted file mode 100644 index 7e0ec1b7d..000000000 --- a/apm-collector/apm-collector-cache/src/main/resources/META-INF/defines/h2_dao.define +++ /dev/null @@ -1,3 +0,0 @@ -org.skywalking.apm.collector.cache.dao.ApplicationH2CacheDAO -org.skywalking.apm.collector.cache.dao.InstanceH2CacheDAO -org.skywalking.apm.collector.cache.dao.ServiceNameH2CacheDAO \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml b/apm-collector/apm-collector-cluster/collector-cluster-define/pom.xml similarity index 56% rename from apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml rename to apm-collector/apm-collector-cluster/collector-cluster-define/pom.xml index d36a4408f..7ab818226 100644 --- a/apm-collector/apm-collector-agentstream/src/test/resources/log4j2.xml +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/pom.xml @@ -17,18 +17,17 @@ ~ Project repository: https://github.com/OpenSkywalking/skywalking --> - - - - - - - - - - - - - - - + + + apm-collector-cluster + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-cluster-define + jar + + diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigException.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterException.java similarity index 79% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigException.java rename to apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterException.java index b5e970046..cee9eba36 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigException.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterException.java @@ -16,20 +16,20 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.config; +package org.skywalking.apm.collector.cluster; import org.skywalking.apm.collector.core.CollectorException; /** * @author peng-yongsheng */ -public abstract class ConfigException extends CollectorException { +public abstract class ClusterException extends CollectorException { - public ConfigException(String message) { + public ClusterException(String message) { super(message); } - public ConfigException(String message, Throwable cause) { + public ClusterException(String message, Throwable cause) { super(message, cause); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java similarity index 55% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java rename to apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java index abfca76e9..97ab7fedf 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModule.java @@ -16,26 +16,25 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream; +package org.skywalking.apm.collector.cluster; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.module.ModuleDefine; +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.Service; /** * @author peng-yongsheng */ -public abstract class AgentStreamModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { +public class ClusterModule extends Module { - @Override protected final Client createClient() { - throw new UnsupportedOperationException(""); + public static final String NAME = "cluster"; + + @Override public String name() { + return NAME; } - @Override public final boolean defaultModule() { - return true; - } - - @Override protected void initializeOtherContext() { - + @Override public Class[] services() { + return new Class[] {ModuleListenerService.class, ModuleRegisterService.class}; } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleListener.java similarity index 86% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java rename to apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleListener.java index 1d0f43b6a..543245d8e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleListener.java @@ -16,20 +16,19 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.cluster; +package org.skywalking.apm.collector.cluster; import java.util.HashSet; import java.util.Set; -import org.skywalking.apm.collector.core.framework.Listener; /** * @author peng-yongsheng */ -public abstract class ClusterDataListener implements Listener { +public abstract class ClusterModuleListener { private Set addresses; - public ClusterDataListener() { + public ClusterModuleListener() { addresses = new HashSet<>(); } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterNodeExistException.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterNodeExistException.java similarity index 88% rename from apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterNodeExistException.java rename to apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterNodeExistException.java index 35af2df68..506b0fbe3 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterNodeExistException.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ClusterNodeExistException.java @@ -18,12 +18,10 @@ package org.skywalking.apm.collector.cluster; -import org.skywalking.apm.collector.core.client.ClientException; - /** * @author peng-yongsheng */ -public class ClusterNodeExistException extends ClientException { +public class ClusterNodeExistException extends ClusterException { public ClusterNodeExistException(String message) { super(message); diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/DataMonitor.java similarity index 66% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java rename to apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/DataMonitor.java index 314338362..8a30089c3 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/DataMonitor.java @@ -16,21 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.client; +package org.skywalking.apm.collector.cluster; -import org.skywalking.apm.collector.core.cluster.ClusterDataListener; -import org.skywalking.apm.collector.core.framework.Starter; -import org.skywalking.apm.collector.core.module.ModuleRegistration; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng */ -public interface DataMonitor extends Starter { +public interface DataMonitor { + String BASE_CATALOG = "/skywalking"; + void setClient(Client client); - void addListener(ClusterDataListener listener, ModuleRegistration registration) throws ClientException; + void addListener(ClusterModuleListener listener) throws ClientException; - ClusterDataListener getListener(String path); + void register(String path, ModuleRegistration registration) throws ClientException; + + ClusterModuleListener getListener(String path); void createPath(String path) throws ClientException; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleRegistration.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ModuleRegistration.java similarity index 96% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleRegistration.java rename to apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ModuleRegistration.java index 42bbd5fe3..2aed56281 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleRegistration.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/ModuleRegistration.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.module; +package org.skywalking.apm.collector.cluster; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleListenerService.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleListenerService.java new file mode 100644 index 000000000..f5a908aaf --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleListenerService.java @@ -0,0 +1,29 @@ +/* + * 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.cluster.service; + +import org.skywalking.apm.collector.cluster.ClusterModuleListener; +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ModuleListenerService extends Service { + void addListener(ClusterModuleListener listener); +} diff --git a/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegisterService.java b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegisterService.java new file mode 100644 index 000000000..4566204e0 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/java/org/skywalking/apm/collector/cluster/service/ModuleRegisterService.java @@ -0,0 +1,29 @@ +/* + * 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.cluster.service; + +import org.skywalking.apm.collector.cluster.ModuleRegistration; +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ModuleRegisterService extends Service { + void register(String moduleName, String providerName, ModuleRegistration registration); +} diff --git a/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-cluster/collector-cluster-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..f70f73083 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-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.cluster.ClusterModule \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/pom.xml b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/pom.xml new file mode 100644 index 000000000..0aa6f15cb --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-cluster + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-cluster-redis-provider + jar + + + + org.skywalking + collector-cluster-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java new file mode 100644 index 000000000..90c342fcd --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterModuleRedisProvider.java @@ -0,0 +1,57 @@ +/* + * 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.cluster.redis; + +import java.util.Properties; +import org.skywalking.apm.collector.cluster.ClusterModule; +import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegisterService; +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; + +/** + * @author peng-yongsheng + */ +public class ClusterModuleRedisProvider extends ModuleProvider { + + @Override public String name() { + return "redis"; + } + + @Override public Class module() { + return ClusterModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegisterService()); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleException.java b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegisterService.java similarity index 66% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleException.java rename to apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegisterService.java index e5ec1b86b..084958d31 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleException.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/java/org/skywalking/apm/collector/cluster/redis/service/RedisModuleRegisterService.java @@ -16,19 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream; +package org.skywalking.apm.collector.cluster.redis.service; -import org.skywalking.apm.collector.core.module.ModuleException; +import org.skywalking.apm.collector.cluster.ModuleRegistration; +import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; /** * @author peng-yongsheng */ -public class AgentStreamModuleException extends ModuleException { - public AgentStreamModuleException(String message) { - super(message); - } +public class RedisModuleRegisterService implements ModuleRegisterService { + + @Override public void register(String moduleName, String providerName, ModuleRegistration registration) { - public AgentStreamModuleException(String message, Throwable cause) { - super(message, cause); } } diff --git a/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-cluster/collector-cluster-redis-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..f844abe11 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-redis-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.cluster.redis.ClusterModuleRedisProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/pom.xml b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/pom.xml new file mode 100644 index 000000000..6803fbdd0 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-cluster + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-cluster-standalone-provider + jar + + + + org.skywalking + collector-cluster-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java new file mode 100644 index 000000000..8788acc6a --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterModuleStandaloneProvider.java @@ -0,0 +1,84 @@ +/* + * 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.cluster.standalone; + +import java.util.Properties; +import org.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.client.h2.H2ClientException; +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.cluster.standalone.service.StandaloneModuleListenerService; +import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegisterService; +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.core.util.Const; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class ClusterModuleStandaloneProvider extends ModuleProvider { + + private final Logger logger = LoggerFactory.getLogger(ClusterModuleStandaloneProvider.class); + + private static final String URL = "url"; + private static final String USER_NAME = "user_name"; + + private H2Client h2Client; + private ClusterStandaloneDataMonitor dataMonitor; + + @Override public String name() { + return "standalone"; + } + + @Override public Class module() { + return ClusterModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.dataMonitor = new ClusterStandaloneDataMonitor(); + + final String url = config.getProperty(URL); + final String userName = config.getProperty(USER_NAME); + h2Client = new H2Client(url, userName, Const.EMPTY_STRING); + this.dataMonitor.setClient(h2Client); + + this.registerServiceImplementation(ModuleListenerService.class, new StandaloneModuleListenerService(dataMonitor)); + this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegisterService(dataMonitor)); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + try { + h2Client.initialize(); + } catch (H2ClientException e) { + logger.error(e.getMessage(), e); + } + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneDataMonitor.java b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneDataMonitor.java similarity index 74% rename from apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneDataMonitor.java rename to apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneDataMonitor.java index d99be53a7..9ceeb9960 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneDataMonitor.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneDataMonitor.java @@ -21,14 +21,13 @@ package org.skywalking.apm.collector.cluster.standalone; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.client.ClientException; import org.skywalking.apm.collector.client.h2.H2Client; -import org.skywalking.apm.collector.client.zookeeper.util.PathUtils; +import org.skywalking.apm.collector.cluster.ClusterModuleListener; +import org.skywalking.apm.collector.cluster.DataMonitor; +import org.skywalking.apm.collector.cluster.ModuleRegistration; import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterDataListener; -import org.skywalking.apm.collector.core.module.ModuleRegistration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,7 +40,7 @@ public class ClusterStandaloneDataMonitor implements DataMonitor { private H2Client client; - private Map listeners; + private Map listeners; private Map registrations; public ClusterStandaloneDataMonitor() { @@ -54,18 +53,21 @@ public class ClusterStandaloneDataMonitor implements DataMonitor { } @Override - public void addListener(ClusterDataListener listener, ModuleRegistration registration) throws ClientException { - String path = PathUtils.convertKey2Path(listener.path()); + public void addListener(ClusterModuleListener listener) { + String path = BASE_CATALOG + listener.path(); logger.info("listener path: {}", path); listeners.put(path, listener); - registrations.put(path, registration); } - @Override public ClusterDataListener getListener(String path) { - path = PathUtils.convertKey2Path(path); + @Override public ClusterModuleListener getListener(String path) { + path = BASE_CATALOG + path; return listeners.get(path); } + @Override public void register(String path, ModuleRegistration registration) { + registrations.put(BASE_CATALOG + path, registration); + } + @Override public void createPath(String path) throws ClientException { } @@ -77,7 +79,7 @@ public class ClusterStandaloneDataMonitor implements DataMonitor { } } - @Override public void start() throws CollectorException { + public void start() throws CollectorException { Iterator> entryIterator = registrations.entrySet().iterator(); while (entryIterator.hasNext()) { Map.Entry next = entryIterator.next(); diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleRegistrationReader.java b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleListenerService.java similarity index 54% rename from apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleRegistrationReader.java rename to apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleListenerService.java index a05c28e29..c81753ebd 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleRegistrationReader.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleListenerService.java @@ -16,17 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cluster.redis; +package org.skywalking.apm.collector.cluster.standalone.service; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; +import org.skywalking.apm.collector.cluster.ClusterModuleListener; +import org.skywalking.apm.collector.cluster.service.ModuleListenerService; +import org.skywalking.apm.collector.cluster.standalone.ClusterStandaloneDataMonitor; /** * @author peng-yongsheng */ -public class ClusterRedisModuleRegistrationReader extends ClusterModuleRegistrationReader { +public class StandaloneModuleListenerService implements ModuleListenerService { - public ClusterRedisModuleRegistrationReader(DataMonitor dataMonitor) { - super(dataMonitor); + private final ClusterStandaloneDataMonitor dataMonitor; + + public StandaloneModuleListenerService(ClusterStandaloneDataMonitor dataMonitor) { + this.dataMonitor = dataMonitor; + } + + @Override public void addListener(ClusterModuleListener listener) { + dataMonitor.addListener(listener); } } diff --git a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegisterService.java b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegisterService.java new file mode 100644 index 000000000..b4bf53ce8 --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/java/org/skywalking/apm/collector/cluster/standalone/service/StandaloneModuleRegisterService.java @@ -0,0 +1,40 @@ +/* + * 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.cluster.standalone.service; + +import org.skywalking.apm.collector.cluster.ModuleRegistration; +import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; +import org.skywalking.apm.collector.cluster.standalone.ClusterStandaloneDataMonitor; + +/** + * @author peng-yongsheng + */ +public class StandaloneModuleRegisterService implements ModuleRegisterService { + + private final ClusterStandaloneDataMonitor dataMonitor; + + public StandaloneModuleRegisterService(ClusterStandaloneDataMonitor dataMonitor) { + this.dataMonitor = dataMonitor; + } + + @Override public void register(String moduleName, String providerName, ModuleRegistration registration) { + String path = "/" + moduleName + "/" + providerName; + dataMonitor.register(path, registration); + } +} \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-cluster/collector-cluster-standalone-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..214befe0f --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-standalone-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.cluster.standalone.ClusterModuleStandaloneProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/pom.xml b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/pom.xml new file mode 100644 index 000000000..b29b973fb --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-cluster + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-cluster-zookeeper-provider + jar + + + + org.skywalking + collector-cluster-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZookeeperProvider.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZookeeperProvider.java new file mode 100644 index 000000000..c4cfb68cf --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterModuleZookeeperProvider.java @@ -0,0 +1,90 @@ +/* + * 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.cluster.zookeeper; + +import java.util.Properties; +import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; +import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException; +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.cluster.zookeeper.service.ZookeeperModuleListenerService; +import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegisterService; +import org.skywalking.apm.collector.core.CollectorException; +import org.skywalking.apm.collector.core.UnexpectedException; +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.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class ClusterModuleZookeeperProvider extends ModuleProvider { + + private final Logger logger = LoggerFactory.getLogger(ClusterModuleZookeeperProvider.class); + + private static final String HOST_PORT = "hostPort"; + private static final String SESSION_TIMEOUT = "sessionTimeout"; + + private ZookeeperClient zookeeperClient; + private ClusterZKDataMonitor dataMonitor; + + @Override public String name() { + return "zookeeper"; + } + + @Override public Class module() { + return ClusterModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + dataMonitor = new ClusterZKDataMonitor(); + + final String hostPort = config.getProperty(HOST_PORT); + final int sessionTimeout = (Integer)config.get(SESSION_TIMEOUT); + zookeeperClient = new ZookeeperClient(hostPort, sessionTimeout, dataMonitor); + dataMonitor.setClient(zookeeperClient); + + this.registerServiceImplementation(ModuleListenerService.class, new ZookeeperModuleListenerService(dataMonitor)); + this.registerServiceImplementation(ModuleRegisterService.class, new ZookeeperModuleRegisterService(dataMonitor)); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + try { + zookeeperClient.initialize(); + } catch (ZookeeperClientException e) { + logger.error(e.getMessage(), e); + } + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + try { + dataMonitor.start(); + } catch (CollectorException e) { + throw new UnexpectedException(e.getMessage()); + } + } + + @Override public String[] requiredModules() { + return new String[0]; + } + +} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java similarity index 86% rename from apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java rename to apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java index 2f4990ec3..87c21d809 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java @@ -29,16 +29,15 @@ import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; import org.apache.zookeeper.data.Stat; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.client.ClientException; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException; -import org.skywalking.apm.collector.client.zookeeper.util.PathUtils; +import org.skywalking.apm.collector.cluster.ClusterModuleListener; import org.skywalking.apm.collector.cluster.ClusterNodeExistException; +import org.skywalking.apm.collector.cluster.DataMonitor; +import org.skywalking.apm.collector.cluster.ModuleRegistration; import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterDataListener; -import org.skywalking.apm.collector.core.module.ModuleRegistration; import org.skywalking.apm.collector.core.util.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,7 +51,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { private ZookeeperClient client; - private Map listeners; + private Map listeners; private Map registrations; public ClusterZKDataMonitor() { @@ -66,7 +65,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { List paths; try { paths = client.getChildren(event.getPath(), true); - ClusterDataListener listener = listeners.get(event.getPath()); + ClusterModuleListener listener = listeners.get(event.getPath()); Set remoteNodes = new HashSet<>(); Set notifiedNodes = listener.getAddresses(); if (CollectionUtils.isNotEmpty(paths)) { @@ -103,7 +102,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { this.client = (ZookeeperClient)client; } - @Override public void start() throws CollectorException { + public void start() throws CollectorException { Iterator> entryIterator = registrations.entrySet().iterator(); while (entryIterator.hasNext()) { Map.Entry next = entryIterator.next(); @@ -129,16 +128,18 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { } } - @Override - public void addListener(ClusterDataListener listener, ModuleRegistration registration) throws ClientException { - String path = PathUtils.convertKey2Path(listener.path()); + @Override public void addListener(ClusterModuleListener listener) { + String path = BASE_CATALOG + listener.path(); logger.info("listener path: {}", path); listeners.put(path, listener); - registrations.put(path, registration); } - @Override public ClusterDataListener getListener(String path) { - path = PathUtils.convertKey2Path(path); + @Override public void register(String path, ModuleRegistration registration) { + registrations.put(BASE_CATALOG + path, registration); + } + + @Override public ClusterModuleListener getListener(String path) { + path = BASE_CATALOG + path; return listeners.get(path); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleListenerService.java similarity index 56% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java rename to apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleListenerService.java index 775b92fe1..8d745474f 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleListenerService.java @@ -16,23 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.cluster; +package org.skywalking.apm.collector.cluster.zookeeper.service; -import java.util.Set; -import org.skywalking.apm.collector.core.client.DataMonitor; +import org.skywalking.apm.collector.cluster.ClusterModuleListener; +import org.skywalking.apm.collector.cluster.service.ModuleListenerService; +import org.skywalking.apm.collector.cluster.zookeeper.ClusterZKDataMonitor; /** * @author peng-yongsheng */ -public abstract class ClusterModuleRegistrationReader { +public class ZookeeperModuleListenerService implements ModuleListenerService { - private final DataMonitor dataMonitor; + private final ClusterZKDataMonitor dataMonitor; - public ClusterModuleRegistrationReader(DataMonitor dataMonitor) { + public ZookeeperModuleListenerService(ClusterZKDataMonitor dataMonitor) { this.dataMonitor = dataMonitor; } - public final Set read(String path) { - return dataMonitor.getListener(path).getAddresses(); + @Override public void addListener(ClusterModuleListener listener) { + dataMonitor.addListener(listener); } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleContext.java b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegisterService.java similarity index 52% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleContext.java rename to apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegisterService.java index 56ab0aa66..7b2c08cf0 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleContext.java +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/service/ZookeeperModuleRegisterService.java @@ -16,37 +16,25 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.cluster; +package org.skywalking.apm.collector.cluster.zookeeper.service; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.cluster.ModuleRegistration; +import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; +import org.skywalking.apm.collector.cluster.zookeeper.ClusterZKDataMonitor; /** * @author peng-yongsheng */ -public class ClusterModuleContext extends Context { +public class ZookeeperModuleRegisterService implements ModuleRegisterService { - public ClusterModuleContext(String groupName) { - super(groupName); - } + private final ClusterZKDataMonitor dataMonitor; - private ClusterModuleRegistrationReader reader; - - private DataMonitor dataMonitor; - - public ClusterModuleRegistrationReader getReader() { - return reader; - } - - public void setReader(ClusterModuleRegistrationReader reader) { - this.reader = reader; - } - - public DataMonitor getDataMonitor() { - return dataMonitor; - } - - public void setDataMonitor(DataMonitor dataMonitor) { + public ZookeeperModuleRegisterService(ClusterZKDataMonitor dataMonitor) { this.dataMonitor = dataMonitor; } + + @Override public void register(String moduleName, String providerName, ModuleRegistration registration) { + String path = "/" + moduleName + "/" + providerName; + dataMonitor.register(path, registration); + } } diff --git a/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..61623297f --- /dev/null +++ b/apm-collector/apm-collector-cluster/collector-cluster-zookeeper-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.cluster.zookeeper.ClusterModuleZookeeperProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/pom.xml b/apm-collector/apm-collector-cluster/pom.xml index eceb70d7f..341bbbace 100644 --- a/apm-collector/apm-collector-cluster/pom.xml +++ b/apm-collector/apm-collector-cluster/pom.xml @@ -1,22 +1,4 @@ - - @@ -28,7 +10,13 @@ 4.0.0 apm-collector-cluster - jar + pom + + collector-cluster-define + collector-cluster-zookeeper-provider + collector-cluster-redis-provider + collector-cluster-standalone-provider + @@ -38,8 +26,8 @@ org.skywalking - apm-collector-client + client-component ${project.version} - + \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java deleted file mode 100644 index 1d372476c..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.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.cluster; - -import java.util.List; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.framework.UnexpectedException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleRegistration; -import org.skywalking.apm.collector.core.server.Server; - -/** - * @author peng-yongsheng - */ -public abstract class ClusterModuleDefine extends ModuleDefine { - - public static final String BASE_CATALOG = "skywalking"; - - private Client client; - - @Override protected void initializeOtherContext() { - try { - client = createClient(); - client.initialize(); - dataMonitor().setClient(client); - ClusterModuleRegistrationReader reader = registrationReader(); - - CollectorContextHelper.INSTANCE.getClusterModuleContext().setDataMonitor(dataMonitor()); - CollectorContextHelper.INSTANCE.getClusterModuleContext().setReader(reader); - } catch (ClientException e) { - throw new UnexpectedException(e.getMessage()); - } - } - - public final Client getClient() { - return this.client; - } - - @Override public final Server server() { - return null; - } - - @Override public final List handlerList() { - return null; - } - - @Override protected final ModuleRegistration registration() { - throw new UnsupportedOperationException("Cluster module do not need module registration."); - } - - public abstract DataMonitor dataMonitor(); - - public abstract ClusterModuleRegistrationReader registrationReader(); - - public void startMonitor() throws CollectorException { - dataMonitor().start(); - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java deleted file mode 100644 index 051947bf0..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.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.cluster; - -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -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 ClusterModuleGroupDefine implements ModuleGroupDefine { - - public static final String GROUP_NAME = "cluster"; - private final ClusterModuleInstaller installer; - - public ClusterModuleGroupDefine() { - installer = new ClusterModuleInstaller(); - } - - @Override public String name() { - return GROUP_NAME; - } - - @Override public Context groupContext() { - return new ClusterModuleContext(GROUP_NAME); - } - - @Override public ModuleInstaller moduleInstaller() { - return installer; - } - - @Override public GroupConfigParser groupConfigParser() { - return null; - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java deleted file mode 100644 index 07c15b021..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.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.cluster; - -import java.util.LinkedList; -import java.util.List; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.module.SingleModuleInstaller; - -/** - * @author peng-yongsheng - */ -public class ClusterModuleInstaller extends SingleModuleInstaller { - - @Override public String groupName() { - return ClusterModuleGroupDefine.GROUP_NAME; - } - - @Override public Context moduleContext() { - ClusterModuleContext clusterModuleContext = new ClusterModuleContext(ClusterModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putClusterContext(clusterModuleContext); - return clusterModuleContext; - } - - @Override public List dependenceModules() { - List dependenceModules = new LinkedList<>(); - dependenceModules.add("collector_inside"); - return dependenceModules; - } - - @Override public void onAfterInstall() throws CollectorException { - ((ClusterModuleDefine)getModuleDefine()).startMonitor(); - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisConfig.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisConfig.java deleted file mode 100644 index c5c5e43e1..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisConfig.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.cluster.redis; - -/** - * @author peng-yongsheng - */ -public class ClusterRedisConfig { - public static String HOST; - public static int PORT; -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisConfigParser.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisConfigParser.java deleted file mode 100644 index abc3e6cc1..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisConfigParser.java +++ /dev/null @@ -1,41 +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.cluster.redis; - -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.StringUtils; - -/** - * @author peng-yongsheng - */ -public class ClusterRedisConfigParser implements ModuleConfigParser { - - private static final String HOST = "host"; - private static final String PORT = "port"; - - @Override public void parse(Map config) throws ConfigParseException { - ClusterRedisConfig.HOST = (String)config.get(HOST); - ClusterRedisConfig.PORT = (Integer)config.get(PORT); - if (StringUtils.isEmpty(ClusterRedisConfig.HOST) || ClusterRedisConfig.PORT == 0) { - throw new ConfigParseException(""); - } - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java deleted file mode 100644 index 771844855..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java +++ /dev/null @@ -1,63 +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.cluster.redis; - -import org.skywalking.apm.collector.client.redis.RedisClient; -import org.skywalking.apm.collector.cluster.ClusterModuleDefine; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; - -/** - * @author peng-yongsheng - */ -public class ClusterRedisModuleDefine extends ClusterModuleDefine { - - public static final String MODULE_NAME = "redis"; - - @Override public String group() { - return ClusterModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return MODULE_NAME; - } - - @Override public boolean defaultModule() { - return false; - } - - @Override protected ModuleConfigParser configParser() { - return new ClusterRedisConfigParser(); - } - - @Override public DataMonitor dataMonitor() { - return null; - } - - @Override protected Client createClient() { - return new RedisClient(ClusterRedisConfig.HOST, ClusterRedisConfig.PORT); - } - - @Override public ClusterModuleRegistrationReader registrationReader() { - return null; - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneConfigParser.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneConfigParser.java deleted file mode 100644 index 3aa9eb9f1..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneConfigParser.java +++ /dev/null @@ -1,31 +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.cluster.standalone; - -import java.util.Map; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; - -/** - * @author peng-yongsheng - */ -public class ClusterStandaloneConfigParser implements ModuleConfigParser { - @Override public void parse(Map config) throws ConfigParseException { - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java deleted file mode 100644 index e5d334dcf..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java +++ /dev/null @@ -1,69 +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.cluster.standalone; - -import org.skywalking.apm.collector.client.h2.H2Client; -import org.skywalking.apm.collector.cluster.ClusterModuleDefine; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; - -/** - * @author peng-yongsheng - */ -public class ClusterStandaloneModuleDefine extends ClusterModuleDefine { - - public static final String MODULE_NAME = "standalone"; - - private final ClusterStandaloneDataMonitor dataMonitor; - - public ClusterStandaloneModuleDefine() { - this.dataMonitor = new ClusterStandaloneDataMonitor(); - } - - @Override public String group() { - return ClusterModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return MODULE_NAME; - } - - @Override public boolean defaultModule() { - return true; - } - - @Override protected ModuleConfigParser configParser() { - return new ClusterStandaloneConfigParser(); - } - - @Override public DataMonitor dataMonitor() { - return dataMonitor; - } - - @Override protected Client createClient() { - return new H2Client(); - } - - @Override public ClusterModuleRegistrationReader registrationReader() { - return new ClusterStandaloneModuleRegistrationReader(dataMonitor); - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleRegistrationReader.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleRegistrationReader.java deleted file mode 100644 index 9d20357d7..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleRegistrationReader.java +++ /dev/null @@ -1,32 +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.cluster.standalone; - -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; - -/** - * @author peng-yongsheng - */ -public class ClusterStandaloneModuleRegistrationReader extends ClusterModuleRegistrationReader { - - public ClusterStandaloneModuleRegistrationReader(DataMonitor dataMonitor) { - super(dataMonitor); - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKConfig.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKConfig.java deleted file mode 100644 index 1b350b3d3..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKConfig.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.cluster.zookeeper; - -/** - * @author peng-yongsheng - */ -public class ClusterZKConfig { - public static String HOST_PORT; - public static int SESSION_TIMEOUT; -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKConfigParser.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKConfigParser.java deleted file mode 100644 index f407190f4..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKConfigParser.java +++ /dev/null @@ -1,46 +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.cluster.zookeeper; - -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.StringUtils; - -/** - * @author peng-yongsheng - */ -public class ClusterZKConfigParser implements ModuleConfigParser { - - private static final String HOST_PORT = "hostPort"; - private static final String SESSION_TIMEOUT = "sessionTimeout"; - - @Override public void parse(Map config) throws ConfigParseException { - ClusterZKConfig.HOST_PORT = (String)config.get(HOST_PORT); - ClusterZKConfig.SESSION_TIMEOUT = 3000; - - if (StringUtils.isEmpty(ClusterZKConfig.HOST_PORT)) { - throw new ConfigParseException(""); - } - - if (!StringUtils.isEmpty(config.get(SESSION_TIMEOUT))) { - ClusterZKConfig.SESSION_TIMEOUT = (Integer)config.get(SESSION_TIMEOUT); - } - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java deleted file mode 100644 index 6cbc453c1..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java +++ /dev/null @@ -1,68 +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.cluster.zookeeper; - -import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; -import org.skywalking.apm.collector.cluster.ClusterModuleDefine; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; - -/** - * @author peng-yongsheng - */ -public class ClusterZKModuleDefine extends ClusterModuleDefine { - - public static final String MODULE_NAME = "zookeeper"; - private final ClusterZKDataMonitor dataMonitor; - - public ClusterZKModuleDefine() { - dataMonitor = new ClusterZKDataMonitor(); - } - - @Override protected String group() { - return ClusterModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return MODULE_NAME; - } - - @Override public boolean defaultModule() { - return false; - } - - @Override protected ModuleConfigParser configParser() { - return new ClusterZKConfigParser(); - } - - @Override public DataMonitor dataMonitor() { - return dataMonitor; - } - - @Override protected Client createClient() { - return new ZookeeperClient(ClusterZKConfig.HOST_PORT, ClusterZKConfig.SESSION_TIMEOUT, dataMonitor); - } - - @Override public ClusterModuleRegistrationReader registrationReader() { - return new ClusterZKModuleRegistrationReader(dataMonitor); - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleRegistrationReader.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleRegistrationReader.java deleted file mode 100644 index a62e7baab..000000000 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleRegistrationReader.java +++ /dev/null @@ -1,32 +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.cluster.zookeeper; - -import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; - -/** - * @author peng-yongsheng - */ -public class ClusterZKModuleRegistrationReader extends ClusterModuleRegistrationReader { - - public ClusterZKModuleRegistrationReader(DataMonitor dataMonitor) { - super(dataMonitor); - } -} diff --git a/apm-collector/apm-collector-cluster/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-cluster/src/main/resources/META-INF/defines/group.define deleted file mode 100644 index 333959bcb..000000000 --- a/apm-collector/apm-collector-cluster/src/main/resources/META-INF/defines/group.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-cluster/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-cluster/src/main/resources/META-INF/defines/module.define deleted file mode 100644 index 64e4e0bf7..000000000 --- a/apm-collector/apm-collector-cluster/src/main/resources/META-INF/defines/module.define +++ /dev/null @@ -1,3 +0,0 @@ -org.skywalking.apm.collector.cluster.zookeeper.ClusterZKModuleDefine -org.skywalking.apm.collector.cluster.standalone.ClusterStandaloneModuleDefine -org.skywalking.apm.collector.cluster.redis.ClusterRedisModuleDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-client/pom.xml b/apm-collector/apm-collector-component/client-component/pom.xml similarity index 65% rename from apm-collector/apm-collector-client/pom.xml rename to apm-collector/apm-collector-component/client-component/pom.xml index f7461705a..066325e21 100644 --- a/apm-collector/apm-collector-client/pom.xml +++ b/apm-collector/apm-collector-component/client-component/pom.xml @@ -1,41 +1,18 @@ - - - apm-collector + apm-collector-component org.skywalking 3.2.4-2017 4.0.0 - apm-collector-client + client-component jar - - org.skywalking - apm-collector-core - ${project.version} - com.h2database h2 diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/Client.java similarity index 94% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/Client.java index d6f4141eb..f338b1869 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/Client.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.client; +package org.skywalking.apm.collector.client; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/ClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/ClientException.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/ClientException.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/ClientException.java index b3088011c..fc97f936e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/ClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/ClientException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.client; +package org.skywalking.apm.collector.client; import org.skywalking.apm.collector.core.CollectorException; diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java similarity index 98% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java index 791199a17..fa5df5e9a 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java @@ -38,8 +38,8 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.InetSocketTransportAddress; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.transport.client.PreBuiltTransportClient; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.client.ClientException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java similarity index 94% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java index 24eb74459..8988e1016 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.elasticsearch; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java similarity index 92% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java index 782148bbd..f792c2ab9 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java @@ -20,8 +20,8 @@ package org.skywalking.apm.collector.client.grpc; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java similarity index 94% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java index a0322ea6a..701167cb5 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.grpc; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java similarity index 98% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java index 74dd9b922..a6bef598e 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java @@ -25,7 +25,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.h2.util.IOUtils; -import org.skywalking.apm.collector.core.client.Client; +import org.skywalking.apm.collector.client.Client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java similarity index 94% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java index 45e4828a8..e50c2081d 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/h2/H2ClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.h2; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java similarity index 91% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java index e75954743..95508b667 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java @@ -18,8 +18,8 @@ package org.skywalking.apm.collector.client.redis; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.client.ClientException; import redis.clients.jedis.Jedis; /** diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java similarity index 94% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java index 0e3017225..7d1cda277 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/redis/RedisClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.redis; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java similarity index 98% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java index a561e8b80..2e247de42 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java @@ -26,7 +26,7 @@ import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; import org.apache.zookeeper.data.Stat; -import org.skywalking.apm.collector.core.client.Client; +import org.skywalking.apm.collector.client.Client; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java similarity index 94% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java index cdf80f33f..3b450e02d 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java +++ b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClientException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.client.zookeeper; -import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.client.ClientException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/util/PathUtils.java b/apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/util/PathUtils.java similarity index 100% rename from apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/util/PathUtils.java rename to apm-collector/apm-collector-component/client-component/src/main/java/org/skywalking/apm/collector/client/zookeeper/util/PathUtils.java diff --git a/apm-collector/apm-collector-component/pom.xml b/apm-collector/apm-collector-component/pom.xml new file mode 100644 index 000000000..af78e4f0e --- /dev/null +++ b/apm-collector/apm-collector-component/pom.xml @@ -0,0 +1,26 @@ + + + + apm-collector + org.skywalking + 3.2.4-2017 + + 4.0.0 + + apm-collector-component + pom + + client-component + server-component + + + + + org.skywalking + apm-collector-core + ${project.version} + + + diff --git a/apm-collector/apm-collector-component/server-component/pom.xml b/apm-collector/apm-collector-component/server-component/pom.xml new file mode 100644 index 000000000..0238d63e0 --- /dev/null +++ b/apm-collector/apm-collector-component/server-component/pom.xml @@ -0,0 +1,36 @@ + + + + apm-collector-component + org.skywalking + 3.2.4-2017 + + 4.0.0 + + server-component + jar + + + 9.4.2.v20170220 + + + + + org.skywalking + apm-network + ${project.version} + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-servlet + ${jetty.version} + + + diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/Server.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/Server.java similarity index 85% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/Server.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/Server.java index 934e5d001..facf76e56 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/Server.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/Server.java @@ -16,9 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.server; - -import org.skywalking.apm.collector.core.framework.Handler; +package org.skywalking.apm.collector.server; /** * @author peng-yongsheng @@ -33,5 +31,5 @@ public interface Server { void start() throws ServerException; - void addHandler(Handler handler); + void addHandler(ServerHandler handler); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerException.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/ServerException.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerException.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/ServerException.java index 9eedf1fc0..cb88ebe99 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerException.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/ServerException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.server; +package org.skywalking.apm.collector.server; import org.skywalking.apm.collector.core.CollectorException; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/ServerHandler.java similarity index 90% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/ServerHandler.java index 9e9714d26..0baaf38f2 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Handler.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/ServerHandler.java @@ -16,10 +16,10 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.server; /** * @author peng-yongsheng */ -public interface Handler { +public interface ServerHandler { } diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java similarity index 87% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java index b4ab728b9..0f2c228dc 100644 --- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java @@ -18,10 +18,10 @@ package org.skywalking.apm.collector.server.grpc; -import org.skywalking.apm.collector.core.framework.Handler; +import org.skywalking.apm.collector.server.ServerHandler; /** * @author peng-yongsheng */ -public interface GRPCHandler extends Handler { +public interface GRPCHandler extends ServerHandler { } diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java similarity index 89% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java index 89dd7d10a..b4c68fb7c 100644 --- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java @@ -21,9 +21,9 @@ package org.skywalking.apm.collector.server.grpc; import io.grpc.netty.NettyServerBuilder; import java.io.IOException; import java.net.InetSocketAddress; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.ServerHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -67,7 +67,7 @@ public class GRPCServer implements Server { } } - @Override public void addHandler(Handler handler) { + @Override public void addHandler(ServerHandler handler) { nettyServerBuilder.addService((io.grpc.BindableService)handler); } } diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java similarity index 94% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java index 6824f8538..fd1845de5 100644 --- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServerException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.server.grpc; -import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.server.ServerException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/ArgumentsParseException.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/ArgumentsParseException.java similarity index 100% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/ArgumentsParseException.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/ArgumentsParseException.java diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyHandler.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyHandler.java similarity index 98% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyHandler.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyHandler.java index 1b8c22f48..36608ded3 100644 --- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyHandler.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyHandler.java @@ -30,13 +30,13 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.util.ObjectUtils; +import org.skywalking.apm.collector.server.ServerHandler; /** * @author peng-yongsheng */ -public abstract class JettyHandler extends HttpServlet implements Handler { +public abstract class JettyHandler extends HttpServlet implements ServerHandler { public abstract String pathSpec(); diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServer.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServer.java similarity index 80% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServer.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServer.java index 95d9c5db9..a606e9726 100644 --- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServer.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServer.java @@ -22,9 +22,10 @@ import java.net.InetSocketAddress; import javax.servlet.http.HttpServlet; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; +import org.eclipse.jetty.servlet.ServletMapping; +import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.ServerHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,14 +66,18 @@ public class JettyServer implements Server { server.setHandler(servletContextHandler); } - @Override public void addHandler(Handler handler) { + @Override public void addHandler(ServerHandler handler) { ServletHolder servletHolder = new ServletHolder(); servletHolder.setServlet((HttpServlet)handler); servletContextHandler.addServlet(servletHolder, ((JettyHandler)handler).pathSpec()); } @Override public void start() throws ServerException { + logger.info("start server, host: {}, port: {}", host, port); try { + for (ServletMapping servletMapping : servletContextHandler.getServletHandler().getServletMappings()) { + logger.info("jetty servlet mappings: {} register by {}", servletMapping.getPathSpecs(), servletMapping.getServletName()); + } server.start(); } catch (Exception e) { throw new JettyServerException(e.getMessage(), e); diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServerException.java b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServerException.java similarity index 94% rename from apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServerException.java rename to apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServerException.java index 538a4bcf8..a7ff6a3bf 100644 --- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServerException.java +++ b/apm-collector/apm-collector-component/server-component/src/main/java/org/skywalking/apm/collector/server/jetty/JettyServerException.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.server.jetty; -import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.server.ServerException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/pom.xml b/apm-collector/apm-collector-core/pom.xml index 71afa8e33..9b9a29565 100644 --- a/apm-collector/apm-collector-core/pom.xml +++ b/apm-collector/apm-collector-core/pom.xml @@ -1,22 +1,4 @@ - - @@ -31,11 +13,6 @@ jar - - org.yaml - snakeyaml - 1.18 - com.google.code.gson gson diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/UnexpectedException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/UnexpectedException.java similarity index 91% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/UnexpectedException.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/UnexpectedException.java index dd10bf08d..bc50de65d 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/UnexpectedException.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/UnexpectedException.java @@ -16,13 +16,12 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core; /** - * @author peng-yongsheng + * @author wu-sheng */ public class UnexpectedException extends RuntimeException { - public UnexpectedException(String message) { super(message); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListenerDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListenerDefine.java deleted file mode 100644 index b77e1a1a6..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListenerDefine.java +++ /dev/null @@ -1,26 +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.core.cluster; - -/** - * @author peng-yongsheng - */ -public interface ClusterDataListenerDefine { - ClusterDataListener listener(); -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/AbstractHashMessage.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/AbstractHashMessage.java similarity index 89% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/AbstractHashMessage.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/AbstractHashMessage.java index a2157b4ca..fbe4f7131 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/AbstractHashMessage.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/AbstractHashMessage.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.stream; +package org.skywalking.apm.collector.core.data; /** * The AbstractHashMessage implementations represent aggregate message, @@ -36,4 +36,8 @@ public abstract class AbstractHashMessage { public int getHashCode() { return hashCode; } + + public void setKey(String key) { + this.hashCode = key.hashCode(); + } } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/Attribute.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Attribute.java similarity index 91% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/Attribute.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Attribute.java index 495638136..d1accabf8 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/Attribute.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Attribute.java @@ -16,9 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define; - -import org.skywalking.apm.collector.core.stream.Operation; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/AttributeType.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/AttributeType.java similarity index 93% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/AttributeType.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/AttributeType.java index 6727c87d1..2549c2059 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/AttributeType.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/AttributeType.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Column.java similarity index 66% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleException.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Column.java index f8ba83d01..3b2d0ea4b 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleException.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Column.java @@ -16,20 +16,25 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.cluster; - -import org.skywalking.apm.collector.core.module.ModuleException; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng */ -public class ClusterModuleException extends ModuleException { +public class Column { + private final String name; + private final Operation operation; - public ClusterModuleException(String message) { - super(message); + public Column(String name, Operation operation) { + this.name = name; + this.operation = operation; } - public ClusterModuleException(String message, Throwable cause) { - super(message, cause); + public String getName() { + return name; + } + + public Operation getOperation() { + return operation; } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/ColumnDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/ColumnDefine.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/ColumnDefine.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/ColumnDefine.java index 75e616132..cedde598f 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/ColumnDefine.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/ColumnDefine.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/CommonTable.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/CommonTable.java similarity index 94% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/CommonTable.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/CommonTable.java index 19d160b7c..92046a30e 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/CommonTable.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/CommonTable.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Data.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Data.java new file mode 100644 index 000000000..6f6beca17 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Data.java @@ -0,0 +1,188 @@ +/* + * 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.core.data; + +/** + * @author peng-yongsheng + */ +public abstract class Data extends EndOfBatchQueueMessage { + private String[] dataStrings; + private Long[] dataLongs; + private Double[] dataDoubles; + private Integer[] dataIntegers; + private Boolean[] dataBooleans; + private byte[][] dataBytes; + private final Column[] stringColumns; + private final Column[] longColumns; + private final Column[] doubleColumns; + private final Column[] integerColumns; + private final Column[] booleanColumns; + private final Column[] byteColumns; + + public Data(String id, Column[] stringColumns, Column[] longColumns, Column[] doubleColumns, + Column[] integerColumns, Column[] booleanColumns, Column[] byteColumns) { + super(id); + this.dataStrings = new String[stringColumns.length]; + this.dataStrings[0] = id; + this.dataLongs = new Long[longColumns.length]; + this.dataDoubles = new Double[doubleColumns.length]; + this.dataIntegers = new Integer[integerColumns.length]; + this.dataBooleans = new Boolean[booleanColumns.length]; + this.dataBytes = new byte[byteColumns.length][]; + this.stringColumns = stringColumns; + this.longColumns = longColumns; + this.doubleColumns = doubleColumns; + this.integerColumns = integerColumns; + this.booleanColumns = booleanColumns; + this.byteColumns = byteColumns; + } + + public int getDataStringsCount() { + return dataStrings.length; + } + + public int getDataLongsCount() { + return dataLongs.length; + } + + public int getDataDoublesCount() { + return dataDoubles.length; + } + + public int getDataIntegersCount() { + return dataIntegers.length; + } + + public int getDataBooleansCount() { + return dataBooleans.length; + } + + public int getDataBytesCount() { + return dataBytes.length; + } + + public void setDataString(int position, String value) { + dataStrings[position] = value; + } + + public void setDataLong(int position, Long value) { + dataLongs[position] = value; + } + + public void setDataDouble(int position, Double value) { + dataDoubles[position] = value; + } + + public void setDataInteger(int position, Integer value) { + dataIntegers[position] = value; + } + + public void setDataBoolean(int position, Boolean value) { + dataBooleans[position] = value; + } + + public void setDataBytes(int position, byte[] dataBytes) { + this.dataBytes[position] = dataBytes; + } + + public String getDataString(int position) { + return dataStrings[position]; + } + + public Long getDataLong(int position) { + return dataLongs[position]; + } + + public Double getDataDouble(int position) { + return dataDoubles[position]; + } + + public Integer getDataInteger(int position) { + return dataIntegers[position]; + } + + public Boolean getDataBoolean(int position) { + return dataBooleans[position]; + } + + public byte[] getDataBytes(int position) { + return dataBytes[position]; + } + + public String getId() { + return dataStrings[0]; + } + + public void setId(String id) { + setKey(id); + this.dataStrings[0] = id; + } + + public void mergeData(Data newData) { + for (int i = 0; i < stringColumns.length; i++) { + String stringData = stringColumns[i].getOperation().operate(newData.getDataString(i), this.dataStrings[i]); + this.dataStrings[i] = stringData; + } + for (int i = 0; i < longColumns.length; i++) { + Long longData = longColumns[i].getOperation().operate(newData.getDataLong(i), this.dataLongs[i]); + this.dataLongs[i] = longData; + } + for (int i = 0; i < doubleColumns.length; i++) { + Double doubleData = doubleColumns[i].getOperation().operate(newData.getDataDouble(i), this.dataDoubles[i]); + this.dataDoubles[i] = doubleData; + } + for (int i = 0; i < integerColumns.length; i++) { + Integer integerData = integerColumns[i].getOperation().operate(newData.getDataInteger(i), this.dataIntegers[i]); + this.dataIntegers[i] = integerData; + } + for (int i = 0; i < booleanColumns.length; i++) { + Boolean booleanData = booleanColumns[i].getOperation().operate(newData.getDataBoolean(i), this.dataBooleans[i]); + this.dataBooleans[i] = booleanData; + } + for (int i = 0; i < byteColumns.length; i++) { + byte[] byteData = byteColumns[i].getOperation().operate(newData.getDataBytes(i), this.dataBytes[i]); + this.dataBytes[i] = byteData; + } + } + + @Override public String toString() { + StringBuilder dataStr = new StringBuilder(); + dataStr.append("string: ["); + for (String dataString : dataStrings) { + dataStr.append(dataString).append(","); + } + dataStr.append("], longs: ["); + for (Long dataLong : dataLongs) { + dataStr.append(dataLong).append(","); + } + dataStr.append("], double: ["); + for (Double dataDouble : dataDoubles) { + dataStr.append(dataDouble).append(","); + } + dataStr.append("], integer: ["); + for (Integer dataInteger : dataIntegers) { + dataStr.append(dataInteger).append(","); + } + dataStr.append("], boolean: ["); + for (Boolean dataBoolean : dataBooleans) { + dataStr.append(dataBoolean).append(","); + } + return dataStr.toString(); + } +} diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/EndOfBatchQueueMessage.java similarity index 64% rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleException.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/EndOfBatchQueueMessage.java index 85e199609..d0647db80 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleException.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/EndOfBatchQueueMessage.java @@ -16,20 +16,25 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentserver; - -import org.skywalking.apm.collector.core.module.ModuleException; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng */ -public class AgentServerModuleException extends ModuleException { +public abstract class EndOfBatchQueueMessage extends AbstractHashMessage { - public AgentServerModuleException(String message) { - super(message); + private boolean endOfBatch; + + public EndOfBatchQueueMessage(String key) { + super(key); + endOfBatch = false; } - public AgentServerModuleException(String message, Throwable cause) { - super(message, cause); + public final boolean isEndOfBatch() { + return endOfBatch; + } + + public final void setEndOfBatch(boolean endOfBatch) { + this.endOfBatch = endOfBatch; } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Operation.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Operation.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Operation.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Operation.java index 84f9b0df2..f5c130438 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Operation.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/Operation.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.stream; +package org.skywalking.apm.collector.core.data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageDefineLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/StorageDefineLoader.java similarity index 87% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageDefineLoader.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/StorageDefineLoader.java index af6b90758..d0ca17f7f 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageDefineLoader.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/StorageDefineLoader.java @@ -16,13 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.core.data; import java.util.LinkedList; import java.util.List; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; +import org.skywalking.apm.collector.core.define.DefineException; +import org.skywalking.apm.collector.core.define.DefinitionLoader; +import org.skywalking.apm.collector.core.define.Loader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageDefinitionFile.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/StorageDefinitionFile.java similarity index 88% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageDefinitionFile.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/StorageDefinitionFile.java index 9c34cd72f..304deb10b 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageDefinitionFile.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/StorageDefinitionFile.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.core.data; -import org.skywalking.apm.collector.core.framework.DefinitionFile; +import org.skywalking.apm.collector.core.define.DefinitionFile; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/TableDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/TableDefine.java similarity index 96% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/TableDefine.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/TableDefine.java index 731280f95..662d59251 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/TableDefine.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/TableDefine.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.core.data; import java.util.LinkedList; import java.util.List; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/AddOperation.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/AddOperation.java similarity index 93% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/AddOperation.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/AddOperation.java index e9adfe9a1..eaa5c7ecd 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/AddOperation.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/AddOperation.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.stream.operate; +package org.skywalking.apm.collector.core.data.operator; -import org.skywalking.apm.collector.core.stream.Operation; +import org.skywalking.apm.collector.core.data.Operation; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/CoverOperation.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/CoverOperation.java similarity index 92% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/CoverOperation.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/CoverOperation.java index 966c54b66..6f3675819 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/CoverOperation.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/CoverOperation.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.stream.operate; +package org.skywalking.apm.collector.core.data.operator; -import org.skywalking.apm.collector.core.stream.Operation; +import org.skywalking.apm.collector.core.data.Operation; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/NonOperation.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/NonOperation.java similarity index 92% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/NonOperation.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/NonOperation.java index 16887786a..97a261bae 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/operate/NonOperation.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/data/operator/NonOperation.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.stream.operate; +package org.skywalking.apm.collector.core.data.operator; -import org.skywalking.apm.collector.core.stream.Operation; +import org.skywalking.apm.collector.core.data.Operation; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DefineException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefineException.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DefineException.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefineException.java index 18ebb00c9..281d22d63 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DefineException.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefineException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core.define; import org.skywalking.apm.collector.core.CollectorException; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DefinitionFile.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefinitionFile.java similarity index 94% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DefinitionFile.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefinitionFile.java index c06b6a8e9..be2915e26 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DefinitionFile.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefinitionFile.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core.define; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefinitionLoader.java similarity index 96% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefinitionLoader.java index 461cff604..363cd805a 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/DefinitionLoader.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.util; +package org.skywalking.apm.collector.core.define; import java.io.BufferedReader; import java.io.IOException; @@ -28,7 +28,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Properties; -import org.skywalking.apm.collector.core.framework.DefinitionFile; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Loader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/Loader.java similarity index 93% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Loader.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/Loader.java index 8cd44208e..18af026ab 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Loader.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/define/Loader.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core.define; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.java deleted file mode 100644 index eaace4ac0..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.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.core.framework; - -import java.util.LinkedHashMap; -import java.util.Map; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; - -/** - * @author peng-yongsheng - */ -public enum CollectorContextHelper { - INSTANCE; - - private ClusterModuleContext clusterModuleContext; - private Map contexts = new LinkedHashMap<>(); - - public Context getContext(String moduleGroupName) { - return contexts.get(moduleGroupName); - } - - public ClusterModuleContext getClusterModuleContext() { - return this.clusterModuleContext; - } - - public void putContext(Context context) { - if (contexts.containsKey(context.getGroupName())) { - throw new UnsupportedOperationException("This module context was put, do not allow put a new one"); - } else { - contexts.put(context.getGroupName(), context); - } - } - - public void putClusterContext(ClusterModuleContext clusterModuleContext) { - this.clusterModuleContext = clusterModuleContext; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DataInitializer.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DataInitializer.java deleted file mode 100644 index 497ff1909..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/DataInitializer.java +++ /dev/null @@ -1,33 +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.core.framework; - -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; - -/** - * @author peng-yongsheng - */ -public interface DataInitializer { - void initialize(Client client) throws ClientException; - - void addItem(Client client, String itemKey) throws ClientException; - - boolean existItem(Client client, String itemKey) throws ClientException; -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java deleted file mode 100644 index 6650fe4e1..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java +++ /dev/null @@ -1,26 +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.core.framework; - -/** - * @author peng-yongsheng - */ -public interface Define { - String name(); -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Executor.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Executor.java index f768bac44..9c4fed195 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Executor.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Executor.java @@ -18,9 +18,11 @@ package org.skywalking.apm.collector.core.framework; +import org.skywalking.apm.collector.core.CollectorException; + /** * @author peng-yongsheng */ -public interface Executor { - void execute(Object message); +public interface Executor { + void execute(INPUT input) throws CollectorException; } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Provider.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Provider.java deleted file mode 100644 index f49cf0519..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Provider.java +++ /dev/null @@ -1,26 +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.core.framework; - -/** - * @author peng-yongsheng - */ -public interface Provider { - D create(); -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/DirectWay.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/DirectWay.java new file mode 100644 index 000000000..bdf85745f --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/DirectWay.java @@ -0,0 +1,32 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class DirectWay extends WayToNode { + public DirectWay(NodeProcessor destinationHandler) { + super(destinationHandler); + } + + @Override protected void in(INPUT o) { + out(o); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java new file mode 100644 index 000000000..801dab7a5 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Graph.java @@ -0,0 +1,72 @@ +/* + * 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.core.graph; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author peng-yongsheng, wu-sheng + */ +public final class Graph { + private int id; + private WayToNode entryWay; + private ConcurrentHashMap nodeIndex = new ConcurrentHashMap<>(); + + Graph(int id) { + this.id = id; + } + + public void start(INPUT input) { + entryWay.in(input); + } + + public Node addNode(NodeProcessor nodeProcessor) { + return addNode(new DirectWay(nodeProcessor)); + } + + public Node addNode(WayToNode entryWay) { + synchronized (this) { + this.entryWay = entryWay; + this.entryWay.buildDestination(this); + return entryWay.getDestination(); + } + } + + void checkForNewNode(Node node) { + int nodeId = node.getHandler().id(); + if (nodeIndex.containsKey(nodeId)) { + throw new PotentialCyclicGraphException("handler=" + + node.getHandler().getClass().getName() + + " already exists in graph[" + id + "]"); + } + nodeIndex.put(nodeId, node); + } + + public GraphNodeFinder toFinder() { + return new GraphNodeFinder(this); + } + + ConcurrentHashMap getNodeIndex() { + return nodeIndex; + } + + int getId() { + return id; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphManager.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphManager.java new file mode 100644 index 000000000..26cd39d5f --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphManager.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.core.graph; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author wusheng + */ +public enum GraphManager { + INSTANCE; + + private Map allGraphs = new HashMap<>(); + + /** + * Create a stream process graph. + * + * @param graphId represents a graph, which is used for finding it. + * @return + */ + public synchronized Graph createIfAbsent(int graphId, Class input) { + if (!allGraphs.containsKey(graphId)) { + Graph graph = new Graph(graphId); + allGraphs.put(graphId, graph); + return graph; + } else { + return allGraphs.get(graphId); + } + } + + public Graph findGraph(int graphId) { + Graph graph = allGraphs.get(graphId); + if (graph == null) { + throw new GraphNotFoundException("Graph id=" + graphId + " not found in this GraphManager"); + } + return graph; + } + + public void reset() { + allGraphs.clear(); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphNodeFinder.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphNodeFinder.java new file mode 100644 index 000000000..44a78edf0 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphNodeFinder.java @@ -0,0 +1,62 @@ +/* + * 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.core.graph; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * @author wu-sheng + */ +public class GraphNodeFinder { + private Graph graph; + + GraphNodeFinder(Graph graph) { + this.graph = graph; + } + + /** + * Find an exist node to build the graph. + * + * @param handlerId of specific node in graph. + * @param outputClass of the found node + * @param type of given output class + * @return Node instance. + */ + public Node findNode(int handlerId, Class outputClass) { + ConcurrentHashMap graphNodeIndex = graph.getNodeIndex(); + Node node = graphNodeIndex.get(handlerId); + if (node == null) { + throw new NodeNotFoundException("Can't find node with handlerId=" + + handlerId + + " in graph[" + graph.getId() + "]"); + } + return node; + } + + public Next findNext(int handlerId) { + ConcurrentHashMap graphNodeIndex = graph.getNodeIndex(); + Node node = graphNodeIndex.get(handlerId); + if (node == null) { + throw new NodeNotFoundException("Can't find node with handlerId=" + + handlerId + + " in graph[" + graph.getId() + "]"); + } + return node.getNext(); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphNotFoundException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphNotFoundException.java new file mode 100644 index 000000000..032d01054 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/GraphNotFoundException.java @@ -0,0 +1,28 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class GraphNotFoundException extends RuntimeException { + public GraphNotFoundException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Next.java similarity index 54% rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Next.java index 7fab0006c..1bbaedb9f 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Next.java @@ -16,26 +16,35 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentserver; +package org.skywalking.apm.collector.core.graph; +import java.util.LinkedList; 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.framework.Executor; /** - * @author peng-yongsheng + * The Next is a delegate object for the following {@link Node}. + * + * @author peng-yongsheng, wu-sheng */ -public class AgentServerModuleInstaller extends MultipleModuleInstaller { +public class Next implements Executor { - @Override public String groupName() { - return AgentServerModuleGroupDefine.GROUP_NAME; + private final List ways; + + public Next() { + this.ways = new LinkedList<>(); } - @Override public Context moduleContext() { - return new AgentServerModuleContext(groupName()); + final void addWay(WayToNode way) { + ways.add(way); } - @Override public List dependenceModules() { - return null; + /** + * Drive to the next nodes + * + * @param input + */ + @Override public void execute(INPUT input) { + ways.forEach(way -> way.in(input)); } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Node.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Node.java new file mode 100644 index 000000000..9df55deeb --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/Node.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.core.graph; + +/** + * The Node in the graph with explicit INPUT and OUTPUT types. + * + * @author peng-yongsheng, wu-sheng + */ +public final class Node { + private final NodeProcessor nodeProcessor; + private final Next next; + private final Graph graph; + + Node(Graph graph, NodeProcessor nodeProcessor) { + this.graph = graph; + this.nodeProcessor = nodeProcessor; + this.next = new Next<>(); + this.graph.checkForNewNode(this); + } + + public final Node addNext(NodeProcessor nodeProcessor) { + return this.addNext(new DirectWay(nodeProcessor)); + } + + public final Node addNext(WayToNode way) { + synchronized (graph) { + way.buildDestination(graph); + next.addWay(way); + return way.getDestination(); + } + } + + final void execute(INPUT input) { + nodeProcessor.process(input, next); + } + + NodeProcessor getHandler() { + return nodeProcessor; + } + + Next getNext() { + return next; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/NodeNotFoundException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/NodeNotFoundException.java new file mode 100644 index 000000000..dc2a27a4f --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/NodeNotFoundException.java @@ -0,0 +1,28 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class NodeNotFoundException extends RuntimeException { + public NodeNotFoundException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/NodeProcessor.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/NodeProcessor.java new file mode 100644 index 000000000..112f7cd6d --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/NodeProcessor.java @@ -0,0 +1,33 @@ +/* + * 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.core.graph; + +/** + * @author peng-yongsheng, wu-sheng + */ +public interface NodeProcessor { + /** + * The unique id in the certain graph. + * + * @return id + */ + int id(); + + void process(input input, Next next); +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/PotentialCyclicGraphException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/PotentialCyclicGraphException.java new file mode 100644 index 000000000..55a05a13b --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/PotentialCyclicGraphException.java @@ -0,0 +1,28 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class PotentialCyclicGraphException extends RuntimeException { + public PotentialCyclicGraphException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/WayToNode.java similarity index 54% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/WayToNode.java index 8abb42cf3..ecaeec7a3 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/graph/WayToNode.java @@ -16,26 +16,30 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui; - -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.module.ModuleDefine; +package org.skywalking.apm.collector.core.graph; /** - * @author peng-yongsheng + * @author wusheng */ -public abstract class UIModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { +public abstract class WayToNode { + private Node destination; + private NodeProcessor destinationHandler; - @Override protected final Client createClient() { - throw new UnsupportedOperationException(""); + public WayToNode(NodeProcessor destinationHandler) { + this.destinationHandler = destinationHandler; } - @Override public final boolean defaultModule() { - return true; + void buildDestination(Graph graph) { + destination = new Node(graph, destinationHandler); } - @Override protected final void initializeOtherContext() { + protected abstract void in(INPUT input); + protected void out(INPUT input) { + destination.execute(input); + } + + Node getDestination() { + return destination; } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ApplicationConfiguration.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ApplicationConfiguration.java new file mode 100644 index 000000000..e41786381 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ApplicationConfiguration.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.core.module; + +import java.util.HashMap; +import java.util.Properties; + +/** + * Modulization configurations. The {@link ModuleManager} is going to start, lookup, start modules based on this. + * + * @author wu-sheng, peng-yongsheng + */ +public class ApplicationConfiguration { + private HashMap modules = new HashMap<>(); + + public String[] moduleList() { + return modules.keySet().toArray(new String[0]); + } + + public ModuleConfiguration addModule(String moduleName) { + ModuleConfiguration newModule = new ModuleConfiguration(); + modules.put(moduleName, newModule); + return newModule; + } + + public boolean has(String moduleName) { + return modules.containsKey(moduleName); + } + + public ModuleConfiguration getModuleConfiguration(String name) { + return modules.get(name); + } + + /** + * The configurations about a certain module. + */ + public class ModuleConfiguration { + private HashMap providers = new HashMap<>(); + + private ModuleConfiguration() { + } + + public Properties getProviderConfiguration(String name) { + return providers.get(name).getProperties(); + } + + public boolean has(String name) { + return providers.containsKey(name); + } + + public ModuleConfiguration addProviderConfiguration(String name, Properties properties) { + ProviderConfiguration newProvider = new ProviderConfiguration(properties); + providers.put(name, newProvider); + return this; + } + } + + /** + * The configuration about a certain provider of a module. + */ + public class ProviderConfiguration { + private Properties properties; + + ProviderConfiguration(Properties properties) { + this.properties = properties; + } + + public Properties getProperties() { + return properties; + } + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java new file mode 100644 index 000000000..9cd994750 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/BootstrapFlow.java @@ -0,0 +1,125 @@ +/* + * 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.core.module; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import org.skywalking.apm.collector.core.util.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author wu-sheng + */ +public class BootstrapFlow { + private final Logger logger = LoggerFactory.getLogger(BootstrapFlow.class); + + private Map loadedModules; + private ApplicationConfiguration applicationConfiguration; + private List startupSequence; + + public BootstrapFlow(Map loadedModules, + ApplicationConfiguration applicationConfiguration) throws CycleDependencyException { + this.loadedModules = loadedModules; + this.applicationConfiguration = applicationConfiguration; + startupSequence = new LinkedList<>(); + + makeSequence(); + } + + void start(ModuleManager moduleManager, + ApplicationConfiguration configuration) throws ProviderNotFoundException, ModuleNotFoundException, ServiceNotProvidedException { + for (ModuleProvider provider : startupSequence) { + String[] requiredModules = provider.requiredModules(); + if (requiredModules != null) { + for (String module : requiredModules) { + if (!moduleManager.has(module)) { + throw new ModuleNotFoundException(module + " is required by " + provider.getModuleName() + + "." + provider.name() + ", but not found."); + } + } + } + logger.info("start the provider {} in {} module.", provider.name(), provider.getModuleName()); + provider.requiredCheck(provider.getModule().services()); + + provider.start(configuration.getModuleConfiguration(provider.getModuleName()).getProviderConfiguration(provider.name())); + } + } + + void notifyAfterCompleted() throws ProviderNotFoundException, ModuleNotFoundException, ServiceNotProvidedException { + for (ModuleProvider provider : startupSequence) { + provider.notifyAfterCompleted(); + } + } + + private void makeSequence() throws CycleDependencyException { + List allProviders = new ArrayList<>(); + loadedModules.forEach((moduleName, module) -> { + module.providers().forEach(provider -> { + allProviders.add(provider); + }); + }); + + while (true) { + int numOfToBeSequenced = allProviders.size(); + for (int i = 0; i < allProviders.size(); i++) { + ModuleProvider provider = allProviders.get(i); + String[] requiredModules = provider.requiredModules(); + if (CollectionUtils.isNotEmpty(requiredModules)) { + boolean isAllRequiredModuleStarted = true; + for (String module : requiredModules) { + // find module in all ready existed startupSequence + boolean exist = false; + for (ModuleProvider moduleProvider : startupSequence) { + if (moduleProvider.getModuleName().equals(module)) { + exist = true; + break; + } + } + if (!exist) { + isAllRequiredModuleStarted = false; + break; + } + } + + if (isAllRequiredModuleStarted) { + startupSequence.add(provider); + allProviders.remove(i); + } + } else { + startupSequence.add(provider); + allProviders.remove(i); + } + } + + if (numOfToBeSequenced == allProviders.size()) { + StringBuilder unsequencedProviders = new StringBuilder(); + allProviders.forEach(provider -> { + unsequencedProviders.append(provider.getModuleName()).append("[provider=").append(provider.getClass().getName()).append("]\n"); + }); + throw new CycleDependencyException("Exist cycle module dependencies in \n" + unsequencedProviders.substring(0, unsequencedProviders.length() - 1)); + } + if (allProviders.size() == 0) { + break; + } + } + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java deleted file mode 100644 index 5ded4903c..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.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.core.module; - -import java.util.Map; -import org.skywalking.apm.collector.core.CollectorException; - -/** - * @author peng-yongsheng - */ -public abstract class CommonModuleInstaller implements ModuleInstaller { - - private boolean isInstalled = false; - private Map moduleConfig; - private Map moduleDefineMap; - - @Override - public final void injectConfiguration(Map moduleConfig, Map moduleDefineMap) { - this.moduleConfig = moduleConfig; - this.moduleDefineMap = moduleDefineMap; - } - - final Map getModuleConfig() { - return moduleConfig; - } - - final Map getModuleDefineMap() { - return moduleDefineMap; - } - - public abstract void onAfterInstall() throws CollectorException; - - @Override public final void afterInstall() throws CollectorException { - if (!isInstalled) { - onAfterInstall(); - } - isInstalled = true; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigParser.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CycleDependencyException.java similarity index 78% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigParser.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CycleDependencyException.java index 9c7ef7b35..ee29641c3 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigParser.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CycleDependencyException.java @@ -18,12 +18,11 @@ package org.skywalking.apm.collector.core.module; -import java.util.Map; -import org.skywalking.apm.collector.core.config.ConfigParseException; - /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface ModuleConfigParser { - void parse(Map config) throws ConfigParseException; +public class CycleDependencyException extends RuntimeException { + public CycleDependencyException(String message) { + super(message); + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/DuplicateProviderException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/DuplicateProviderException.java new file mode 100644 index 000000000..a689dc415 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/DuplicateProviderException.java @@ -0,0 +1,25 @@ +/* + * 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.core.module; + +public class DuplicateProviderException extends Exception { + public DuplicateProviderException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java index c315e0cfc..a5a9811cb 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java @@ -18,11 +18,95 @@ package org.skywalking.apm.collector.core.module; -import java.util.Map; +import java.util.LinkedList; +import java.util.List; +import java.util.ServiceLoader; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** - * @author peng-yongsheng + * A module definition. + * + * @author wu-sheng, peng-yongsheng */ -public interface Module { - void install(Map configuration); +public abstract class Module { + + private final Logger logger = LoggerFactory.getLogger(Module.class); + + private LinkedList loadedProviders = new LinkedList<>(); + + /** + * @return the module name + */ + public abstract String name(); + + /** + * @return the {@link Service} provided by this module. + */ + public abstract Class[] services(); + + /** + * Run the prepare stage for the module, including finding all potential providers, and asking them to prepare. + * + * @param moduleManager of this module + * @param configuration of this module + * @throws ProviderNotFoundException when even don't find a single one providers. + */ + void prepare(ModuleManager moduleManager, + ApplicationConfiguration.ModuleConfiguration configuration) throws ProviderNotFoundException, ServiceNotProvidedException { + ServiceLoader moduleProviderLoader = ServiceLoader.load(ModuleProvider.class); + boolean providerExist = false; + for (ModuleProvider provider : moduleProviderLoader) { + if (!configuration.has(provider.name())) { + continue; + } + + providerExist = true; + if (provider.module().equals(getClass())) { + ModuleProvider newProvider; + try { + newProvider = provider.getClass().newInstance(); + } catch (InstantiationException e) { + throw new ProviderNotFoundException(e); + } catch (IllegalAccessException e) { + throw new ProviderNotFoundException(e); + } + newProvider.setManager(moduleManager); + newProvider.setModule(this); + loadedProviders.add(newProvider); + } + } + + if (!providerExist) { + throw new ProviderNotFoundException(this.name() + " module no provider exists."); + } + + for (ModuleProvider moduleProvider : loadedProviders) { + logger.info("Prepare the {} provider in {} module.", moduleProvider.name(), this.name()); + moduleProvider.prepare(configuration.getProviderConfiguration(moduleProvider.name())); + } + } + + /** + * @return providers of this module + */ + final List providers() { + return loadedProviders; + } + + final ModuleProvider provider() throws ProviderNotFoundException, DuplicateProviderException { + if (loadedProviders.size() > 1) { + throw new DuplicateProviderException(this.name() + " module exist " + loadedProviders.size() + " providers"); + } + + return loadedProviders.getFirst(); + } + + public final T getService(Class serviceType) throws ServiceNotProvidedRuntimeException { + try { + return provider().getService(serviceType); + } catch (ProviderNotFoundException | DuplicateProviderException | ServiceNotProvidedException e) { + throw new ServiceNotProvidedRuntimeException(e.getMessage()); + } + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigLoader.java deleted file mode 100644 index 4b5140e2a..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigLoader.java +++ /dev/null @@ -1,52 +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.core.module; - -import java.io.FileNotFoundException; -import java.io.Reader; -import java.util.Map; -import org.skywalking.apm.collector.core.config.ConfigLoader; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.util.ResourceUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; - -/** - * @author peng-yongsheng - */ -public class ModuleConfigLoader implements ConfigLoader> { - - private final Logger logger = LoggerFactory.getLogger(ModuleConfigLoader.class); - - @Override public Map load() throws DefineException { - Yaml yaml = new Yaml(); - try { - try { - Reader applicationReader = ResourceUtils.read("application.yml"); - return (Map)yaml.load(applicationReader); - } catch (FileNotFoundException e) { - logger.info("Could not found application.yml file, use default"); - return (Map)yaml.load(ResourceUtils.read("application-default.yml")); - } - } catch (FileNotFoundException e) { - throw new ModuleDefineException(e.getMessage(), e); - } - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java deleted file mode 100644 index 8544ad1ab..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java +++ /dev/null @@ -1,47 +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.core.module; - -import java.util.List; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.framework.Define; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.server.Server; - -/** - * @author peng-yongsheng - */ -public abstract class ModuleDefine implements Define { - - protected abstract String group(); - - public abstract boolean defaultModule(); - - protected abstract ModuleConfigParser configParser(); - - protected abstract Client createClient(); - - protected abstract Server server(); - - public abstract List handlerList(); - - protected abstract ModuleRegistration registration(); - - protected abstract void initializeOtherContext(); -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefineLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefineLoader.java deleted file mode 100644 index 3a65c6f64..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefineLoader.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.core.module; - -import java.util.LinkedHashMap; -import java.util.Map; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class ModuleDefineLoader implements Loader>> { - - private final Logger logger = LoggerFactory.getLogger(ModuleDefineLoader.class); - - @Override public Map> load() throws DefineException { - Map> moduleDefineMap = new LinkedHashMap<>(); - - ModuleDefinitionFile definitionFile = new ModuleDefinitionFile(); - logger.info("module definition file name: {}", definitionFile.fileName()); - DefinitionLoader definitionLoader = DefinitionLoader.load(ModuleDefine.class, definitionFile); - for (ModuleDefine moduleDefine : definitionLoader) { - logger.info("loaded module definition class: {}", moduleDefine.getClass().getName()); - - String groupName = moduleDefine.group(); - if (!moduleDefineMap.containsKey(groupName)) { - moduleDefineMap.put(groupName, new LinkedHashMap<>()); - } - moduleDefineMap.get(groupName).put(moduleDefine.name().toLowerCase(), moduleDefine); - } - return moduleDefineMap; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.java deleted file mode 100644 index 105103aa1..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefine.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.core.module; - -import org.skywalking.apm.collector.core.config.GroupConfigParser; -import org.skywalking.apm.collector.core.framework.Context; - -/** - * @author peng-yongsheng - */ -public interface ModuleGroupDefine { - String name(); - - Context groupContext(); - - ModuleInstaller moduleInstaller(); - - GroupConfigParser groupConfigParser(); -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.java deleted file mode 100644 index 38deb7659..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.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.core.module; - -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.Map; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class ModuleGroupDefineLoader implements Loader> { - - private final Logger logger = LoggerFactory.getLogger(ModuleGroupDefineLoader.class); - - @Override public Map load() throws DefineException { - Map moduleGroupDefineMap = new LinkedHashMap<>(); - - ModuleGroupDefineFile definitionFile = new ModuleGroupDefineFile(); - logger.info("module group definition file name: {}", definitionFile.fileName()); - DefinitionLoader definitionLoader = DefinitionLoader.load(ModuleGroupDefine.class, definitionFile); - Iterator defineIterator = definitionLoader.iterator(); - while (defineIterator.hasNext()) { - ModuleGroupDefine groupDefine = defineIterator.next(); - String groupName = groupDefine.name().toLowerCase(); - moduleGroupDefineMap.put(groupName, groupDefine); - } - return moduleGroupDefineMap; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java deleted file mode 100644 index a59c0a20d..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.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.core.module; - -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.core.CollectorException; -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.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; - -/** - * @author peng-yongsheng - */ -public interface ModuleInstaller { - - List dependenceModules(); - - void injectServerHolder(ServerHolder serverHolder); - - String groupName(); - - Context moduleContext(); - - void injectConfiguration(Map moduleConfig, Map moduleDefineMap); - - void preInstall() throws DefineException, ConfigException, ServerException; - - void install() throws ClientException, DefineException, ConfigException, ServerException; - - void afterInstall() throws CollectorException; -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java new file mode 100644 index 000000000..a91b81568 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleManager.java @@ -0,0 +1,83 @@ +/* + * 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.core.module; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; +import java.util.ServiceLoader; + +/** + * The ModuleManager takes charge of all {@link Module}s in collector. + * + * @author wu-sheng, peng-yongsheng + */ +public class ModuleManager { + private Map loadedModules = new HashMap<>(); + + /** + * Init the given modules + * + * @param applicationConfiguration + */ + public void init( + ApplicationConfiguration applicationConfiguration) throws ModuleNotFoundException, ProviderNotFoundException, ServiceNotProvidedException, CycleDependencyException { + String[] moduleNames = applicationConfiguration.moduleList(); + ServiceLoader moduleServiceLoader = ServiceLoader.load(Module.class); + LinkedList moduleList = new LinkedList(Arrays.asList(moduleNames)); + for (Module module : moduleServiceLoader) { + for (String moduleName : moduleNames) { + if (moduleName.equals(module.name())) { + Module newInstance; + try { + newInstance = module.getClass().newInstance(); + } catch (InstantiationException e) { + throw new ModuleNotFoundException(e); + } catch (IllegalAccessException e) { + throw new ModuleNotFoundException(e); + } + newInstance.prepare(this, applicationConfiguration.getModuleConfiguration(moduleName)); + loadedModules.put(moduleName, newInstance); + moduleList.remove(moduleName); + } + } + } + + if (moduleList.size() > 0) { + throw new ModuleNotFoundException(moduleList.toString() + " missing."); + } + + BootstrapFlow bootstrapFlow = new BootstrapFlow(loadedModules, applicationConfiguration); + + bootstrapFlow.start(this, applicationConfiguration); + bootstrapFlow.notifyAfterCompleted(); + } + + public boolean has(String moduleName) { + return loadedModules.get(moduleName) != null; + } + + public Module find(String moduleName) throws ModuleNotFoundRuntimeException { + Module module = loadedModules.get(moduleName); + if (module != null) + return module; + throw new ModuleNotFoundRuntimeException(moduleName + " missing."); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleNotFoundException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleNotFoundException.java new file mode 100644 index 000000000..6c6ad4a49 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleNotFoundException.java @@ -0,0 +1,30 @@ +/* + * 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.core.module; + +public class ModuleNotFoundException extends Exception { + + public ModuleNotFoundException(Throwable cause) { + super(cause); + } + + public ModuleNotFoundException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefinitionFile.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleNotFoundRuntimeException.java similarity index 76% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefinitionFile.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleNotFoundRuntimeException.java index d14cef1e4..324990fb3 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefinitionFile.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleNotFoundRuntimeException.java @@ -18,13 +18,16 @@ package org.skywalking.apm.collector.core.module; -import org.skywalking.apm.collector.core.framework.DefinitionFile; - /** * @author peng-yongsheng */ -public class ModuleDefinitionFile extends DefinitionFile { - @Override protected String fileName() { - return "module.define"; +public class ModuleNotFoundRuntimeException extends RuntimeException { + + public ModuleNotFoundRuntimeException(Throwable cause) { + super(cause); + } + + public ModuleNotFoundRuntimeException(String message) { + super(message); } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java new file mode 100644 index 000000000..b0d01e4ef --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java @@ -0,0 +1,140 @@ +/* + * 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.core.module; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * The ModuleProvider is an implementation of a {@link Module}. + * + * And each module can have one or more implementation, which depends on `application.yml` + * + * @author wu-sheng, peng-yongsheng + */ +public abstract class ModuleProvider { + private ModuleManager manager; + private Module module; + private Map, Service> services = new HashMap<>(); + + public ModuleProvider() { + } + + void setManager(ModuleManager manager) { + this.manager = manager; + } + + void setModule(Module module) { + this.module = module; + } + + protected final ModuleManager getManager() { + return manager; + } + + /** + * @return the name of this provider. + */ + public abstract String name(); + + /** + * @return the module name + */ + public abstract Class module(); + + /** + * In prepare stage, the module should initialize things which are irrelative other modules. + * + * @param config from `application.yml` + */ + public abstract void prepare(Properties config) throws ServiceNotProvidedException; + + /** + * In start stage, the module has been ready for interop. + * + * @param config from `application.yml` + */ + public abstract void start(Properties config) throws ServiceNotProvidedException; + + /** + * This callback executes after all modules start up successfully. + * + * @throws ServiceNotProvidedException + */ + public abstract void notifyAfterCompleted() throws ServiceNotProvidedException; + + /** + * @return module names which does this module require? + */ + public abstract String[] requiredModules(); + + /** + * Register a implementation for the service of this module provider. + * + * @param serviceType + * @param service + */ + protected final void registerServiceImplementation(Class serviceType, + Service service) throws ServiceNotProvidedException { + if (serviceType.isInstance(service)) { + this.services.put(serviceType, service); + } else { + throw new ServiceNotProvidedException(serviceType + " is not implemented by " + service); + } + } + + /** + * Make sure all required services have been implemented. + * + * @param requiredServices must be implemented by the module. + * @throws ServiceNotProvidedException when exist unimplemented service. + */ + void requiredCheck(Class[] requiredServices) throws ServiceNotProvidedException { + if (requiredServices == null) + return; + + for (Class service : requiredServices) { + if (!services.containsKey(service)) { + throw new ServiceNotProvidedException("Service:" + service.getName() + " not provided"); + } + } + + if (requiredServices.length != services.size()) { + throw new ServiceNotProvidedException("The " + this.name() + " provider in " + module.name() + " module provide more service implementations than Module requirements."); + } + } + + T getService(Class serviceType) throws ServiceNotProvidedException { + Service serviceImpl = services.get(serviceType); + if (serviceImpl != null) { + return (T)serviceImpl; + } + + throw new ServiceNotProvidedException("Service " + serviceType.getName() + " should not be provided, based on module define."); + } + + Module getModule() { + return module; + } + + String getModuleName() { + return module.name(); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java deleted file mode 100644 index 2f64d0a2b..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java +++ /dev/null @@ -1,88 +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.core.module; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.config.ConfigException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public abstract class MultipleModuleInstaller extends CommonModuleInstaller { - - private final Logger logger = LoggerFactory.getLogger(MultipleModuleInstaller.class); - - public MultipleModuleInstaller() { - moduleDefines = new LinkedList<>(); - } - - private List moduleDefines; - private ServerHolder serverHolder; - - @Override public final void injectServerHolder(ServerHolder serverHolder) { - this.serverHolder = serverHolder; - } - - @Override public final void preInstall() throws DefineException, ConfigException, ServerException { - logger.info("install module group: {}", groupName()); - Map moduleConfig = getModuleConfig(); - Map moduleDefineMap = getModuleDefineMap(); - - Iterator> moduleDefineIterator = moduleDefineMap.entrySet().iterator(); - while (moduleDefineIterator.hasNext()) { - Map.Entry moduleDefineEntry = moduleDefineIterator.next(); - logger.info("module {} initialize", moduleDefineEntry.getKey()); - moduleDefineEntry.getValue().configParser().parse(moduleConfig.get(moduleDefineEntry.getKey())); - moduleDefines.add(moduleDefineEntry.getValue()); - serverHolder.holdServer(moduleDefineEntry.getValue().server(), moduleDefineEntry.getValue().handlerList()); - } - } - - @Override public void install() throws DefineException, ConfigException, ServerException, ClientException { - CollectorContextHelper.INSTANCE.putContext(moduleContext()); - for (ModuleDefine moduleDefine : moduleDefines) { - moduleDefine.initializeOtherContext(); - - if (moduleDefine instanceof ClusterDataListenerDefine) { - ClusterDataListenerDefine listenerDefine = (ClusterDataListenerDefine)moduleDefine; - if (ObjectUtils.isNotEmpty(listenerDefine.listener()) && ObjectUtils.isNotEmpty(moduleDefine.registration())) { - logger.info("add group: {}, module: {}, listener into cluster data monitor", moduleDefine.group(), moduleDefine.name()); - CollectorContextHelper.INSTANCE.getClusterModuleContext().getDataMonitor().addListener(listenerDefine.listener(), moduleDefine.registration()); - } - } - } - } - - @Override public void onAfterInstall() throws CollectorException { - - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ProviderNotFoundException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ProviderNotFoundException.java new file mode 100644 index 000000000..aa037fbc6 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ProviderNotFoundException.java @@ -0,0 +1,29 @@ +/* + * 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.core.module; + +public class ProviderNotFoundException extends Exception { + public ProviderNotFoundException(String message) { + super(message); + } + + public ProviderNotFoundException(Throwable e) { + super(e); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Service.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Service.java new file mode 100644 index 000000000..18a1f4f08 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Service.java @@ -0,0 +1,29 @@ +/* + * 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.core.module; + +/** + * The Service implementation is a service provided by its own modules. + * + * And every {@link ModuleProvider} must provide all the given services of the {@link Module}. + * + * @author wu-sheng + */ +public interface Service { +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ServiceNotProvidedException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ServiceNotProvidedException.java new file mode 100644 index 000000000..1f97914d3 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ServiceNotProvidedException.java @@ -0,0 +1,25 @@ +/* + * 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.core.module; + +public class ServiceNotProvidedException extends Exception { + public ServiceNotProvidedException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ServiceNotProvidedRuntimeException.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ServiceNotProvidedRuntimeException.java new file mode 100644 index 000000000..a054f2b93 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ServiceNotProvidedRuntimeException.java @@ -0,0 +1,25 @@ +/* + * 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.core.module; + +public class ServiceNotProvidedRuntimeException extends RuntimeException { + public ServiceNotProvidedRuntimeException(String message) { + super(message); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java deleted file mode 100644 index b61776948..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java +++ /dev/null @@ -1,107 +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.core.module; - -import java.util.Iterator; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.cluster.ClusterModuleException; -import org.skywalking.apm.collector.core.config.ConfigException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.CollectionUtils; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public abstract class SingleModuleInstaller extends CommonModuleInstaller { - - private final Logger logger = LoggerFactory.getLogger(SingleModuleInstaller.class); - - private ModuleDefine moduleDefine; - private ServerHolder serverHolder; - - @Override public final void injectServerHolder(ServerHolder serverHolder) { - this.serverHolder = serverHolder; - } - - @Override public final void preInstall() throws DefineException, ConfigException, ServerException { - logger.info("install module group: {}", groupName()); - Map moduleConfig = getModuleConfig(); - Map moduleDefineMap = getModuleDefineMap(); - if (CollectionUtils.isNotEmpty(moduleConfig)) { - if (moduleConfig.size() > 1) { - throw new ClusterModuleException("single module, but configure multiple modules"); - } - - Map.Entry configEntry = moduleConfig.entrySet().iterator().next(); - if (moduleDefineMap.containsKey(configEntry.getKey())) { - moduleDefine = moduleDefineMap.get(configEntry.getKey()); - moduleDefine.configParser().parse(configEntry.getValue()); - } else { - throw new ClusterModuleException("module name incorrect, please check the module name in application.yml"); - } - } else { - logger.info("could not configure module, use the default"); - Iterator> moduleDefineIterator = moduleDefineMap.entrySet().iterator(); - - boolean hasDefaultModule = false; - while (moduleDefineIterator.hasNext()) { - Map.Entry moduleDefineEntry = moduleDefineIterator.next(); - if (moduleDefineEntry.getValue().defaultModule()) { - if (hasDefaultModule) { - throw new ClusterModuleException("single module, but configure multiple default module"); - } - this.moduleDefine = moduleDefineEntry.getValue(); - if (this.moduleDefine.configParser() != null) { - this.moduleDefine.configParser().parse(null); - } - hasDefaultModule = true; - } - } - } - serverHolder.holdServer(moduleDefine.server(), moduleDefine.handlerList()); - } - - @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { - if (!(moduleContext() instanceof ClusterModuleContext)) { - CollectorContextHelper.INSTANCE.putContext(moduleContext()); - } - moduleDefine.initializeOtherContext(); - - if (moduleDefine instanceof ClusterDataListenerDefine) { - ClusterDataListenerDefine listenerDefine = (ClusterDataListenerDefine)moduleDefine; - if (ObjectUtils.isNotEmpty(listenerDefine.listener()) && ObjectUtils.isNotEmpty(moduleDefine.registration())) { - CollectorContextHelper.INSTANCE.getClusterModuleContext().getDataMonitor().addListener(listenerDefine.listener(), moduleDefine.registration()); - logger.info("add group: {}, module: {}, listener into cluster data monitor", moduleDefine.group(), moduleDefine.name()); - } - } - } - - protected ModuleDefine getModuleDefine() { - return moduleDefine; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/EndOfBatchCommand.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/EndOfBatchCommand.java deleted file mode 100644 index 41565d36b..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/EndOfBatchCommand.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.core.queue; - -/** - * @author peng-yongsheng - */ -public class EndOfBatchCommand { -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/remote/Remote.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/remote/Remote.java deleted file mode 100644 index 9459d1840..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/remote/Remote.java +++ /dev/null @@ -1,26 +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.core.remote; - -/** - * @author peng-yongsheng - */ -public interface Remote { - void call(Object message); -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.java deleted file mode 100644 index 2484c6e68..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.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.core.server; - -import java.util.LinkedList; -import java.util.List; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.util.CollectionUtils; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class ServerHolder { - - private final Logger logger = LoggerFactory.getLogger(ServerHolder.class); - - private List servers; - - public ServerHolder() { - servers = new LinkedList<>(); - } - - public void holdServer(Server newServer, List handlers) throws ServerException { - if (ObjectUtils.isEmpty(newServer) || CollectionUtils.isEmpty(handlers)) { - return; - } - - boolean isNewServer = true; - for (Server server : servers) { - if (server.hostPort().equals(newServer.hostPort()) && server.serverClassify().equals(newServer.serverClassify())) { - isNewServer = false; - addHandler(handlers, server); - } - } - if (isNewServer) { - newServer.initialize(); - servers.add(newServer); - addHandler(handlers, newServer); - } - } - - private void addHandler(List handlers, Server server) { - if (CollectionUtils.isNotEmpty(handlers)) { - handlers.forEach(handler -> { - server.addHandler(handler); - logger.debug("add handler into server: {}, handler name: {}", server.hostPort(), handler.getClass().getName()); - }); - } - } - - public List getServers() { - return servers; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerModuleDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerModuleDefine.java deleted file mode 100644 index dca6ccdbe..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerModuleDefine.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.core.server; - -import org.skywalking.apm.collector.core.module.ModuleDefine; - -/** - * @author peng-yongsheng - */ -public abstract class ServerModuleDefine extends ModuleDefine { -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Data.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Data.java deleted file mode 100644 index 8311d4af9..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Data.java +++ /dev/null @@ -1,132 +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.core.stream; - -/** - * @author peng-yongsheng - */ -public class Data extends AbstractHashMessage { - private final int stringCapacity; - private final int longCapacity; - private final int doubleCapacity; - private final int integerCapacity; - private final int booleanCapacity; - private final int byteCapacity; - private String[] dataStrings; - private Long[] dataLongs; - private Double[] dataDoubles; - private Integer[] dataIntegers; - private Boolean[] dataBooleans; - private byte[][] dataBytes; - - public Data(String id, int stringCapacity, int longCapacity, int doubleCapacity, int integerCapacity, - int booleanCapacity, int byteCapacity) { - super(id); - this.dataStrings = new String[stringCapacity]; - this.dataStrings[0] = id; - this.dataLongs = new Long[longCapacity]; - this.dataDoubles = new Double[doubleCapacity]; - this.dataIntegers = new Integer[integerCapacity]; - this.dataBooleans = new Boolean[booleanCapacity]; - this.dataBytes = new byte[byteCapacity][]; - this.stringCapacity = stringCapacity; - this.longCapacity = longCapacity; - this.doubleCapacity = doubleCapacity; - this.integerCapacity = integerCapacity; - this.booleanCapacity = booleanCapacity; - this.byteCapacity = byteCapacity; - } - - public void setDataString(int position, String value) { - dataStrings[position] = value; - } - - public void setDataLong(int position, Long value) { - dataLongs[position] = value; - } - - public void setDataDouble(int position, Double value) { - dataDoubles[position] = value; - } - - public void setDataInteger(int position, Integer value) { - dataIntegers[position] = value; - } - - public void setDataBoolean(int position, Boolean value) { - dataBooleans[position] = value; - } - - public void setDataBytes(int position, byte[] dataBytes) { - this.dataBytes[position] = dataBytes; - } - - public String getDataString(int position) { - return dataStrings[position]; - } - - public Long getDataLong(int position) { - return dataLongs[position]; - } - - public Double getDataDouble(int position) { - return dataDoubles[position]; - } - - public Integer getDataInteger(int position) { - return dataIntegers[position]; - } - - public Boolean getDataBoolean(int position) { - return dataBooleans[position]; - } - - public byte[] getDataBytes(int position) { - return dataBytes[position]; - } - - public String id() { - return dataStrings[0]; - } - - @Override public String toString() { - StringBuilder dataStr = new StringBuilder(); - dataStr.append("string: ["); - for (int i = 0; i < dataStrings.length; i++) { - dataStr.append(dataStrings[i]).append(","); - } - dataStr.append("], longs: ["); - for (int i = 0; i < dataLongs.length; i++) { - dataStr.append(dataLongs[i]).append(","); - } - dataStr.append("], double: ["); - for (int i = 0; i < dataDoubles.length; i++) { - dataStr.append(dataDoubles[i]).append(","); - } - dataStr.append("], integer: ["); - for (int i = 0; i < dataIntegers.length; i++) { - dataStr.append(dataIntegers[i]).append(","); - } - dataStr.append("], boolean: ["); - for (int i = 0; i < dataBooleans.length; i++) { - dataStr.append(dataBooleans[i]).append(","); - } - return dataStr.toString(); - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java index 4514ff991..382776428 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/TimeBucketUtils.java @@ -21,7 +21,7 @@ package org.skywalking.apm.collector.core.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.TimeZone; -import org.skywalking.apm.collector.core.framework.UnexpectedException; +import org.skywalking.apm.collector.core.UnexpectedException; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/resources/application-default.yml b/apm-collector/apm-collector-core/src/main/resources/application-default.yml index e6d654a9d..a77838189 100644 --- a/apm-collector/apm-collector-core/src/main/resources/application-default.yml +++ b/apm-collector/apm-collector-core/src/main/resources/application-default.yml @@ -1,36 +1,32 @@ -#cluster: -# zookeeper: -# hostPort: localhost:2181 -# sessionTimeout: 100000 -agent_server: +cluster: + standalone: + url: jdbc:h2:~/memorydb + user_name: sa +cache: + guava: +queue: + disruptor: +remote: + gRPC: + host: localhost + port: 11800 +naming: jetty: host: localhost port: 10800 context_path: / -agent_stream: - grpc: - host: localhost - port: 11800 - jetty: - host: localhost - port: 12800 - context_path: / - config: - buffer_offset_max_file_size: 10M - buffer_segment_max_file_size: 500M ui: jetty: host: localhost port: 12800 context_path: / -collector_inside: - grpc: - host: localhost - port: 11800 -#storage: -# elasticsearch: -# cluster_name: CollectorDBCluster -# cluster_transport_sniffer: true -# cluster_nodes: localhost:9300 -# index_shards_number: 2 -# index_replicas_number: 0 \ No newline at end of file +jetty_manager: + jetty: +gRPC_manager: + gRPC: +stream: + worker: +storage: + h2: + url: jdbc:h2:~/memorydb + user_name: sa \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ResourceUtilsTestCase.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/data/AbstractHashMessageTest.java similarity index 66% rename from apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ResourceUtilsTestCase.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/data/AbstractHashMessageTest.java index 851050c11..41e645d76 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ResourceUtilsTestCase.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/data/AbstractHashMessageTest.java @@ -16,25 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.utils; - -import java.io.IOException; -import java.io.Reader; +package org.skywalking.apm.collector.core.data; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.collector.core.util.ResourceUtils; /** - * @author neeuq + * @author wu-sheng */ -public class ResourceUtilsTestCase { - - @Test - public void testRead() throws IOException { - Reader reader = ResourceUtils.read("application.yml"); - Assert.assertNotNull(reader); - reader.close(); +public class AbstractHashMessageTest { + public class NewMessage extends AbstractHashMessage { + public NewMessage() { + super("key"); + } } + @Test + public void testHash() { + NewMessage message = new NewMessage(); + Assert.assertEquals("key".hashCode(), message.getHashCode()); + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/PriorityDecision.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/DefinitionLoaderTest.java similarity index 51% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/PriorityDecision.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/DefinitionLoaderTest.java index bc9a263de..a3c44cc0a 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/PriorityDecision.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/DefinitionLoaderTest.java @@ -16,34 +16,25 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core.define; -import java.util.List; +import java.util.Iterator; +import org.junit.Assert; +import org.junit.Test; /** - * @author peng-yongsheng + * @author wu-sheng */ -public class PriorityDecision implements Decision { - - public Object decide(List source) { - return source.get(0); - } - - public static class Priority { - private final int value; - private final Object object; - - public Priority(int value, Object object) { - this.value = value; - this.object = object; - } - - public int getValue() { - return value; - } - - public Object getObject() { - return object; +public class DefinitionLoaderTest { + @Test + public void testLoad() { + TestDefineFile define = new TestDefineFile(); + DefinitionLoader definitionLoader = new DefinitionLoader<>(ServiceInterface.class, define); + Iterator iterator = definitionLoader.iterator(); + if (iterator.hasNext()) { + ServiceInterface service = iterator.next(); + Assert.assertTrue(service instanceof ServiceInterface); + Assert.assertTrue(service instanceof ServiceImpl); } } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Decision.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/ServiceImpl.java similarity index 85% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Decision.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/ServiceImpl.java index 319417776..8978b3cc7 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Decision.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/ServiceImpl.java @@ -16,10 +16,10 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core.define; /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface Decision { +public class ServiceImpl implements ServiceInterface { } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Listener.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/ServiceInterface.java similarity index 86% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Listener.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/ServiceInterface.java index 20e8e8aa4..d47d4dbe0 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Listener.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/ServiceInterface.java @@ -16,10 +16,10 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.core.define; /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface Listener { +public interface ServiceInterface { } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/TestDefineFile.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/TestDefineFile.java new file mode 100644 index 000000000..5206e8052 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/define/TestDefineFile.java @@ -0,0 +1,28 @@ +/* + * 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.core.define; + +/** + * @author wu-sheng + */ +public class TestDefineFile extends DefinitionFile { + @Override protected String fileName() { + return "test_define.define"; + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java new file mode 100644 index 000000000..c00b0c3cd --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/GraphManagerTest.java @@ -0,0 +1,151 @@ +/* + * 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.core.graph; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * @author wusheng + */ +public class GraphManagerTest { + private static PrintStream OUT_REF; + private ByteArrayOutputStream outputStream; + private static String LINE_SEPARATE = System.lineSeparator(); + + @Before + public void initAndHoldOut() { + OUT_REF = System.out; + outputStream = new ByteArrayOutputStream(); + PrintStream testStream = new PrintStream(outputStream); + System.setOut(testStream); + } + + @After + public void reset() { + System.setOut(OUT_REF); + } + + @Test + public void testGraph() { + Graph testGraph = GraphManager.INSTANCE.createIfAbsent(1, String.class); + Node node = testGraph.addNode(new Node1Processor()); + Node node1 = node.addNext(new Node2Processor()); + testGraph.start("Input String"); + + String output = outputStream.toString(); + String expected = "Node1 process: s=Input String" + LINE_SEPARATE + + "Node2 process: s=Input String" + LINE_SEPARATE; + + Assert.assertEquals(expected, output); + } + + @Test + public void testGraphWithChainStyle() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(2, String.class); + graph.addNode(new Node1Processor()).addNext(new Node2Processor()).addNext(new Node4Processor()); + + graph.start("Input String"); + + String output = outputStream.toString(); + String expected = "Node1 process: s=Input String" + LINE_SEPARATE + + "Node2 process: s=Input String" + LINE_SEPARATE + + "Node4 process: int=123" + LINE_SEPARATE; + + Assert.assertEquals(expected, output); + } + + @Test(expected = PotentialCyclicGraphException.class) + public void testPotentialAcyclicGraph() { + Graph testGraph = GraphManager.INSTANCE.createIfAbsent(3, String.class); + Node node = testGraph.addNode(new Node1Processor()); + node.addNext(new Node1Processor()); + } + + @Test + public void testContinueStream() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(4, String.class); + graph.addNode(new Node1Processor()).addNext(new Node2Processor()).addNext(new Node4Processor()); + + Next next = GraphManager.INSTANCE.findGraph(4).toFinder().findNext(2); + + next.execute(123); + String output = outputStream.toString(); + String expected = + "Node4 process: int=123" + LINE_SEPARATE; + + Assert.assertEquals(expected, output); + } + + @Test(expected = NodeNotFoundException.class) + public void handlerNotFound() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(5, String.class); + graph.addNode(new Node1Processor()).addNext(new Node2Processor()).addNext(new Node4Processor()); + + Next next = GraphManager.INSTANCE.findGraph(5).toFinder().findNext(3); + } + + @Test + public void testFindNode() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(6, String.class); + graph.addNode(new Node1Processor()).addNext(new Node2Processor()); + + Node foundNode = GraphManager.INSTANCE.findGraph(6).toFinder().findNode(2, Integer.class); + foundNode.addNext(new Node4Processor()); + } + + @Test + public void testDeadEndWay() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(7, String.class); + graph.addNode(new Node1Processor()).addNext(new WayToNode(new Node2Processor()) { + @Override protected void in(String input) { + //don't call `out(intput)`; + } + }); + + graph.start("Input String"); + String output = outputStream.toString(); + String expected = "Node1 process: s=Input String" + LINE_SEPARATE; + + Assert.assertEquals(expected, output); + } + + @Test + public void testEntryWay() { + Graph graph = GraphManager.INSTANCE.createIfAbsent(8, String.class); + graph.addNode(new WayToNode(new Node1Processor()) { + @Override protected void in(String input) { + //don't call `out(intput)`; + } + }).addNext(new Node2Processor()); + + graph.start("Input String"); + + Assert.assertEquals("", outputStream.toString()); + } + + @After + public void tearDown() { + GraphManager.INSTANCE.reset(); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node1Processor.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node1Processor.java new file mode 100644 index 000000000..2c7ee68d1 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node1Processor.java @@ -0,0 +1,33 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class Node1Processor extends OutputProcessor implements NodeProcessor { + @Override public int id() { + return 1; + } + + @Override public void process(String s, Next next) { + outstream().println("Node1 process: s=" + s); + next.execute(s); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node2Processor.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node2Processor.java new file mode 100644 index 000000000..c67bbdd8a --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node2Processor.java @@ -0,0 +1,33 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class Node2Processor extends OutputProcessor implements NodeProcessor { + @Override public int id() { + return 2; + } + + @Override public void process(String s, Next next) { + outstream().println("Node2 process: s=" + s); + next.execute(123); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node3Processor.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node3Processor.java new file mode 100644 index 000000000..14583c739 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node3Processor.java @@ -0,0 +1,34 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class Node3Processor extends OutputProcessor implements NodeProcessor { + @Override public int id() { + return 3; + } + + @Override + public void process(Long aLong, Next next) { + outstream().println("Node3 process: long=" + aLong); + next.execute(aLong); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node4Processor.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node4Processor.java new file mode 100644 index 000000000..49d52bd91 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/Node4Processor.java @@ -0,0 +1,34 @@ +/* + * 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.core.graph; + +/** + * @author wusheng + */ +public class Node4Processor extends OutputProcessor implements NodeProcessor { + @Override public int id() { + return 4; + } + + @Override + public void process(Integer in, Next next) { + outstream().println("Node4 process: int=" + in); + next.execute(new Long(in.intValue())); + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LookUp.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/OutputProcessor.java similarity index 78% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LookUp.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/OutputProcessor.java index 8161756b8..b3524e9ee 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LookUp.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/graph/OutputProcessor.java @@ -16,12 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.core.graph; + +import java.io.PrintStream; /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface LookUp { - - WorkerRefs lookup(Role role) throws WorkerNotFoundException; +public class OutputProcessor { + protected PrintStream outstream() { + return System.out; + } } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ApplicationConfigurationTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ApplicationConfigurationTest.java new file mode 100644 index 000000000..0899c9165 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ApplicationConfigurationTest.java @@ -0,0 +1,41 @@ +/* + * 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.core.module; + +import java.util.Properties; +import org.junit.Assert; +import org.junit.Test; + +public class ApplicationConfigurationTest { + @Test + public void testBuildConfig() { + ApplicationConfiguration configuration = new ApplicationConfiguration(); + Properties p1 = new Properties(); + p1.setProperty("p1", "value1"); + p1.setProperty("p2", "value2"); + Properties p2 = new Properties(); + p2.setProperty("prop1", "value1-prop"); + p2.setProperty("prop2", "value2-prop"); + configuration.addModule("MO-1").addProviderConfiguration("MO-1-P1", p1).addProviderConfiguration("MO-1-P2", p2); + + Assert.assertArrayEquals(new String[] {"MO-1"}, configuration.moduleList()); + Assert.assertEquals("value2-prop", configuration.getModuleConfiguration("MO-1").getProviderConfiguration("MO-1-P2").getProperty("prop2")); + Assert.assertEquals(p1, configuration.getModuleConfiguration("MO-1").getProviderConfiguration("MO-1-P1")); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleException.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/BaseModuleA.java similarity index 65% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleException.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/BaseModuleA.java index da7a56cd7..c5a0a4c10 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleException.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/BaseModuleA.java @@ -18,18 +18,23 @@ package org.skywalking.apm.collector.core.module; -import org.skywalking.apm.collector.core.framework.DefineException; - /** - * @author peng-yongsheng + * @author wu-sheng */ -public abstract class ModuleException extends DefineException { - - public ModuleException(String message) { - super(message); +public class BaseModuleA extends Module { + @Override public String name() { + return "BaseA"; } - public ModuleException(String message, Throwable cause) { - super(message, cause); + @Override public Class[] services() { + return new Class[] {ServiceABusiness1.class, ServiceABusiness2.class}; + } + + public interface ServiceABusiness1 extends Service { + void print(); + } + + public interface ServiceABusiness2 extends Service { + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleContext.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/BaseModuleB.java similarity index 65% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleContext.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/BaseModuleB.java index 97121822e..6313b0bd1 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleContext.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/BaseModuleB.java @@ -18,19 +18,23 @@ package org.skywalking.apm.collector.core.module; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; - /** - * @author peng-yongsheng + * @author wu-sheng */ -public class ModuleContext { - private ClusterModuleContext clusterContext; - - public ClusterModuleContext getClusterContext() { - return clusterContext; +public class BaseModuleB extends Module { + @Override public String name() { + return "BaseB"; } - public void setClusterContext(ClusterModuleContext clusterContext) { - this.clusterContext = clusterContext; + @Override public Class[] services() { + return new Class[] {BaseModuleB.ServiceBBusiness1.class, BaseModuleB.ServiceBBusiness2.class}; + } + + public interface ServiceBBusiness1 extends Service { + + } + + public interface ServiceBBusiness2 extends Service { + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Transform.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleABusiness1Impl.java similarity index 79% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Transform.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleABusiness1Impl.java index 672e60e67..407bc31c6 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/stream/Transform.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleABusiness1Impl.java @@ -16,13 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.stream; +package org.skywalking.apm.collector.core.module; /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface Transform { - Data toData(); +public class ModuleABusiness1Impl implements BaseModuleA.ServiceABusiness1 { - T toSelf(Data data); + @Override public void print() { + } } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/IMemoryMetricDAO.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleABusiness2Impl.java similarity index 82% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/IMemoryMetricDAO.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleABusiness2Impl.java index 5f422ceb0..36565861b 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/dao/IMemoryMetricDAO.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleABusiness2Impl.java @@ -16,10 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memory.dao; +package org.skywalking.apm.collector.core.module; /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface IMemoryMetricDAO { +public class ModuleABusiness2Impl implements BaseModuleA.ServiceABusiness2 { + } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java new file mode 100644 index 000000000..7b69ca52a --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleAProvider.java @@ -0,0 +1,50 @@ +/* + * 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.core.module; + +import java.util.Properties; + +/** + * @author wu-sheng + */ +public class ModuleAProvider extends ModuleProvider { + @Override public String name() { + return "P-A"; + } + + @Override public Class module() { + return BaseModuleA.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(BaseModuleA.ServiceABusiness1.class, new ModuleABusiness1Impl()); + this.registerServiceImplementation(BaseModuleA.ServiceABusiness2.class, new ModuleABusiness2Impl()); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/IMemoryPoolMetricDAO.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBBusiness1Impl.java similarity index 82% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/IMemoryPoolMetricDAO.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBBusiness1Impl.java index 87c2d07f6..f5e017da4 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/IMemoryPoolMetricDAO.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBBusiness1Impl.java @@ -16,10 +16,10 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memorypool.dao; +package org.skywalking.apm.collector.core.module; /** - * @author peng-yongsheng + * @author wu-sheng */ -public interface IMemoryPoolMetricDAO { +public class ModuleBBusiness1Impl implements BaseModuleB.ServiceBBusiness1 { } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBBusiness2Impl.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBBusiness2Impl.java new file mode 100644 index 000000000..a0af96a89 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBBusiness2Impl.java @@ -0,0 +1,25 @@ +/* + * 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.core.module; + +/** + * @author wu-sheng + */ +public class ModuleBBusiness2Impl implements BaseModuleB.ServiceBBusiness2 { +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java new file mode 100644 index 000000000..132959599 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleBProvider.java @@ -0,0 +1,50 @@ +/* + * 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.core.module; + +import java.util.Properties; + +/** + * @author wu-sheng + */ +public class ModuleBProvider extends ModuleProvider { + @Override public String name() { + return "P-B"; + } + + @Override public Class module() { + return BaseModuleB.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(BaseModuleB.ServiceBBusiness1.class, new ModuleBBusiness1Impl()); + this.registerServiceImplementation(BaseModuleB.ServiceBBusiness2.class, new ModuleBBusiness2Impl()); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java new file mode 100644 index 000000000..8172d59c1 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleManagerTest.java @@ -0,0 +1,41 @@ +/* + * 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.core.module; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author wu-sheng + */ +public class ModuleManagerTest { + @Test + public void testInit() throws ServiceNotProvidedException, ModuleNotFoundException, ProviderNotFoundException, DuplicateProviderException { + ApplicationConfiguration configuration = new ApplicationConfiguration(); + configuration.addModule("Test").addProviderConfiguration("TestModule-Provider", null); + configuration.addModule("BaseA").addProviderConfiguration("P-A", null); + configuration.addModule("BaseB").addProviderConfiguration("P-B", null); + + ModuleManager manager = new ModuleManager(); + manager.init(configuration); + + BaseModuleA.ServiceABusiness1 serviceABusiness1 = manager.find("BaseA").provider().getService(BaseModuleA.ServiceABusiness1.class); + Assert.assertTrue(serviceABusiness1 != null); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineFile.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/TestModule.java similarity index 77% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineFile.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/TestModule.java index db871d9b2..de78800c1 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineFile.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/TestModule.java @@ -18,13 +18,15 @@ package org.skywalking.apm.collector.core.module; -import org.skywalking.apm.collector.core.framework.DefinitionFile; - /** - * @author peng-yongsheng + * @author wu-sheng */ -public class ModuleGroupDefineFile extends DefinitionFile { - @Override protected String fileName() { - return "group.define"; +public class TestModule extends Module { + @Override public String name() { + return "Test"; + } + + @Override public Class[] services() { + return new Class[0]; } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefineException.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/TestModuleProvider.java similarity index 56% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefineException.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/TestModuleProvider.java index 202f31ccb..3be49f44e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefineException.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/TestModuleProvider.java @@ -18,17 +18,33 @@ package org.skywalking.apm.collector.core.module; -import org.skywalking.apm.collector.core.framework.DefineException; +import java.util.Properties; /** - * @author peng-yongsheng + * @author wu-sheng */ -public class ModuleDefineException extends DefineException { - public ModuleDefineException(String message) { - super(message); +public class TestModuleProvider extends ModuleProvider { + @Override public String name() { + return "TestModule-Provider"; } - public ModuleDefineException(String message, Throwable cause) { - super(message, cause); + @Override public Class module() { + return TestModule.class; + } + + @Override public void prepare(Properties config) { + + } + + @Override public void start(Properties config) { + + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[] {"BaseA", "BaseB"}; } } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/BytesUtilsTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/BytesUtilsTest.java new file mode 100644 index 000000000..9e0e11476 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/BytesUtilsTest.java @@ -0,0 +1,32 @@ +/* + * 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.core.util; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author wu-sheng + */ +public class BytesUtilsTest { + @Test + public void testLong2Bytes() { + Assert.assertEquals(655390L, BytesUtils.bytes2Long(BytesUtils.long2Bytes(655390L))); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/CollectionUtilsTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/CollectionUtilsTest.java new file mode 100644 index 000000000..9b10c4eee --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/CollectionUtilsTest.java @@ -0,0 +1,51 @@ +/* + * 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.core.util; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author wu-sheng + */ +public class CollectionUtilsTest { + @Test + public void testList() { + List list = new LinkedList<>(); + Assert.assertTrue(CollectionUtils.isEmpty(list)); + Assert.assertFalse(CollectionUtils.isNotEmpty(list)); + } + + @Test + public void testMap() { + Map map = new HashMap<>(); + Assert.assertTrue(CollectionUtils.isEmpty(map)); + Assert.assertFalse(CollectionUtils.isNotEmpty(map)); + } + + @Test + public void testArray() { + String[] array = new String[] {"abc"}; + Assert.assertTrue(CollectionUtils.isNotEmpty(array)); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ColumnNameUtilsTestCase.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ColumnNameUtilsTest.java similarity index 72% rename from apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ColumnNameUtilsTestCase.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ColumnNameUtilsTest.java index 4e68bbc87..263724d0e 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/ColumnNameUtilsTestCase.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ColumnNameUtilsTest.java @@ -16,20 +16,18 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.utils; +package org.skywalking.apm.collector.core.util; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.collector.core.util.ColumnNameUtils; /** - * @author peng-yongsheng + * @author wu-sheng */ -public class ColumnNameUtilsTestCase { - +public class ColumnNameUtilsTest { @Test public void testRename() { - String columnName = ColumnNameUtils.INSTANCE.rename("aaa_bbb_ccc"); - Assert.assertEquals("aaaBbbCcc", columnName); + Assert.assertEquals("newAttributeNameFromColumnName", + ColumnNameUtils.INSTANCE.rename("new_attribute_name_from_column_name")); } } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ObjectUtilsTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ObjectUtilsTest.java new file mode 100644 index 000000000..374e586db --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ObjectUtilsTest.java @@ -0,0 +1,33 @@ +/* + * 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.core.util; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author wu-sheng + */ +public class ObjectUtilsTest { + @Test + public void testNullObject() { + Object o = new Object(); + Assert.assertTrue(ObjectUtils.isNotEmpty(o)); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleConfigLoaderTestCase.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ResourceUtilsTest.java similarity index 58% rename from apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleConfigLoaderTestCase.java rename to apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ResourceUtilsTest.java index 546e39dcd..643542da8 100644 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/module/ModuleConfigLoaderTestCase.java +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/ResourceUtilsTest.java @@ -16,25 +16,27 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.module; - -import java.util.Map; +package org.skywalking.apm.collector.core.util; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.Reader; import org.junit.Assert; import org.junit.Test; -import org.skywalking.apm.collector.core.framework.DefineException; /** - * @author neeuq + * @author wu-sheng */ -public class ModuleConfigLoaderTestCase { - - @SuppressWarnings({ "rawtypes" }) +public class ResourceUtilsTest { @Test - public void testLoad() throws DefineException { - ModuleConfigLoader configLoader = new ModuleConfigLoader(); - Map configuration = configLoader.load(); - Assert.assertNotNull(configuration.get("cluster")); - Assert.assertNotNull(configuration.get("cluster").get("zookeeper")); + public void testGetResource() throws IOException { + Reader read = ResourceUtils.read("TestResourceFile.txt"); + try { + BufferedReader reader = new BufferedReader(read); + String line1 = reader.readLine(); + Assert.assertEquals("skywalking", line1); + } finally { + read.close(); + } } } diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/StringUtilsTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/StringUtilsTest.java new file mode 100644 index 000000000..31130a81b --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/StringUtilsTest.java @@ -0,0 +1,35 @@ +/* + * 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.core.util; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @author wu-sheng + */ +public class StringUtilsTest { + @Test + public void testEmptyString() { + Assert.assertTrue(StringUtils.isEmpty(null)); + Assert.assertTrue(StringUtils.isEmpty("")); + + Assert.assertTrue(StringUtils.isNotEmpty("abc")); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/TimeBucketUtilsTest.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/TimeBucketUtilsTest.java new file mode 100644 index 000000000..ffaf530ce --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/util/TimeBucketUtilsTest.java @@ -0,0 +1,56 @@ +/* + * 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.core.util; + +import java.util.TimeZone; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * @author wu-sheng + */ +public class TimeBucketUtilsTest { + @Before + public void setup() { + TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); + } + + @After + public void teardown() { + + } + + @Test + public void testGetInfoFromATimestamp() { + long timeMillis = 1509521745220L; + Assert.assertArrayEquals(new long[] { + 20171101153545L, + 20171101153544L, + 20171101153543L, + 20171101153542L, + 20171101153541L + }, TimeBucketUtils.INSTANCE.getFiveSecondTimeBuckets(TimeBucketUtils.INSTANCE.getSecondTimeBucket(timeMillis))); + Assert.assertEquals(20171101153545L, TimeBucketUtils.INSTANCE.getSecondTimeBucket(timeMillis)); + Assert.assertEquals(201711011535L, TimeBucketUtils.INSTANCE.getMinuteTimeBucket(timeMillis)); + Assert.assertEquals(201711011500L, TimeBucketUtils.INSTANCE.getHourTimeBucket(timeMillis)); + Assert.assertEquals(201711010000L, TimeBucketUtils.INSTANCE.getDayTimeBucket(timeMillis)); + } +} diff --git a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java b/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java deleted file mode 100644 index 4f5cdfc33..000000000 --- a/apm-collector/apm-collector-core/src/test/java/org/skywalking/apm/collector/core/utils/TimeBucketUtilsTestCase.java +++ /dev/null @@ -1,46 +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.core.utils; - -import org.junit.Assert; -import org.junit.Test; -import org.skywalking.apm.collector.core.util.TimeBucketUtils; - -/** - * @author peng-yongsheng - */ -public class TimeBucketUtilsTestCase { - - @Test - public void testGetFiveSecondTimeBucket() { - long[] timeBuckets = TimeBucketUtils.INSTANCE.getFiveSecondTimeBuckets(20170804224810L); - Assert.assertEquals(20170804224810L, timeBuckets[0]); - Assert.assertEquals(20170804224809L, timeBuckets[1]); - Assert.assertEquals(20170804224808L, timeBuckets[2]); - Assert.assertEquals(20170804224807L, timeBuckets[3]); - Assert.assertEquals(20170804224806L, timeBuckets[4]); - } - - @Test - public void testChangeTimeBucket2TimeStamp() { - long timeStamp = TimeBucketUtils.INSTANCE.changeTimeBucket2TimeStamp(TimeBucketUtils.TimeBucketType.MINUTE.name(), 201708120810L); - long minute = TimeBucketUtils.INSTANCE.getMinuteTimeBucket(timeStamp); - Assert.assertEquals(201708120810L, minute); - } -} diff --git a/apm-collector/apm-collector-core/src/test/resources/META-INF/defines/module.define b/apm-collector/apm-collector-core/src/test/resources/META-INF/defines/module.define deleted file mode 100644 index 5d6f8c358..000000000 --- a/apm-collector/apm-collector-core/src/test/resources/META-INF/defines/module.define +++ /dev/null @@ -1 +0,0 @@ -cluster=org.skywalking.apm.collector.core.module.ClusterModuleForTest \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/test/resources/META-INF/defines/test_define.define b/apm-collector/apm-collector-core/src/test/resources/META-INF/defines/test_define.define new file mode 100644 index 000000000..d44e660dd --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/resources/META-INF/defines/test_define.define @@ -0,0 +1 @@ +org.skywalking.apm.collector.core.define.ServiceImpl \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/test/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-core/src/test/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..f629bf99b --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module @@ -0,0 +1,21 @@ +# +# 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.core.module.TestModule +org.skywalking.apm.collector.core.module.BaseModuleA +org.skywalking.apm.collector.core.module.BaseModuleB \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/test/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-core/src/test/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..9879486f0 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider @@ -0,0 +1,21 @@ +# +# 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.core.module.TestModuleProvider +org.skywalking.apm.collector.core.module.ModuleAProvider +org.skywalking.apm.collector.core.module.ModuleBProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/test/resources/TestResourceFile.txt b/apm-collector/apm-collector-core/src/test/resources/TestResourceFile.txt new file mode 100644 index 000000000..d967dd633 --- /dev/null +++ b/apm-collector/apm-collector-core/src/test/resources/TestResourceFile.txt @@ -0,0 +1 @@ +skywalking \ No newline at end of file diff --git a/apm-collector/apm-collector-core/src/test/resources/application.yml b/apm-collector/apm-collector-core/src/test/resources/application.yml deleted file mode 100644 index ec549438f..000000000 --- a/apm-collector/apm-collector-core/src/test/resources/application.yml +++ /dev/null @@ -1,8 +0,0 @@ -cluster: - zookeeper: - host: localhost-zk - port: 1000 - redis: - host: localhost-rd - port: 2000 - diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/pom.xml b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/pom.xml new file mode 100644 index 000000000..e4343a485 --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/pom.xml @@ -0,0 +1,33 @@ + + + + + + apm-collector-grpc-manager + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-grpc-manager-define + jar + + diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerModule.java similarity index 63% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java rename to apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerModule.java index 61b8c2a36..306eb1bed 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerModule.java @@ -16,21 +16,23 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream; +package org.skywalking.apm.collector.grpc.manager; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.module.ModuleDefine; +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerService; /** * @author peng-yongsheng */ -public abstract class StreamModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { +public class GRPCManagerModule extends Module { - @Override public final boolean defaultModule() { - return true; + public static final String NAME = "gRPC_manager"; + + @Override public String name() { + return NAME; } - @Override protected final void initializeOtherContext() { - + @Override public Class[] services() { + return new Class[] {GRPCManagerService.class}; } } diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerService.java b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerService.java new file mode 100644 index 000000000..13180e305 --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerService.java @@ -0,0 +1,29 @@ +/* + * 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.grpc.manager.service; + +import org.skywalking.apm.collector.core.module.Service; +import org.skywalking.apm.collector.server.Server; + +/** + * @author peng-yongsheng + */ +public interface GRPCManagerService extends Service { + Server createIfAbsent(String host, int port); +} diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..ae4846b83 --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-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.grpc.manager.GRPCManagerModule \ No newline at end of file diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/pom.xml b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/pom.xml new file mode 100644 index 000000000..5d1badf0a --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-grpc-manager + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-grpc-manager-provider + jar + + + + org.skywalking + collector-grpc-manager-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java new file mode 100644 index 000000000..7dd17b3df --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java @@ -0,0 +1,72 @@ +/* + * 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.grpc.manager; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +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.service.GRPCManagerService; +import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerServiceImpl; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.grpc.GRPCServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class GRPCManagerProvider extends ModuleProvider { + + private final Logger logger = LoggerFactory.getLogger(GRPCManagerProvider.class); + + private Map servers = new HashMap<>(); + + @Override public String name() { + return "gRPC"; + } + + @Override public Class module() { + return GRPCManagerModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(GRPCManagerService.class, new GRPCManagerServiceImpl(servers)); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + servers.values().forEach(server -> { + try { + server.start(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } + }); + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java new file mode 100644 index 000000000..b3e04df16 --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java @@ -0,0 +1,56 @@ +/* + * 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.grpc.manager.service; + +import java.util.Map; +import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.grpc.GRPCServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class GRPCManagerServiceImpl implements GRPCManagerService { + + private final Logger logger = LoggerFactory.getLogger(GRPCManagerServiceImpl.class); + + private final Map servers; + + public GRPCManagerServiceImpl(Map servers) { + this.servers = servers; + } + + @Override public Server createIfAbsent(String host, int port) { + String id = host + String.valueOf(port); + if (servers.containsKey(id)) { + return servers.get(id); + } else { + GRPCServer server = new GRPCServer(host, port); + try { + server.initialize(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } + servers.put(id, server); + return server; + } + } +} diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..1bd78e98d --- /dev/null +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-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.grpc.manager.GRPCManagerProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-server/pom.xml b/apm-collector/apm-collector-grpc-manager/pom.xml similarity index 72% rename from apm-collector/apm-collector-server/pom.xml rename to apm-collector/apm-collector-grpc-manager/pom.xml index a7364d577..8464ba827 100644 --- a/apm-collector/apm-collector-server/pom.xml +++ b/apm-collector/apm-collector-grpc-manager/pom.xml @@ -27,33 +27,23 @@ 4.0.0 - apm-collector-server - jar - - - 9.4.2.v20170220 - + apm-collector-grpc-manager + pom + + collector-grpc-manager-define + collector-grpc-manager-provider + - - org.skywalking - apm-network - ${project.version} - org.skywalking apm-collector-core ${project.version} - org.eclipse.jetty - jetty-server - ${jetty.version} - - - org.eclipse.jetty - jetty-servlet - ${jetty.version} + org.skywalking + server-component + ${project.version} diff --git a/apm-collector/apm-collector-instrument/pom.xml b/apm-collector/apm-collector-instrument/pom.xml new file mode 100644 index 000000000..39817d613 --- /dev/null +++ b/apm-collector/apm-collector-instrument/pom.xml @@ -0,0 +1,44 @@ + + + + + + apm-collector + org.skywalking + 3.2.4-2017 + + 4.0.0 + + apm-collector-instrument + + + + org.skywalking + apm-collector-core + ${project.version} + + + net.bytebuddy + byte-buddy + 1.7.8 + + + diff --git a/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/MetricCollector.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/MetricCollector.java new file mode 100644 index 000000000..cd5d92e4c --- /dev/null +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/MetricCollector.java @@ -0,0 +1,171 @@ +/* + * 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.instrument; + +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLong; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The MetricCollector collects the service metrics by Module/Provider/Service structure. + */ +public enum MetricCollector implements Runnable { + INSTANCE; + + private final Logger logger = LoggerFactory.getLogger(MetricCollector.class); + private HashMap modules = new HashMap<>(); + + MetricCollector() { + ScheduledExecutorService service = Executors + .newSingleThreadScheduledExecutor(); + service.scheduleAtFixedRate(this, 10, 60, TimeUnit.SECONDS); + } + + @Override + public void run() { + if (!logger.isDebugEnabled()) { + return; + } + StringBuilder report = new StringBuilder(); + report.append("\n"); + report.append("##################################################################################################################\n"); + report.append("# Collector Service Report #\n"); + report.append("##################################################################################################################\n"); + modules.forEach((moduleName, moduleMetric) -> { + report.append(moduleName).append(":\n"); + moduleMetric.providers.forEach((providerName, providerMetric) -> { + report.append("\t").append(providerName).append(":\n"); + providerMetric.services.forEach((serviceName, serviceMetric) -> { + serviceMetric.methodMetrics.forEach((method, metric) -> { + report.append("\t\t").append(method).append(":\n"); + report.append("\t\t\t").append(metric).append("\n"); + serviceMetric.methodMetrics.put(method, new ServiceMethodMetric()); + }); + }); + }); + }); + + logger.debug(report.toString()); + + } + + ServiceMetric registerService(String module, String provider, String service) { + return initIfAbsent(module).initIfAbsent(provider).initIfAbsent(service); + } + + private ModuleMetric initIfAbsent(String moduleName) { + if (!modules.containsKey(moduleName)) { + ModuleMetric metric = new ModuleMetric(moduleName); + modules.put(moduleName, metric); + return metric; + } + return modules.get(moduleName); + } + + private class ModuleMetric { + private String moduleName; + private HashMap providers = new HashMap<>(); + + public ModuleMetric(String moduleName) { + this.moduleName = moduleName; + } + + private ProviderMetric initIfAbsent(String providerName) { + if (!providers.containsKey(providerName)) { + ProviderMetric metric = new ProviderMetric(providerName); + providers.put(providerName, metric); + return metric; + } + return providers.get(providerName); + } + } + + private class ProviderMetric { + private String providerName; + private HashMap services = new HashMap<>(); + + public ProviderMetric(String providerName) { + this.providerName = providerName; + } + + private ServiceMetric initIfAbsent(String serviceName) { + if (!services.containsKey(serviceName)) { + ServiceMetric metric = new ServiceMetric(serviceName); + services.put(serviceName, metric); + return metric; + } + return services.get(serviceName); + } + } + + class ServiceMetric { + private String serviceName; + private ConcurrentHashMap methodMetrics = new ConcurrentHashMap<>(); + + public ServiceMetric(String serviceName) { + this.serviceName = serviceName; + } + + void trace(Method method, long nano, boolean occurException) { + if (logger.isDebugEnabled()) { + ServiceMethodMetric metric = methodMetrics.get(method); + if (metric == null) { + ServiceMethodMetric methodMetric = new ServiceMethodMetric(); + methodMetrics.putIfAbsent(method, methodMetric); + metric = methodMetrics.get(method); + } + metric.add(nano, occurException); + } + } + } + + private class ServiceMethodMetric { + private AtomicLong totalTimeNano; + private AtomicLong counter; + private AtomicLong errorCounter; + + public ServiceMethodMetric() { + totalTimeNano = new AtomicLong(0); + counter = new AtomicLong(0); + errorCounter = new AtomicLong(0); + } + + private void add(long nano, boolean occurException) { + totalTimeNano.addAndGet(nano); + counter.incrementAndGet(); + if (occurException) + errorCounter.incrementAndGet(); + } + + @Override public String toString() { + if (counter.longValue() == 0) { + return "Avg=N/A"; + } + return "Avg=" + (totalTimeNano.longValue() / counter.longValue()) + " (nano)" + + ", Success Rate=" + (counter.longValue() - errorCounter.longValue()) * 100 / counter.longValue() + + "%"; + } + } +} diff --git a/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java new file mode 100644 index 000000000..7589bade5 --- /dev/null +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceInstrumentation.java @@ -0,0 +1,72 @@ +/* + * 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.instrument; + +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.implementation.MethodDelegation; +import net.bytebuddy.matcher.ElementMatcher; +import org.skywalking.apm.collector.core.module.Service; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static net.bytebuddy.matcher.ElementMatchers.isStatic; +import static net.bytebuddy.matcher.ElementMatchers.named; +import static net.bytebuddy.matcher.ElementMatchers.not; + +/** + * The ServiceInstrumentation create the dynamic service implementations based on the provider + * implementation. So the new implementation will report performance metric to {@link MetricCollector}. + * + * @author wu-sheng + */ +public enum ServiceInstrumentation { + INSTANCE; + + private final Logger logger = LoggerFactory.getLogger(ServiceInstrumentation.class); + private ElementMatcher excludeObjectMethodsMatcher; + + public Service buildServiceUnderMonitor(String moduleName, String providerName, Service implementation) { + if (implementation instanceof TracedService) { + // Duplicate service instrument, ignore. + return implementation; + } + try { + return new ByteBuddy().subclass(implementation.getClass()) + .implement(TracedService.class) + .method(getDefaultMatcher()).intercept( + MethodDelegation.withDefaultConfiguration().to(new ServiceMetricTracing(moduleName, providerName, implementation.getClass().getName())) + ).make().load(getClass().getClassLoader() + ).getLoaded().newInstance(); + } catch (InstantiationException e) { + logger.error("Create instrumented service " + implementation.getClass() + " fail.", e); + } catch (IllegalAccessException e) { + logger.error("Create instrumented service " + implementation.getClass() + " fail.", e); + } + return implementation; + } + + private ElementMatcher getDefaultMatcher() { + if (excludeObjectMethodsMatcher == null) { + excludeObjectMethodsMatcher = not(isStatic().or(named("getClass")).or(named("hashCode")).or(named("equals")).or(named("clone")) + .or(named("toString")).or(named("notify")).or(named("notifyAll")).or(named("wait")).or(named("finalize"))); + } + return excludeObjectMethodsMatcher; + } +} diff --git a/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceMetricTracing.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceMetricTracing.java new file mode 100644 index 000000000..94052a054 --- /dev/null +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/ServiceMetricTracing.java @@ -0,0 +1,58 @@ +/* + * 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.instrument; + +import java.lang.reflect.Method; +import java.util.concurrent.Callable; +import net.bytebuddy.implementation.bind.annotation.AllArguments; +import net.bytebuddy.implementation.bind.annotation.Origin; +import net.bytebuddy.implementation.bind.annotation.RuntimeType; +import net.bytebuddy.implementation.bind.annotation.SuperCall; +import net.bytebuddy.implementation.bind.annotation.This; + +/** + * @author wu-sheng + */ +public class ServiceMetricTracing { + private MetricCollector.ServiceMetric serviceMetric; + + public ServiceMetricTracing(String module, String provider, String service) { + serviceMetric = MetricCollector.INSTANCE.registerService(module, provider, service); + } + + @RuntimeType + public Object intercept(@This Object obj, + @AllArguments Object[] allArguments, + @SuperCall Callable zuper, + @Origin Method method + ) throws Throwable { + boolean occurError = false; + long startNano = System.nanoTime(); + long endNano; + try { + return zuper.call(); + } catch (Throwable t) { + occurError = true; + throw t; + } finally { + endNano = System.nanoTime(); + serviceMetric.trace(method, endNano - startNano, occurError); + } + } +} diff --git a/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/TracedService.java b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/TracedService.java new file mode 100644 index 000000000..2925338c8 --- /dev/null +++ b/apm-collector/apm-collector-instrument/src/main/java/org/skywalking/apm/collector/instrument/TracedService.java @@ -0,0 +1,29 @@ +/* + * 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.instrument; + +/** + * The TracedService implementation are dynamic class, generated by {@link ServiceInstrumentation}. + * + * By that, all the services metrics are collected, and report in the certain cycle through console. + * + * @author wu-sheng + */ +public interface TracedService { +} diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/pom.xml b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/pom.xml new file mode 100644 index 000000000..92a63b153 --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/pom.xml @@ -0,0 +1,33 @@ + + + + + + apm-collector-jetty-manager + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-jetty-manager-define + jar + + diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerModule.java b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerModule.java new file mode 100644 index 000000000..b3fa351f5 --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerModule.java @@ -0,0 +1,38 @@ +/* + * 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.jetty.manager; + +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService; + +/** + * @author peng-yongsheng + */ +public class JettyManagerModule extends Module { + + public static final String NAME = "jetty_manager"; + + @Override public String name() { + return NAME; + } + + @Override public Class[] services() { + return new Class[] {JettyManagerService.class}; + } +} diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerService.java b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerService.java new file mode 100644 index 000000000..c22242a91 --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerService.java @@ -0,0 +1,32 @@ +/* + * 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.jetty.manager.service; + +import org.skywalking.apm.collector.core.module.Service; +import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerHandler; + +/** + * @author peng-yongsheng + */ +public interface JettyManagerService extends Service { + Server createIfAbsent(String host, int port, String contextPath); + + void addHandler(String host, int port, ServerHandler serverHandler); +} diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..a6d571a30 --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-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.jetty.manager.JettyManagerModule \ No newline at end of file diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/pom.xml b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/pom.xml new file mode 100644 index 000000000..f0ab72eab --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-jetty-manager + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-jetty-manager-provider + jar + + + + org.skywalking + collector-jetty-manager-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java new file mode 100644 index 000000000..f3c0a8d0f --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java @@ -0,0 +1,72 @@ +/* + * 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.jetty.manager; + +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +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.service.JettyManagerService; +import org.skywalking.apm.collector.jetty.manager.service.JettyManagerServiceImpl; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.jetty.JettyServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class JettyManagerProvider extends ModuleProvider { + + private final Logger logger = LoggerFactory.getLogger(JettyManagerProvider.class); + + private Map servers = new HashMap<>(); + + @Override public String name() { + return "jetty"; + } + + @Override public Class module() { + return JettyManagerModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(JettyManagerService.class, new JettyManagerServiceImpl(servers)); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + servers.values().forEach(server -> { + try { + server.start(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } + }); + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java new file mode 100644 index 000000000..a6eb99db2 --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java @@ -0,0 +1,67 @@ +/* + * 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.jetty.manager.service; + +import java.util.Map; +import org.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.ServerHandler; +import org.skywalking.apm.collector.server.jetty.JettyServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class JettyManagerServiceImpl implements JettyManagerService { + + private final Logger logger = LoggerFactory.getLogger(JettyManagerServiceImpl.class); + + private final Map servers; + + public JettyManagerServiceImpl(Map servers) { + this.servers = servers; + } + + @Override public Server createIfAbsent(String host, int port, String contextPath) { + String id = host + String.valueOf(port); + if (servers.containsKey(id)) { + return servers.get(id); + } else { + JettyServer server = new JettyServer(host, port, contextPath); + try { + server.initialize(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } + servers.put(id, server); + return server; + } + } + + @Override public void addHandler(String host, int port, ServerHandler serverHandler) { + String id = host + String.valueOf(port); + if (servers.containsKey(id)) { + servers.get(id).addHandler(serverHandler); + } else { + throw new UnexpectedException("Please create server before add server handler."); + } + } +} diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..800e04cc5 --- /dev/null +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-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.jetty.manager.JettyManagerProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-agentserver/pom.xml b/apm-collector/apm-collector-jetty-manager/pom.xml similarity index 65% rename from apm-collector/apm-collector-agentserver/pom.xml rename to apm-collector/apm-collector-jetty-manager/pom.xml index af38326c4..9bc8c2c17 100644 --- a/apm-collector/apm-collector-agentserver/pom.xml +++ b/apm-collector/apm-collector-jetty-manager/pom.xml @@ -27,33 +27,22 @@ 4.0.0 - apm-collector-agentserver - jar + apm-collector-jetty-manager + pom + + collector-jetty-manager-define + collector-jetty-manager-provider + org.skywalking - apm-collector-cluster + apm-collector-core ${project.version} org.skywalking - apm-collector-server - ${project.version} - - - org.skywalking - apm-collector-agentstream - ${project.version} - - - org.skywalking - apm-collector-agentregister - ${project.version} - - - org.skywalking - apm-collector-ui + server-component ${project.version} diff --git a/apm-collector/apm-collector-naming/collector-naming-define/pom.xml b/apm-collector/apm-collector-naming/collector-naming-define/pom.xml new file mode 100644 index 000000000..b4c4db0be --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-define/pom.xml @@ -0,0 +1,33 @@ + + + + + + apm-collector-naming + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-naming-define + jar + + diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleContext.java b/apm-collector/apm-collector-naming/collector-naming-define/src/main/java/org/skywalking/apm/collector/naming/NamingModule.java similarity index 59% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleContext.java rename to apm-collector/apm-collector-naming/collector-naming-define/src/main/java/org/skywalking/apm/collector/naming/NamingModule.java index 7a73bbd49..1116d94eb 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleContext.java +++ b/apm-collector/apm-collector-naming/collector-naming-define/src/main/java/org/skywalking/apm/collector/naming/NamingModule.java @@ -16,27 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage; +package org.skywalking.apm.collector.naming; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.core.module.Service; +import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService; /** * @author peng-yongsheng */ -public class StorageModuleContext extends Context { +public class NamingModule extends Module { - private Client client; + public static final String NAME = "naming"; - public StorageModuleContext(String groupName) { - super(groupName); + @Override public String name() { + return NAME; } - public Client getClient() { - return client; - } - - public void setClient(Client client) { - this.client = client; + @Override public Class[] services() { + return new Class[] {NamingHandlerRegisterService.class}; } } diff --git a/apm-collector/apm-collector-naming/collector-naming-define/src/main/java/org/skywalking/apm/collector/naming/service/NamingHandlerRegisterService.java b/apm-collector/apm-collector-naming/collector-naming-define/src/main/java/org/skywalking/apm/collector/naming/service/NamingHandlerRegisterService.java new file mode 100644 index 000000000..4384321bb --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-define/src/main/java/org/skywalking/apm/collector/naming/service/NamingHandlerRegisterService.java @@ -0,0 +1,29 @@ +/* + * 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.naming.service; + +import org.skywalking.apm.collector.core.module.Service; +import org.skywalking.apm.collector.server.ServerHandler; + +/** + * @author peng-yongsheng + */ +public interface NamingHandlerRegisterService extends Service { + void register(ServerHandler namingHandler); +} diff --git a/apm-collector/apm-collector-naming/collector-naming-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-naming/collector-naming-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..bab5f5ee6 --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-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.naming.NamingModule \ No newline at end of file diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml new file mode 100644 index 000000000..c2ce80710 --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml @@ -0,0 +1,45 @@ + + + + + + apm-collector-naming + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-naming-jetty-provider + jar + + + + org.skywalking + collector-naming-define + ${project.version} + + + org.skywalking + collector-jetty-manager-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java new file mode 100644 index 000000000..b1ac81f88 --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java @@ -0,0 +1,70 @@ +/* + * 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.naming.jetty; + +import java.util.Properties; +import org.skywalking.apm.collector.cluster.ClusterModule; +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.jetty.service.NamingJettyHandlerRegisterService; +import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService; + +/** + * @author peng-yongsheng + */ +public class NamingModuleJettyProvider extends ModuleProvider { + + 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 "jetty"; + } + + @Override public Class module() { + return NamingModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + final String host = config.getProperty(HOST); + final Integer port = (Integer)config.get(PORT); + this.registerServiceImplementation(NamingHandlerRegisterService.class, new NamingJettyHandlerRegisterService(host, port, getManager())); + } + + @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); + + JettyManagerService managerService = getManager().find(JettyManagerModule.NAME).getService(JettyManagerService.class); + managerService.createIfAbsent(host, port, contextPath); + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + } + + @Override public String[] requiredModules() { + return new String[] {ClusterModule.NAME, JettyManagerModule.NAME}; + } +} diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/service/NamingJettyHandlerRegisterService.java b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/service/NamingJettyHandlerRegisterService.java new file mode 100644 index 000000000..5c51894cb --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/service/NamingJettyHandlerRegisterService.java @@ -0,0 +1,50 @@ +/* + * 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.naming.jetty.service; + +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.jetty.manager.JettyManagerModule; +import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService; +import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService; +import org.skywalking.apm.collector.server.ServerHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class NamingJettyHandlerRegisterService implements NamingHandlerRegisterService { + + private final Logger logger = LoggerFactory.getLogger(NamingJettyHandlerRegisterService.class); + + private final ModuleManager moduleManager; + private final String host; + private final int port; + + public NamingJettyHandlerRegisterService(String host, int port, ModuleManager moduleManager) { + this.moduleManager = moduleManager; + this.host = host; + this.port = port; + } + + @Override public void register(ServerHandler namingHandler) { + JettyManagerService managerService = moduleManager.find(JettyManagerModule.NAME).getService(JettyManagerService.class); + managerService.addHandler(this.host, this.port, namingHandler); + } +} diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..d28ccf145 --- /dev/null +++ b/apm-collector/apm-collector-naming/collector-naming-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.naming.jetty.NamingModuleJettyProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-naming/pom.xml b/apm-collector/apm-collector-naming/pom.xml new file mode 100644 index 000000000..276a33399 --- /dev/null +++ b/apm-collector/apm-collector-naming/pom.xml @@ -0,0 +1,36 @@ + + + + apm-collector + org.skywalking + 3.2.4-2017 + + 4.0.0 + + apm-collector-naming + pom + + collector-naming-define + collector-naming-jetty-provider + + + + + org.skywalking + apm-collector-core + ${project.version} + + + org.skywalking + collector-cluster-define + ${project.version} + + + org.skywalking + server-component + ${project.version} + + + diff --git a/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/pom.xml b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/pom.xml new file mode 100644 index 000000000..af198cab9 --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-queue + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-queue-datacarrier-provider + jar + + + + org.skywalking + collector-queue-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueModuleDataCarrierProvider.java b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueModuleDataCarrierProvider.java new file mode 100644 index 000000000..5e63afbee --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueModuleDataCarrierProvider.java @@ -0,0 +1,57 @@ +/* + * 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.queue.datacarrier; + +import java.util.Properties; +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.queue.QueueModule; +import org.skywalking.apm.collector.queue.datacarrier.service.DataCarrierQueueCreatorService; +import org.skywalking.apm.collector.queue.service.QueueCreatorService; + +/** + * @author peng-yongsheng + */ +public class QueueModuleDataCarrierProvider extends ModuleProvider { + + @Override public String name() { + return "datacarrier"; + } + + @Override public Class module() { + return QueueModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(QueueCreatorService.class, new DataCarrierQueueCreatorService()); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueCreator.java b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/java/org/skywalking/apm/collector/queue/datacarrier/service/DataCarrierQueueCreatorService.java similarity index 71% rename from apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueCreator.java rename to apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/java/org/skywalking/apm/collector/queue/datacarrier/service/DataCarrierQueueCreatorService.java index 482db64ee..c6e11480f 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueCreator.java +++ b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/java/org/skywalking/apm/collector/queue/datacarrier/service/DataCarrierQueueCreatorService.java @@ -16,16 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.queue.datacarrier; +package org.skywalking.apm.collector.queue.datacarrier.service; -import org.skywalking.apm.collector.core.queue.QueueCreator; -import org.skywalking.apm.collector.core.queue.QueueEventHandler; -import org.skywalking.apm.collector.core.queue.QueueExecutor; +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.base.QueueExecutor; +import org.skywalking.apm.collector.queue.service.QueueCreatorService; /** * @author peng-yongsheng */ -public class DataCarrierQueueCreator implements QueueCreator { +public class DataCarrierQueueCreatorService implements QueueCreatorService { @Override public QueueEventHandler create(int queueSize, QueueExecutor executor) { return null; diff --git a/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-queue/collector-queue-datacarrier-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..8ae1fd21d --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-datacarrier-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.queue.datacarrier.QueueModuleDataCarrierProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-queue/collector-queue-define/pom.xml b/apm-collector/apm-collector-queue/collector-queue-define/pom.xml new file mode 100644 index 000000000..940558138 --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-define/pom.xml @@ -0,0 +1,33 @@ + + + + + + apm-collector-queue + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-queue-define + jar + + diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleException.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/QueueModule.java similarity index 68% rename from apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleException.java rename to apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/QueueModule.java index 7854625f8..bab6b027c 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleException.java +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/QueueModule.java @@ -18,17 +18,21 @@ package org.skywalking.apm.collector.queue; -import org.skywalking.apm.collector.core.module.ModuleException; +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.queue.service.QueueCreatorService; /** * @author peng-yongsheng */ -public class QueueModuleException extends ModuleException { - public QueueModuleException(String message) { - super(message); +public class QueueModule extends Module { + + public static final String NAME = "queue"; + + @Override public String name() { + return NAME; } - public QueueModuleException(String message, Throwable cause) { - super(message, cause); + @Override public Class[] services() { + return new Class[] {QueueCreatorService.class}; } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/DaemonThreadFactory.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/DaemonThreadFactory.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/DaemonThreadFactory.java rename to apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/DaemonThreadFactory.java index 7da9a2577..08d79b53e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/DaemonThreadFactory.java +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/DaemonThreadFactory.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.queue; +package org.skywalking.apm.collector.queue.base; import java.util.concurrent.ThreadFactory; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/MessageHolder.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/MessageHolder.java similarity index 74% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/MessageHolder.java rename to apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/MessageHolder.java index c10ba3512..e6ea0f045 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/MessageHolder.java +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/MessageHolder.java @@ -16,19 +16,21 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.queue; +package org.skywalking.apm.collector.queue.base; + +import org.skywalking.apm.collector.core.data.EndOfBatchQueueMessage; /** * @author peng-yongsheng */ -public class MessageHolder { - private Object message; +public class MessageHolder { + private MESSAGE message; - public Object getMessage() { + public MESSAGE getMessage() { return message; } - public void setMessage(Object message) { + public void setMessage(MESSAGE message) { this.message = message; } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueCreator.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueCreator.java similarity index 94% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueCreator.java rename to apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueCreator.java index 39236b58a..7527e8aa5 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueCreator.java +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueCreator.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.queue; +package org.skywalking.apm.collector.queue.base; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueEventHandler.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueEventHandler.java similarity index 85% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueEventHandler.java rename to apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueEventHandler.java index aa13c82b2..fa8f751fe 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueEventHandler.java +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueEventHandler.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.queue; +package org.skywalking.apm.collector.queue.base; /** * @author peng-yongsheng */ -public interface QueueEventHandler { - void tell(Object message); +public interface QueueEventHandler { + void tell(MESSAGE message); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueExecutor.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueExecutor.java similarity index 87% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueExecutor.java rename to apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueExecutor.java index 27d88e655..b6138e569 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/queue/QueueExecutor.java +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/base/QueueExecutor.java @@ -16,12 +16,12 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.queue; +package org.skywalking.apm.collector.queue.base; import org.skywalking.apm.collector.core.framework.Executor; /** * @author peng-yongsheng */ -public interface QueueExecutor extends Executor { +public interface QueueExecutor extends Executor { } diff --git a/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/service/QueueCreatorService.java b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/service/QueueCreatorService.java new file mode 100644 index 000000000..74621cb5c --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-define/src/main/java/org/skywalking/apm/collector/queue/service/QueueCreatorService.java @@ -0,0 +1,30 @@ +/* + * 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.queue.service; + +import org.skywalking.apm.collector.core.module.Service; +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.base.QueueExecutor; + +/** + * @author peng-yongsheng + */ +public interface QueueCreatorService extends Service { + QueueEventHandler create(int queueSize, QueueExecutor executor); +} diff --git a/apm-collector/apm-collector-queue/collector-queue-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-queue/collector-queue-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..8e26eed9c --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-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.queue.QueueModule \ No newline at end of file diff --git a/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/pom.xml b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/pom.xml new file mode 100644 index 000000000..0e9f488cb --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/pom.xml @@ -0,0 +1,45 @@ + + + + + + apm-collector-queue + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-queue-disruptor-provider + jar + + + + org.skywalking + collector-queue-define + ${project.version} + + + com.lmax + disruptor + 3.3.6 + + + diff --git a/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueModuleDisruptorProvider.java b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueModuleDisruptorProvider.java new file mode 100644 index 000000000..a5c85ebc8 --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueModuleDisruptorProvider.java @@ -0,0 +1,57 @@ +/* + * 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.queue.disruptor; + +import java.util.Properties; +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.queue.QueueModule; +import org.skywalking.apm.collector.queue.disruptor.service.DisruptorQueueCreatorService; +import org.skywalking.apm.collector.queue.service.QueueCreatorService; + +/** + * @author peng-yongsheng + */ +public class QueueModuleDisruptorProvider extends ModuleProvider { + + @Override public String name() { + return "disruptor"; + } + + @Override public Class module() { + return QueueModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.registerServiceImplementation(QueueCreatorService.class, new DisruptorQueueCreatorService()); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } +} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorEventHandler.java b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/DisruptorEventHandler.java similarity index 64% rename from apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorEventHandler.java rename to apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/DisruptorEventHandler.java index 35e286fca..edf5754a4 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorEventHandler.java +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/DisruptorEventHandler.java @@ -16,28 +16,29 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.queue.disruptor; +package org.skywalking.apm.collector.queue.disruptor.base; import com.lmax.disruptor.EventHandler; import com.lmax.disruptor.RingBuffer; -import org.skywalking.apm.collector.core.queue.EndOfBatchCommand; -import org.skywalking.apm.collector.core.queue.MessageHolder; -import org.skywalking.apm.collector.core.queue.QueueEventHandler; -import org.skywalking.apm.collector.core.queue.QueueExecutor; +import org.skywalking.apm.collector.core.CollectorException; +import org.skywalking.apm.collector.core.data.EndOfBatchQueueMessage; +import org.skywalking.apm.collector.queue.base.MessageHolder; +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.base.QueueExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class DisruptorEventHandler implements EventHandler, QueueEventHandler { +public class DisruptorEventHandler implements EventHandler>, QueueEventHandler { private final Logger logger = LoggerFactory.getLogger(DisruptorEventHandler.class); - private RingBuffer ringBuffer; - private QueueExecutor executor; + private RingBuffer> ringBuffer; + private QueueExecutor executor; - DisruptorEventHandler(RingBuffer ringBuffer, QueueExecutor executor) { + DisruptorEventHandler(RingBuffer> ringBuffer, QueueExecutor executor) { this.ringBuffer = ringBuffer; this.executor = executor; } @@ -50,14 +51,12 @@ public class DisruptorEventHandler implements EventHandler, Queue * @param sequence of the event being processed * @param endOfBatch flag to indicate if this is the last event in a batch from the {@link RingBuffer} */ - public void onEvent(MessageHolder event, long sequence, boolean endOfBatch) { - Object message = event.getMessage(); + public void onEvent(MessageHolder event, long sequence, boolean endOfBatch) throws CollectorException { + MESSAGE message = event.getMessage(); event.reset(); + message.setEndOfBatch(endOfBatch); executor.execute(message); - if (endOfBatch) { - executor.execute(new EndOfBatchCommand()); - } } /** @@ -65,7 +64,7 @@ public class DisruptorEventHandler implements EventHandler, Queue * * @param message of the data to process. */ - public void tell(Object message) { + public void tell(MESSAGE message) { long sequence = ringBuffer.next(); try { ringBuffer.get(sequence).setMessage(message); diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueCreator.java b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/DisruptorQueueCreator.java similarity index 74% rename from apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueCreator.java rename to apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/DisruptorQueueCreator.java index 320a22206..52082a2ce 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueCreator.java +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/DisruptorQueueCreator.java @@ -16,16 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.queue.disruptor; +package org.skywalking.apm.collector.queue.disruptor.base; import com.lmax.disruptor.ExceptionHandler; import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.dsl.Disruptor; -import org.skywalking.apm.collector.core.queue.DaemonThreadFactory; -import org.skywalking.apm.collector.core.queue.MessageHolder; -import org.skywalking.apm.collector.core.queue.QueueCreator; -import org.skywalking.apm.collector.core.queue.QueueEventHandler; -import org.skywalking.apm.collector.core.queue.QueueExecutor; +import org.skywalking.apm.collector.queue.base.DaemonThreadFactory; +import org.skywalking.apm.collector.queue.base.MessageHolder; +import org.skywalking.apm.collector.queue.base.QueueCreator; +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.base.QueueExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,19 +43,18 @@ public class DisruptorQueueCreator implements QueueCreator { } // Construct the Disruptor - Disruptor disruptor = new Disruptor(MessageHolderFactory.INSTANCE, queueSize, DaemonThreadFactory.INSTANCE); - + Disruptor disruptor = new Disruptor<>(MessageHolderFactory.INSTANCE, queueSize, DaemonThreadFactory.INSTANCE); disruptor.setDefaultExceptionHandler(new ExceptionHandler() { @Override public void handleEventException(Throwable ex, long sequence, MessageHolder event) { - logger.error("handler message error! message: {}.", event.getMessage(), ex); + logger.error("Handle disruptor error event! message: {}.", event.getMessage(), ex); } @Override public void handleOnStartException(Throwable ex) { - logger.error("create disruptor failed!", ex); + logger.error("create disruptor queue failed!", ex); } @Override public void handleOnShutdownException(Throwable ex) { - logger.error("shutdown disruptor failed!", ex); + logger.error("shutdown disruptor queue failed!", ex); } }); diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/MessageHolderFactory.java b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/MessageHolderFactory.java similarity index 89% rename from apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/MessageHolderFactory.java rename to apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/MessageHolderFactory.java index 1e006c943..9d5e1a54d 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/MessageHolderFactory.java +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/base/MessageHolderFactory.java @@ -16,10 +16,10 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.queue.disruptor; +package org.skywalking.apm.collector.queue.disruptor.base; import com.lmax.disruptor.EventFactory; -import org.skywalking.apm.collector.core.queue.MessageHolder; +import org.skywalking.apm.collector.queue.base.MessageHolder; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/service/DisruptorQueueCreatorService.java b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/service/DisruptorQueueCreatorService.java new file mode 100644 index 000000000..46b6ceb11 --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/java/org/skywalking/apm/collector/queue/disruptor/service/DisruptorQueueCreatorService.java @@ -0,0 +1,40 @@ +/* + * 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.queue.disruptor.service; + +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.base.QueueExecutor; +import org.skywalking.apm.collector.queue.disruptor.base.DisruptorQueueCreator; +import org.skywalking.apm.collector.queue.service.QueueCreatorService; + +/** + * @author peng-yongsheng + */ +public class DisruptorQueueCreatorService implements QueueCreatorService { + + private final DisruptorQueueCreator creator; + + public DisruptorQueueCreatorService() { + this.creator = new DisruptorQueueCreator(); + } + + @Override public QueueEventHandler create(int queueSize, QueueExecutor executor) { + return creator.create(queueSize, executor); + } +} diff --git a/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-queue/collector-queue-disruptor-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..080bba992 --- /dev/null +++ b/apm-collector/apm-collector-queue/collector-queue-disruptor-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.queue.disruptor.QueueModuleDisruptorProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-queue/pom.xml b/apm-collector/apm-collector-queue/pom.xml index 5457feffd..7c8f5f184 100644 --- a/apm-collector/apm-collector-queue/pom.xml +++ b/apm-collector/apm-collector-queue/pom.xml @@ -28,7 +28,12 @@ 4.0.0 apm-collector-queue - jar + pom + + collector-queue-define + collector-queue-datacarrier-provider + collector-queue-disruptor-provider + @@ -36,10 +41,5 @@ apm-collector-core ${project.version} - - com.lmax - disruptor - 3.3.6 - - + \ No newline at end of file diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleContext.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleContext.java deleted file mode 100644 index 36ba58b28..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleContext.java +++ /dev/null @@ -1,41 +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.queue; - -import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.queue.QueueCreator; - -/** - * @author peng-yongsheng - */ -public class QueueModuleContext extends Context { - private QueueCreator queueCreator; - - public QueueModuleContext(String groupName) { - super(groupName); - } - - public QueueCreator getQueueCreator() { - return queueCreator; - } - - public void setQueueCreator(QueueCreator queueCreator) { - this.queueCreator = queueCreator; - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java deleted file mode 100644 index b5648eb3b..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.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.queue; - -import java.util.List; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleRegistration; -import org.skywalking.apm.collector.core.server.Server; - -/** - * @author peng-yongsheng - */ -public abstract class QueueModuleDefine extends ModuleDefine { - - @Override protected Client createClient() { - return null; - } - - @Override protected final ModuleRegistration registration() { - throw new UnsupportedOperationException(""); - } - - @Override protected final Server server() { - return null; - } - - @Override public final List handlerList() { - return null; - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java deleted file mode 100644 index 812a422a0..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.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.queue; - -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 QueueModuleGroupDefine implements ModuleGroupDefine { - - public static final String GROUP_NAME = "queue"; - private final QueueModuleInstaller installer; - - public QueueModuleGroupDefine() { - installer = new QueueModuleInstaller(); - } - - @Override public String name() { - return GROUP_NAME; - } - - @Override public Context groupContext() { - return new QueueModuleContext(GROUP_NAME); - } - - @Override public ModuleInstaller moduleInstaller() { - return installer; - } - - @Override public GroupConfigParser groupConfigParser() { - return null; - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java deleted file mode 100644 index 95c8dce52..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java +++ /dev/null @@ -1,66 +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.queue; - -import java.util.List; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.config.ConfigException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.UnexpectedException; -import org.skywalking.apm.collector.core.module.SingleModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.queue.datacarrier.DataCarrierQueueCreator; -import org.skywalking.apm.collector.queue.datacarrier.QueueDataCarrierModuleDefine; -import org.skywalking.apm.collector.queue.disruptor.DisruptorQueueCreator; -import org.skywalking.apm.collector.queue.disruptor.QueueDisruptorModuleDefine; - -/** - * @author peng-yongsheng - */ -public class QueueModuleInstaller extends SingleModuleInstaller { - - @Override public String groupName() { - return QueueModuleGroupDefine.GROUP_NAME; - } - - @Override public Context moduleContext() { - return new QueueModuleContext(groupName()); - } - - @Override public List dependenceModules() { - return null; - } - - @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { - super.install(); - if (getModuleDefine() instanceof QueueDataCarrierModuleDefine) { - ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())).setQueueCreator(new DataCarrierQueueCreator()); - } else if (getModuleDefine() instanceof QueueDisruptorModuleDefine) { - ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())).setQueueCreator(new DisruptorQueueCreator()); - } else { - throw new UnexpectedException(""); - } - } - - @Override public void onAfterInstall() throws CollectorException { - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java deleted file mode 100644 index c3ad34a63..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java +++ /dev/null @@ -1,33 +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.queue.datacarrier; - -import java.util.Map; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; - -/** - * @author peng-yongsheng - */ -public class DataCarrierQueueConfigParser implements ModuleConfigParser { - - @Override public void parse(Map config) throws ConfigParseException { - - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java deleted file mode 100644 index 0694d57ac..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.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.queue.datacarrier; - -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; -import org.skywalking.apm.collector.queue.QueueModuleContext; -import org.skywalking.apm.collector.queue.QueueModuleDefine; -import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; - -/** - * @author peng-yongsheng - */ -public class QueueDataCarrierModuleDefine extends QueueModuleDefine { - - @Override protected String group() { - return QueueModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return "data_carrier"; - } - - @Override public boolean defaultModule() { - return false; - } - - @Override protected ModuleConfigParser configParser() { - return new DataCarrierQueueConfigParser(); - } - - @Override protected void initializeOtherContext() { - ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setQueueCreator(new DataCarrierQueueCreator()); - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueConfigParser.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueConfigParser.java deleted file mode 100644 index 9a7914bd1..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueConfigParser.java +++ /dev/null @@ -1,33 +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.queue.disruptor; - -import java.util.Map; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; - -/** - * @author peng-yongsheng - */ -public class DisruptorQueueConfigParser implements ModuleConfigParser { - - @Override public void parse(Map config) throws ConfigParseException { - - } -} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java deleted file mode 100644 index 3f92e56b2..000000000 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.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.queue.disruptor; - -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; -import org.skywalking.apm.collector.queue.QueueModuleContext; -import org.skywalking.apm.collector.queue.QueueModuleDefine; -import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; - -/** - * @author peng-yongsheng - */ -public class QueueDisruptorModuleDefine extends QueueModuleDefine { - - @Override protected String group() { - return QueueModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return "disruptor"; - } - - @Override public boolean defaultModule() { - return true; - } - - @Override protected ModuleConfigParser configParser() { - return new DisruptorQueueConfigParser(); - } - - @Override protected void initializeOtherContext() { - ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setQueueCreator(new DisruptorQueueCreator()); - } -} diff --git a/apm-collector/apm-collector-queue/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-queue/src/main/resources/META-INF/defines/group.define deleted file mode 100644 index 761c2b7e0..000000000 --- a/apm-collector/apm-collector-queue/src/main/resources/META-INF/defines/group.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.queue.QueueModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-queue/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-queue/src/main/resources/META-INF/defines/module.define deleted file mode 100644 index bf98f6742..000000000 --- a/apm-collector/apm-collector-queue/src/main/resources/META-INF/defines/module.define +++ /dev/null @@ -1,2 +0,0 @@ -org.skywalking.apm.collector.queue.disruptor.QueueDisruptorModuleDefine -org.skywalking.apm.collector.queue.datacarrier.QueueDataCarrierModuleDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-remote/collector-remote-define/pom.xml b/apm-collector/apm-collector-remote/collector-remote-define/pom.xml new file mode 100644 index 000000000..e98e85408 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-define/pom.xml @@ -0,0 +1,15 @@ + + + + apm-collector-remote + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-remote-define + jar + + diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/RemoteModule.java similarity index 59% rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/RemoteModule.java index 8350d678f..b3e6fd673 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/RemoteModule.java @@ -16,22 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentserver; +package org.skywalking.apm.collector.remote; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.module.ModuleDefine; +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.remote.service.RemoteSenderService; +import org.skywalking.apm.collector.remote.service.RemoteServerService; /** * @author peng-yongsheng */ -public abstract class AgentServerModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { +public class RemoteModule extends Module { - @Override protected void initializeOtherContext() { + public static final String NAME = "remote"; + @Override public String name() { + return NAME; } - @Override protected final Client createClient() { - throw new UnsupportedOperationException(""); + @Override public Class[] services() { + return new Class[] {RemoteServerService.class, RemoteSenderService.class}; } } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/ICpuMetricDAO.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/RoutingRule.java similarity index 88% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/ICpuMetricDAO.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/RoutingRule.java index 03672b450..57f1ac74c 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/ICpuMetricDAO.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/RoutingRule.java @@ -16,10 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.cpu.dao; +package org.skywalking.apm.collector.remote; /** * @author peng-yongsheng */ -public interface ICpuMetricDAO { +public enum RoutingRule { + HashCode, ForeverFirst } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/DataReceiver.java similarity index 76% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/DataReceiver.java index 4be86a417..7baeb3478 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleContext.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/DataReceiver.java @@ -16,16 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui; +package org.skywalking.apm.collector.remote.service; -import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.data.Data; /** * @author peng-yongsheng */ -public class UIModuleContext extends Context { +public interface DataReceiver { + Output output(int graphId, int nodeId); - public UIModuleContext(String groupName) { - super(groupName); - } + void receive(Output data); } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRef.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/DataReceiverRegisterListener.java similarity index 70% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRef.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/DataReceiverRegisterListener.java index 959689464..dcc9b4e3e 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRef.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/DataReceiverRegisterListener.java @@ -16,21 +16,20 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.remote.service; /** * @author peng-yongsheng */ -public abstract class WorkerRef { - private Role role; +public class DataReceiverRegisterListener { - public WorkerRef(Role role) { - this.role = role; + private DataReceiver dataReceiver; + + public DataReceiver getDataReceiver() { + return dataReceiver; } - final public Role getRole() { - return role; + public void setDataReceiver(DataReceiver dataReceiver) { + this.dataReceiver = dataReceiver; } - - public abstract void tell(Object message) throws WorkerInvokeException; } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Context.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteClient.java similarity index 72% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Context.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteClient.java index 462762278..8771cd7f6 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Context.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteClient.java @@ -16,19 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.remote.service; + +import org.skywalking.apm.collector.core.data.Data; /** * @author peng-yongsheng */ -public abstract class Context { - private final String groupName; +public interface RemoteClient extends Comparable { + String getAddress(); - public Context(String groupName) { - this.groupName = groupName; - } + void send(int graphId, int nodeId, Data data); - public final String getGroupName() { - return groupName; - } + boolean equals(String address); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Starter.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteClientService.java similarity index 77% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Starter.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteClientService.java index ae5f2f263..109e9320f 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Starter.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteClientService.java @@ -16,13 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.framework; +package org.skywalking.apm.collector.remote.service; -import org.skywalking.apm.collector.core.CollectorException; +import org.skywalking.apm.collector.core.module.Service; /** * @author peng-yongsheng */ -public interface Starter { - void start() throws CollectorException; +public interface RemoteClientService extends Service { + RemoteClient create(String host, int port); } diff --git a/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteDeserializeService.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteDeserializeService.java new file mode 100644 index 000000000..127faa5dd --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteDeserializeService.java @@ -0,0 +1,28 @@ +/* + * 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.remote.service; + +import org.skywalking.apm.collector.core.data.Data; + +/** + * @author peng-yongsheng + */ +public interface RemoteDeserializeService { + void deserialize(RemoteData remoteData, Data data); +} diff --git a/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteSenderService.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteSenderService.java new file mode 100644 index 000000000..3b89f959b --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteSenderService.java @@ -0,0 +1,33 @@ +/* + * 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.remote.service; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface RemoteSenderService extends Service { + Mode send(int graphId, int nodeId, Data data, Selector selector); + + enum Mode { + Remote, Local + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteSerializeService.java similarity index 79% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteSerializeService.java index 62f644d0b..35a928523 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/GroupConfigParser.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteSerializeService.java @@ -16,15 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.config; +package org.skywalking.apm.collector.remote.service; -import java.util.Map; +import org.skywalking.apm.collector.core.data.Data; /** * @author peng-yongsheng */ -public interface GroupConfigParser { - String NODE_NAME = "config"; - - void parse(Map config); +public interface RemoteSerializeService { + Builder serialize(Data data); } diff --git a/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteServerService.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteServerService.java new file mode 100644 index 000000000..17b6febf3 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/RemoteServerService.java @@ -0,0 +1,28 @@ +/* + * 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.remote.service; + +import org.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface RemoteServerService extends Service { + void registerReceiver(DataReceiver receiver); +} diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/IGCMetricDAO.java b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/Selector.java similarity index 86% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/IGCMetricDAO.java rename to apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/Selector.java index 3a3f216e6..84173d463 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/dao/IGCMetricDAO.java +++ b/apm-collector/apm-collector-remote/collector-remote-define/src/main/java/org/skywalking/apm/collector/remote/service/Selector.java @@ -16,10 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.gc.dao; +package org.skywalking.apm.collector.remote.service; /** * @author peng-yongsheng */ -public interface IGCMetricDAO { +public enum Selector { + HashCode, Rolling, ForeverFirst } diff --git a/apm-collector/apm-collector-remote/collector-remote-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-remote/collector-remote-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..46bd0573e --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-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.remote.RemoteModule \ No newline at end of file diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/pom.xml b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/pom.xml new file mode 100644 index 000000000..fea9d5de2 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/pom.xml @@ -0,0 +1,90 @@ + + + + + + apm-collector-remote + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-remote-grpc-provider + jar + + + + org.skywalking + collector-remote-define + ${project.version} + + + org.skywalking + collector-grpc-manager-define + ${project.version} + + + + + + + kr.motd.maven + os-maven-plugin + 1.4.1.Final + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.4.3 + + ${project.build.sourceEncoding} + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.5.0 + + + com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier} + + grpc-java + io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier} + + + + + + compile + compile-custom + + + + + + + diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/RemoteModuleGRPCProvider.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/RemoteModuleGRPCProvider.java new file mode 100644 index 000000000..3493cd7f4 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/RemoteModuleGRPCProvider.java @@ -0,0 +1,71 @@ +package org.skywalking.apm.collector.remote.grpc; + +import java.util.Properties; +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.remote.RemoteModule; +import org.skywalking.apm.collector.remote.grpc.handler.RemoteCommonServiceHandler; +import org.skywalking.apm.collector.remote.grpc.service.GRPCRemoteSenderService; +import org.skywalking.apm.collector.remote.grpc.service.GRPCRemoteServerService; +import org.skywalking.apm.collector.remote.service.DataReceiverRegisterListener; +import org.skywalking.apm.collector.remote.service.RemoteSenderService; +import org.skywalking.apm.collector.remote.service.RemoteServerService; +import org.skywalking.apm.collector.server.Server; + +/** + * @author peng-yongsheng + */ +public class RemoteModuleGRPCProvider extends ModuleProvider { + + public static final String NAME = "gRPC"; + private static final String HOST = "host"; + private static final String PORT = "port"; + private final DataReceiverRegisterListener listener = new DataReceiverRegisterListener(); + private GRPCRemoteSenderService remoteSenderService; + + @Override public String name() { + return NAME; + } + + @Override public Class module() { + return RemoteModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + String host = config.getProperty(HOST); + Integer port = (Integer)config.get(PORT); + + remoteSenderService = new GRPCRemoteSenderService(host, port); + this.registerServiceImplementation(RemoteServerService.class, new GRPCRemoteServerService(listener)); + this.registerServiceImplementation(RemoteSenderService.class, remoteSenderService); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + String host = config.getProperty(HOST); + Integer port = (Integer)config.get(PORT); + + GRPCManagerService managerService = getManager().find(GRPCManagerModule.NAME).getService(GRPCManagerService.class); + Server gRPCServer = managerService.createIfAbsent(host, port); + gRPCServer.addHandler(new RemoteCommonServiceHandler(listener)); + + ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class); + moduleRegisterService.register(RemoteModule.NAME, this.name(), new RemoteModuleGRPCRegistration(host, port)); + + ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class); + moduleListenerService.addListener(remoteSenderService); + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[] {ClusterModule.NAME, GRPCManagerModule.NAME}; + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleRegistration.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/RemoteModuleGRPCRegistration.java similarity index 62% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleRegistration.java rename to apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/RemoteModuleGRPCRegistration.java index 73a0c390e..c8f5a0700 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleRegistration.java +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/RemoteModuleGRPCRegistration.java @@ -16,16 +16,25 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.grpc; +package org.skywalking.apm.collector.remote.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 StreamGRPCModuleRegistration extends ModuleRegistration { +public class RemoteModuleGRPCRegistration extends ModuleRegistration { + + private final String host; + private final int port; + + public RemoteModuleGRPCRegistration(String host, int port) { + this.host = host; + this.port = port; + } @Override public Value buildValue() { - return new Value(StreamGRPCConfig.HOST, StreamGRPCConfig.PORT, null); + return new Value(host, port, Const.EMPTY_STRING); } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/handler/RemoteCommonServiceHandler.java similarity index 68% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java rename to apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/handler/RemoteCommonServiceHandler.java index 6111aa56c..e1a5f47fc 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/handler/RemoteCommonServiceHandler.java @@ -16,18 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.grpc.handler; +package org.skywalking.apm.collector.remote.grpc.handler; import io.grpc.stub.StreamObserver; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.data.Data; import org.skywalking.apm.collector.remote.grpc.proto.Empty; import org.skywalking.apm.collector.remote.grpc.proto.RemoteCommonServiceGrpc; import org.skywalking.apm.collector.remote.grpc.proto.RemoteData; import org.skywalking.apm.collector.remote.grpc.proto.RemoteMessage; +import org.skywalking.apm.collector.remote.grpc.service.GRPCRemoteDeserializeService; +import org.skywalking.apm.collector.remote.service.DataReceiverRegisterListener; import org.skywalking.apm.collector.server.grpc.GRPCHandler; -import org.skywalking.apm.collector.stream.StreamModuleContext; -import org.skywalking.apm.collector.stream.StreamModuleGroupDefine; -import org.skywalking.apm.collector.stream.worker.Role; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,20 +37,24 @@ public class RemoteCommonServiceHandler extends RemoteCommonServiceGrpc.RemoteCo private final Logger logger = LoggerFactory.getLogger(RemoteCommonServiceHandler.class); + private final DataReceiverRegisterListener listener; + private final GRPCRemoteDeserializeService service; + + public RemoteCommonServiceHandler(DataReceiverRegisterListener listener) { + this.listener = listener; + this.service = new GRPCRemoteDeserializeService(); + } + @Override public StreamObserver call(StreamObserver responseObserver) { return new StreamObserver() { @Override public void onNext(RemoteMessage message) { - String roleName = message.getWorkerRole(); + int graphId = message.getGraphId(); + int nodeId = message.getNodeId(); RemoteData remoteData = message.getRemoteData(); - StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME); - Role role = context.getClusterWorkerContext().getRole(roleName); - try { - Object object = role.dataDefine().deserialize(remoteData); - context.getClusterWorkerContext().lookupInSide(roleName).tell(object); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } + Data output = listener.getDataReceiver().output(graphId, nodeId); + service.deserialize(remoteData, output); + listener.getDataReceiver().receive(output); } @Override public void onError(Throwable throwable) { diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteClient.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteClient.java new file mode 100644 index 000000000..979e4c71e --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteClient.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.remote.grpc.service; + +import io.grpc.stub.StreamObserver; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.grpc.proto.RemoteMessage; +import org.skywalking.apm.collector.remote.service.RemoteClient; + +/** + * @author peng-yongsheng + */ +public class GRPCRemoteClient implements RemoteClient { + + private final GRPCRemoteSerializeService service; + private final StreamObserver streamObserver; + private final String address; + + public GRPCRemoteClient(String host, int port, StreamObserver streamObserver) { + this.address = host + ":" + String.valueOf(port); + this.streamObserver = streamObserver; + this.service = new GRPCRemoteSerializeService(); + } + + @Override public final String getAddress() { + return this.address; + } + + @Override public void send(int graphId, int nodeId, Data data) { + RemoteMessage.Builder builder = RemoteMessage.newBuilder(); + builder.setGraphId(graphId); + builder.setNodeId(nodeId); + builder.setRemoteData(service.serialize(data)); + + streamObserver.onNext(builder.build()); + } + + @Override public boolean equals(String address) { + return this.address.equals(address); + } + + @Override public int compareTo(RemoteClient o) { + return this.address.compareTo(o.getAddress()); + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteClientService.java similarity index 54% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java rename to apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteClientService.java index cbb870efd..e98a1f103 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteClientService.java @@ -16,73 +16,41 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.remote.grpc.service; import io.grpc.stub.StreamObserver; +import org.skywalking.apm.collector.client.ClientException; import org.skywalking.apm.collector.client.grpc.GRPCClient; -import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.remote.grpc.proto.Empty; import org.skywalking.apm.collector.remote.grpc.proto.RemoteCommonServiceGrpc; -import org.skywalking.apm.collector.remote.grpc.proto.RemoteData; import org.skywalking.apm.collector.remote.grpc.proto.RemoteMessage; +import org.skywalking.apm.collector.remote.service.RemoteClient; +import org.skywalking.apm.collector.remote.service.RemoteClientService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class RemoteWorkerRef extends WorkerRef { +public class GRPCRemoteClientService implements RemoteClientService { - private final Logger logger = LoggerFactory.getLogger(RemoteWorkerRef.class); + private final Logger logger = LoggerFactory.getLogger(GRPCRemoteClientService.class); - private final Boolean acrossJVM; - private final RemoteCommonServiceGrpc.RemoteCommonServiceStub stub; - private StreamObserver streamObserver; - private final AbstractRemoteWorker remoteWorker; - private final String address; - - public RemoteWorkerRef(Role role, AbstractRemoteWorker remoteWorker) { - super(role); - this.remoteWorker = remoteWorker; - this.acrossJVM = false; - this.stub = null; - this.address = Const.EMPTY_STRING; - } - - public RemoteWorkerRef(Role role, GRPCClient client) { - super(role); - this.remoteWorker = null; - this.acrossJVM = true; - this.stub = RemoteCommonServiceGrpc.newStub(client.getChannel()); - this.address = client.toString(); - createStreamObserver(); - } - - @Override - public void tell(Object message) throws WorkerInvokeException { - if (acrossJVM) { - try { - RemoteData remoteData = getRole().dataDefine().serialize(message); - RemoteMessage.Builder builder = RemoteMessage.newBuilder(); - builder.setWorkerRole(getRole().roleName()); - builder.setRemoteData(remoteData); - - streamObserver.onNext(builder.build()); - } catch (Throwable e) { - logger.error(e.getMessage(), e); - } - } else { - remoteWorker.allocateJob(message); + @Override public RemoteClient create(String host, int port) { + GRPCClient client = new GRPCClient(host, port); + try { + client.initialize(); + } catch (ClientException e) { + e.printStackTrace(); } + RemoteCommonServiceGrpc.RemoteCommonServiceStub stub = RemoteCommonServiceGrpc.newStub(client.getChannel()); + StreamObserver streamObserver = createStreamObserver(stub); + return new GRPCRemoteClient(host, port, streamObserver); } - public Boolean isAcrossJVM() { - return acrossJVM; - } - - private void createStreamObserver() { + private StreamObserver createStreamObserver(RemoteCommonServiceGrpc.RemoteCommonServiceStub stub) { StreamStatus status = new StreamStatus(false); - streamObserver = stub.call(new StreamObserver() { + return stub.call(new StreamObserver() { @Override public void onNext(Empty empty) { } @@ -138,11 +106,4 @@ public class RemoteWorkerRef extends WorkerRef { } } } - - @Override public String toString() { - StringBuilder toString = new StringBuilder(); - toString.append("acrossJVM: ").append(acrossJVM); - toString.append(", address: ").append(address); - return toString.toString(); - } } diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteDeserializeService.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteDeserializeService.java new file mode 100644 index 000000000..5ffbb5421 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteDeserializeService.java @@ -0,0 +1,50 @@ +/* + * 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.remote.grpc.service; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.grpc.proto.RemoteData; +import org.skywalking.apm.collector.remote.service.RemoteDeserializeService; + +/** + * @author peng-yongsheng + */ +public class GRPCRemoteDeserializeService implements RemoteDeserializeService { + + @Override public void deserialize(RemoteData remoteData, Data data) { + for (int i = 0; i < remoteData.getDataStringsCount(); i++) { + data.setDataString(i, remoteData.getDataStrings(i)); + } + for (int i = 0; i < remoteData.getDataIntegersCount(); i++) { + data.setDataInteger(i, remoteData.getDataIntegers(i)); + } + for (int i = 0; i < remoteData.getDataLongsCount(); i++) { + data.setDataLong(i, remoteData.getDataLongs(i)); + } + for (int i = 0; i < remoteData.getDataBooleansCount(); i++) { + data.setDataBoolean(i, remoteData.getDataBooleans(i)); + } + for (int i = 0; i < remoteData.getDataDoublesCount(); i++) { + data.setDataDouble(i, remoteData.getDataDoubles(i)); + } + for (int i = 0; i < remoteData.getDataBytesCount(); i++) { + data.setDataBytes(i, remoteData.getDataBytes(i).toByteArray()); + } + } +} diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSenderService.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSenderService.java new file mode 100644 index 000000000..d3e5a6a80 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSenderService.java @@ -0,0 +1,114 @@ +/* + * 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.remote.grpc.service; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.skywalking.apm.collector.cluster.ClusterModuleListener; +import org.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.RemoteModule; +import org.skywalking.apm.collector.remote.grpc.RemoteModuleGRPCProvider; +import org.skywalking.apm.collector.remote.grpc.service.selector.ForeverFirstSelector; +import org.skywalking.apm.collector.remote.grpc.service.selector.HashCodeSelector; +import org.skywalking.apm.collector.remote.grpc.service.selector.RollingSelector; +import org.skywalking.apm.collector.remote.service.RemoteClient; +import org.skywalking.apm.collector.remote.service.RemoteSenderService; +import org.skywalking.apm.collector.remote.service.Selector; + +/** + * @author peng-yongsheng + */ +public class GRPCRemoteSenderService extends ClusterModuleListener implements RemoteSenderService { + + public static final String PATH = "/" + RemoteModule.NAME + "/" + RemoteModuleGRPCProvider.NAME; + private final GRPCRemoteClientService service; + private List remoteClients; + private final String selfAddress; + private final HashCodeSelector hashCodeSelector; + private final ForeverFirstSelector foreverFirstSelector; + private final RollingSelector rollingSelector; + + @Override public Mode send(int graphId, int nodeId, Data data, Selector selector) { + RemoteClient remoteClient; + switch (selector) { + case HashCode: + remoteClient = hashCodeSelector.select(remoteClients, data); + return sendToRemoteWhenNotSelf(remoteClient, graphId, nodeId, data); + case Rolling: + remoteClient = rollingSelector.select(remoteClients, data); + return sendToRemoteWhenNotSelf(remoteClient, graphId, nodeId, data); + case ForeverFirst: + remoteClient = foreverFirstSelector.select(remoteClients, data); + return sendToRemoteWhenNotSelf(remoteClient, graphId, nodeId, data); + } + throw new UnexpectedException("Selector not match, Just support hash, rolling, forever first selector."); + } + + private Mode sendToRemoteWhenNotSelf(RemoteClient remoteClient, int graphId, int nodeId, Data data) { + if (remoteClient.equals(selfAddress)) { + return Mode.Local; + } else { + remoteClient.send(graphId, nodeId, data); + return Mode.Remote; + } + } + + public GRPCRemoteSenderService(String host, int port) { + this.service = new GRPCRemoteClientService(); + this.remoteClients = new ArrayList<>(); + this.selfAddress = host + ":" + String.valueOf(port); + this.hashCodeSelector = new HashCodeSelector(); + this.foreverFirstSelector = new ForeverFirstSelector(); + this.rollingSelector = new RollingSelector(); + } + + @Override public String path() { + return PATH; + } + + @Override public synchronized void serverJoinNotify(String serverAddress) { + List newRemoteClients = new ArrayList<>(); + newRemoteClients.addAll(remoteClients); + + String host = serverAddress.split(":")[0]; + int port = Integer.parseInt(serverAddress.split(":")[1]); + RemoteClient remoteClient = service.create(host, port); + newRemoteClients.add(remoteClient); + + Collections.sort(newRemoteClients); + + this.remoteClients = newRemoteClients; + } + + @Override public synchronized void serverQuitNotify(String serverAddress) { + List newRemoteClients = new ArrayList<>(); + newRemoteClients.addAll(remoteClients); + + for (int i = newRemoteClients.size() - 1; i >= 0; i--) { + RemoteClient remoteClient = newRemoteClients.get(i); + if (remoteClient.equals(serverAddress)) { + newRemoteClients.remove(i); + } + } + + this.remoteClients = newRemoteClients; + } +} diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java new file mode 100644 index 000000000..dbe08251b --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteSerializeService.java @@ -0,0 +1,53 @@ +/* + * 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.remote.grpc.service; + +import com.google.protobuf.ByteString; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.grpc.proto.RemoteData; +import org.skywalking.apm.collector.remote.service.RemoteSerializeService; + +/** + * @author peng-yongsheng + */ +public class GRPCRemoteSerializeService implements RemoteSerializeService { + + @Override public RemoteData.Builder serialize(Data data) { + RemoteData.Builder builder = RemoteData.newBuilder(); + for (int i = 0; i < data.getDataStringsCount(); i++) { + builder.setDataStrings(i, data.getDataString(i)); + } + for (int i = 0; i < data.getDataIntegersCount(); i++) { + builder.setDataIntegers(i, data.getDataInteger(i)); + } + for (int i = 0; i < data.getDataLongsCount(); i++) { + builder.setDataLongs(i, data.getDataLong(i)); + } + for (int i = 0; i < data.getDataBooleansCount(); i++) { + builder.setDataBooleans(i, data.getDataBoolean(i)); + } + for (int i = 0; i < data.getDataDoublesCount(); i++) { + builder.setDataDoubles(i, data.getDataDouble(i)); + } + for (int i = 0; i < data.getDataBytesCount(); i++) { + builder.setDataBytes(i, ByteString.copyFrom(data.getDataBytes(i))); + } + return builder; + } +} diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteServerService.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteServerService.java new file mode 100644 index 000000000..93ea438ac --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/GRPCRemoteServerService.java @@ -0,0 +1,21 @@ +package org.skywalking.apm.collector.remote.grpc.service; + +import org.skywalking.apm.collector.remote.service.DataReceiver; +import org.skywalking.apm.collector.remote.service.DataReceiverRegisterListener; +import org.skywalking.apm.collector.remote.service.RemoteServerService; + +/** + * @author peng-yongsheng + */ +public class GRPCRemoteServerService implements RemoteServerService { + + private DataReceiverRegisterListener listener; + + public GRPCRemoteServerService(DataReceiverRegisterListener listener) { + this.listener = listener; + } + + @Override public void registerReceiver(DataReceiver receiver) { + listener.setDataReceiver(receiver); + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/ForeverFirstSelector.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/ForeverFirstSelector.java similarity index 68% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/ForeverFirstSelector.java rename to apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/ForeverFirstSelector.java index c74fa9553..73a56959c 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/ForeverFirstSelector.java +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/ForeverFirstSelector.java @@ -16,22 +16,23 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker.selector; +package org.skywalking.apm.collector.remote.grpc.service.selector; import java.util.List; -import org.skywalking.apm.collector.stream.worker.WorkerRef; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.service.RemoteClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ForeverFirstSelector implements WorkerSelector { +public class ForeverFirstSelector implements RemoteClientSelector { private final Logger logger = LoggerFactory.getLogger(ForeverFirstSelector.class); - @Override public WorkerRef select(List members, Object message) { - logger.debug("member size: {}", members.size()); - return members.get(0); + @Override public RemoteClient select(List clients, Data message) { + logger.debug("clients size: {}", clients.size()); + return clients.get(0); } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ClusterWorkerContext.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/HashCodeSelector.java similarity index 62% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ClusterWorkerContext.java rename to apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/HashCodeSelector.java index ba51286b1..0484e12ef 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ClusterWorkerContext.java +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/HashCodeSelector.java @@ -16,24 +16,20 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.remote.grpc.service.selector; -import java.util.ArrayList; import java.util.List; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.service.RemoteClient; /** * @author peng-yongsheng */ -public class ClusterWorkerContext extends WorkerContext { +public class HashCodeSelector implements RemoteClientSelector { - private List providers = new ArrayList<>(); - - public List getProviders() { - return providers; - } - - @Override - public void putProvider(AbstractRemoteWorkerProvider provider) { - providers.add(provider); + @Override public RemoteClient select(List clients, Data message) { + int size = clients.size(); + int selectIndex = Math.abs(message.getHashCode()) % size; + return clients.get(selectIndex); } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageBatchBuilder.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/RemoteClientSelector.java similarity index 72% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageBatchBuilder.java rename to apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/RemoteClientSelector.java index dec0f2b70..20f3e863d 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageBatchBuilder.java +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/RemoteClientSelector.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.remote.grpc.service.selector; import java.util.List; -import java.util.Map; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.service.RemoteClient; /** * @author peng-yongsheng */ -public abstract class StorageBatchBuilder { - public abstract List build(C client, Map lastData); +public interface RemoteClientSelector { + RemoteClient select(List clients, Data message); } diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/RollingSelector.java b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/RollingSelector.java new file mode 100644 index 000000000..e78f0bd8f --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/java/org/skywalking/apm/collector/remote/grpc/service/selector/RollingSelector.java @@ -0,0 +1,38 @@ +/* + * 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.remote.grpc.service.selector; + +import java.util.List; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.service.RemoteClient; + +/** + * @author peng-yongsheng + */ +public class RollingSelector implements RemoteClientSelector { + + private int index = 0; + + @Override public RemoteClient select(List clients, Data message) { + int size = clients.size(); + index++; + int selectIndex = Math.abs(index) % size; + return clients.get(selectIndex); + } +} diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/proto/RemoteCommonService.proto b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/proto/RemoteCommonService.proto new file mode 100644 index 000000000..2f6551075 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/proto/RemoteCommonService.proto @@ -0,0 +1,27 @@ +syntax = "proto3"; + +option java_multiple_files = true; +option java_package = "org.skywalking.apm.collector.remote.grpc.proto"; + +service RemoteCommonService { + rpc call (stream RemoteMessage) returns (Empty) { + } +} + +message RemoteMessage { + int32 graphId = 1; + int32 nodeId = 2; + RemoteData remoteData = 3; +} + +message RemoteData { + repeated string dataStrings = 1; + repeated int64 dataLongs = 2; + repeated double dataDoubles = 3; + repeated int32 dataIntegers = 4; + repeated bytes dataBytes = 5; + repeated bool dataBooleans = 6; +} + +message Empty { +} \ No newline at end of file diff --git a/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-remote/collector-remote-grpc-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..d4b5b7d75 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-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.remote.grpc.RemoteModuleGRPCProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-remote/collector-remote-kafka-provider/pom.xml b/apm-collector/apm-collector-remote/collector-remote-kafka-provider/pom.xml new file mode 100644 index 000000000..0b979ebd8 --- /dev/null +++ b/apm-collector/apm-collector-remote/collector-remote-kafka-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-remote + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-remote-kafka-provider + jar + + + + org.skywalking + collector-remote-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-remote/pom.xml b/apm-collector/apm-collector-remote/pom.xml index 954e97668..41b000e62 100644 --- a/apm-collector/apm-collector-remote/pom.xml +++ b/apm-collector/apm-collector-remote/pom.xml @@ -1,22 +1,4 @@ - - @@ -28,95 +10,33 @@ 4.0.0 apm-collector-remote - jar - - - UTF-8 - 1.4.0 - 4.1.12.Final - 1.6 - + pom + + collector-remote-define + collector-remote-kafka-provider + collector-remote-grpc-provider + - io.grpc - grpc-netty - ${grpc.version} - - - io.netty - netty-codec-http2 - - - io.netty - netty-handler-proxy - - + org.skywalking + apm-collector-core + ${project.version} - io.grpc - grpc-protobuf - ${grpc.version} + org.skywalking + collector-cluster-define + ${project.version} - io.grpc - grpc-stub - ${grpc.version} + org.skywalking + client-component + ${project.version} - io.netty - netty-codec-http2 - ${netty.version} - - - io.netty - netty-handler-proxy - ${netty.version} + org.skywalking + server-component + ${project.version} - - - - - kr.motd.maven - os-maven-plugin - 1.4.1.Final - - - - - org.apache.maven.plugins - maven-resources-plugin - 2.4.3 - - ${project.build.sourceEncoding} - - - - org.xolstice.maven.plugins - protobuf-maven-plugin - 0.5.0 - - - com.google.protobuf:protoc:3.3.0:exe:${os.detected.classifier} - - grpc-java - io.grpc:protoc-gen-grpc-java:1.4.0:exe:${os.detected.classifier} - - - - - - compile - compile-custom - - - - - - - + \ No newline at end of file diff --git a/apm-collector/apm-collector-remote/src/main/proto/RemoteCommonService.proto b/apm-collector/apm-collector-remote/src/main/proto/RemoteCommonService.proto deleted file mode 100644 index b2100424f..000000000 --- a/apm-collector/apm-collector-remote/src/main/proto/RemoteCommonService.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; - -option java_multiple_files = true; -option java_package = "org.skywalking.apm.collector.remote.grpc.proto"; - -service RemoteCommonService { - rpc call (stream RemoteMessage) returns (Empty) { - } -} - -message RemoteMessage { - string workerRole = 1; - RemoteData remoteData = 2; -} - -message RemoteData { - int32 stringCapacity = 1; - int32 longCapacity = 2; - int32 doubleCapacity = 3; - int32 integerCapacity = 4; - int32 byteCapacity = 5; - int32 booleanCapacity = 6; - repeated string dataStrings = 7; - repeated int64 dataLongs = 8; - repeated double dataDoubles = 9; - repeated int32 dataIntegers = 10; - repeated bytes dataBytes = 11; - repeated bool dataBooleans = 12; -} - -message Empty { -} \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-define/pom.xml b/apm-collector/apm-collector-storage/collector-storage-define/pom.xml new file mode 100644 index 000000000..795c8d3e9 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/pom.xml @@ -0,0 +1,32 @@ + + + + + + apm-collector-storage + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-storage-define + jar + diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageException.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageException.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageException.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageException.java index e5ac3967e..efb0cfeef 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageException.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.storage; import org.skywalking.apm.collector.core.CollectorException; @@ -24,6 +24,7 @@ import org.skywalking.apm.collector.core.CollectorException; * @author peng-yongsheng */ public abstract class StorageException extends CollectorException { + public StorageException(String message) { super(message); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageInstallException.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageInstallException.java similarity index 95% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageInstallException.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageInstallException.java index 237a5d048..a25a45f40 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageInstallException.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageInstallException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.storage; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageInstaller.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageInstaller.java similarity index 89% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageInstaller.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageInstaller.java index 924636779..3ae9f63af 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/storage/StorageInstaller.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageInstaller.java @@ -16,11 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.storage; +package org.skywalking.apm.collector.storage; import java.util.List; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.client.Client; +import org.skywalking.apm.collector.core.define.DefineException; +import org.skywalking.apm.collector.core.data.StorageDefineLoader; +import org.skywalking.apm.collector.core.data.TableDefine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageModule.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageModule.java new file mode 100644 index 000000000..b5edc0513 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/StorageModule.java @@ -0,0 +1,132 @@ +/* + * 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.storage; + +import java.util.ArrayList; +import java.util.List; +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformancePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeComponentPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeComponentUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferenceUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameRegisterDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferenceUIDAO; + +/** + * @author peng-yongsheng + */ +public class StorageModule extends Module { + + public static final String NAME = "storage"; + + @Override public String name() { + return NAME; + } + + @Override public Class[] services() { + List classes = new ArrayList<>(); + classes.add(IBatchDAO.class); + + addCacheDAO(classes); + addRegisterDAO(classes); + addPersistenceDAO(classes); + addUiDAO(classes); + + return classes.toArray(new Class[] {}); + } + + private void addCacheDAO(List classes) { + classes.add(IApplicationCacheDAO.class); + classes.add(IInstanceCacheDAO.class); + classes.add(IServiceNameCacheDAO.class); + } + + private void addRegisterDAO(List classes) { + classes.add(IApplicationRegisterDAO.class); + classes.add(IInstanceRegisterDAO.class); + classes.add(IServiceNameRegisterDAO.class); + } + + private void addPersistenceDAO(List classes) { + classes.add(ICpuMetricPersistenceDAO.class); + classes.add(IGCMetricPersistenceDAO.class); + classes.add(IMemoryMetricPersistenceDAO.class); + classes.add(IMemoryPoolMetricPersistenceDAO.class); + + classes.add(IGlobalTracePersistenceDAO.class); + classes.add(IInstPerformancePersistenceDAO.class); + classes.add(INodeComponentPersistenceDAO.class); + classes.add(INodeMappingPersistenceDAO.class); + classes.add(INodeReferencePersistenceDAO.class); + classes.add(ISegmentCostPersistenceDAO.class); + classes.add(ISegmentPersistenceDAO.class); + classes.add(IServiceEntryPersistenceDAO.class); + classes.add(IServiceReferencePersistenceDAO.class); + + classes.add(IInstanceHeartBeatPersistenceDAO.class); + } + + private void addUiDAO(List classes) { + classes.add(IInstanceUIDAO.class); + + classes.add(ICpuMetricUIDAO.class); + classes.add(IGCMetricUIDAO.class); + classes.add(IMemoryMetricUIDAO.class); + classes.add(IMemoryPoolMetricUIDAO.class); + + classes.add(IGlobalTraceUIDAO.class); + classes.add(IInstPerformanceUIDAO.class); + classes.add(INodeComponentUIDAO.class); + classes.add(INodeMappingUIDAO.class); + classes.add(INodeReferenceUIDAO.class); + classes.add(ISegmentCostUIDAO.class); + classes.add(ISegmentUIDAO.class); + classes.add(IServiceEntryUIDAO.class); + classes.add(IServiceReferenceUIDAO.class); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/DAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/AbstractDAO.java similarity index 77% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/DAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/AbstractDAO.java index f3203d71b..91709082c 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/AbstractDAO.java @@ -16,21 +16,21 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.dao; +package org.skywalking.apm.collector.storage.base.dao; -import org.skywalking.apm.collector.core.client.Client; +import org.skywalking.apm.collector.client.Client; /** * @author peng-yongsheng */ -public abstract class DAO { - private C client; +public abstract class AbstractDAO implements DAO { + private final C client; + + public AbstractDAO(C client) { + this.client = client; + } public final C getClient() { return client; } - - public final void setClient(C client) { - this.client = client; - } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleDiscovery.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/DAO.java similarity index 83% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleDiscovery.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/DAO.java index 508ecd0ab..31ad2f621 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleDiscovery.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/DAO.java @@ -16,12 +16,12 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.cluster; +package org.skywalking.apm.collector.storage.base.dao; + +import org.skywalking.apm.collector.core.module.Service; /** * @author peng-yongsheng */ -public interface ClusterModuleDiscovery { - - void discover(); +public interface DAO extends Service { } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/IBatchDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/IBatchDAO.java similarity index 89% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/IBatchDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/IBatchDAO.java index f57aa8f5e..435420dfc 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/IBatchDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/IBatchDAO.java @@ -16,13 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.dao; +package org.skywalking.apm.collector.storage.base.dao; import java.util.List; /** * @author peng-yongsheng */ -public interface IBatchDAO { +public interface IBatchDAO extends DAO { void batchPersistence(List batchCollection); } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Role.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java similarity index 70% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Role.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java index 68d57eb85..8219b5c99 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Role.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/dao/IPersistenceDAO.java @@ -16,19 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.storage.base.dao; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector; +import org.skywalking.apm.collector.core.data.Data; /** * @author peng-yongsheng */ -public interface Role { +public interface IPersistenceDAO extends DAO { + DataImpl get(String id); - String roleName(); + Insert prepareBatchInsert(DataImpl data); - WorkerSelector workerSelector(); - - DataDefine dataDefine(); + Update prepareBatchUpdate(DataImpl data); } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/SqlBuilder.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/sql/SqlBuilder.java similarity index 97% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/SqlBuilder.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/sql/SqlBuilder.java index 5d361537e..6997b57d2 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/SqlBuilder.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/base/sql/SqlBuilder.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2; +package org.skywalking.apm.collector.storage.base.sql; import java.text.MessageFormat; import java.util.List; diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java similarity index 83% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationCacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java index 65449fd93..e96fd999c 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IApplicationCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IApplicationCacheDAO.java @@ -16,12 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.dao; + +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IApplicationCacheDAO { +public interface IApplicationCacheDAO extends DAO { int getApplicationId(String applicationCode); String getApplicationCode(int applicationId); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IApplicationRegisterDAO.java similarity index 74% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IApplicationRegisterDAO.java index 671c762d0..819cd97cd 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/IApplicationDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IApplicationRegisterDAO.java @@ -16,17 +16,18 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.application.dao; +package org.skywalking.apm.collector.storage.dao; -import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine; +import org.skywalking.apm.collector.storage.base.dao.DAO; +import org.skywalking.apm.collector.storage.table.register.Application; /** * @author peng-yongsheng */ -public interface IApplicationDAO { +public interface IApplicationRegisterDAO extends DAO { int getMaxApplicationId(); int getMinApplicationId(); - void save(ApplicationDataDefine.Application application); + void save(Application application); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ICpuMetricPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ICpuMetricPersistenceDAO.java new file mode 100644 index 000000000..102f18a6d --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ICpuMetricPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface ICpuMetricPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ICpuMetricDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ICpuMetricUIDAO.java similarity index 85% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ICpuMetricDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ICpuMetricUIDAO.java index 0f58c7d87..2e61e24af 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ICpuMetricDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ICpuMetricUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonArray; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface ICpuMetricDAO { +public interface ICpuMetricUIDAO extends DAO { int getMetric(int instanceId, long timeBucket); JsonArray getMetric(int instanceId, long startTimeBucket, long endTimeBucket); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGCMetricPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGCMetricPersistenceDAO.java new file mode 100644 index 000000000..b04e1ab98 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGCMetricPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IGCMetricPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGCMetricDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGCMetricUIDAO.java similarity index 90% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGCMetricDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGCMetricUIDAO.java index dd6e187f5..0db27a4b6 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGCMetricDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGCMetricUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonObject; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IGCMetricDAO { +public interface IGCMetricUIDAO extends DAO { GCCount getGCCount(long[] timeBuckets, int instanceId); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGlobalTracePersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGlobalTracePersistenceDAO.java new file mode 100644 index 000000000..e241ad8d3 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGlobalTracePersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IGlobalTracePersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGlobalTraceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGlobalTraceUIDAO.java similarity index 84% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGlobalTraceDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGlobalTraceUIDAO.java index 6e98e8cf4..b83f60ca5 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IGlobalTraceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IGlobalTraceUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import java.util.List; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IGlobalTraceDAO { +public interface IGlobalTraceUIDAO extends DAO { List getGlobalTraceId(String segmentId); List getSegmentIds(String globalTraceId); diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/DAOContainer.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstPerformancePersistenceDAO.java similarity index 70% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/DAOContainer.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstPerformancePersistenceDAO.java index 4d2c9b91e..948e65fd1 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/dao/DAOContainer.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstPerformancePersistenceDAO.java @@ -18,22 +18,11 @@ package org.skywalking.apm.collector.storage.dao; -import java.util.HashMap; -import java.util.Map; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; /** * @author peng-yongsheng */ -public enum DAOContainer { - INSTANCE; - - private Map daos = new HashMap<>(); - - public void put(String interfaceName, DAO dao) { - daos.put(interfaceName, dao); - } - - public DAO get(String interfaceName) { - return daos.get(interfaceName); - } +public interface IInstPerformancePersistenceDAO extends IPersistenceDAO { } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstPerformanceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstPerformanceUIDAO.java similarity index 91% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstPerformanceDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstPerformanceUIDAO.java index c4d134690..afd232c5a 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstPerformanceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstPerformanceUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonArray; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IInstPerformanceDAO { +public interface IInstPerformanceUIDAO extends DAO { InstPerformance get(long[] timeBuckets, int instanceId); int getTpsMetric(int instanceId, long timeBucket); diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleContext.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java similarity index 74% rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleContext.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java index 96e7c4bbf..a744c6631 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleContext.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceCacheDAO.java @@ -16,16 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentserver; +package org.skywalking.apm.collector.storage.dao; -import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public class AgentServerModuleContext extends Context { +public interface IInstanceCacheDAO extends DAO { + int getApplicationId(int instanceId); - public AgentServerModuleContext(String groupName) { - super(groupName); - } + int getInstanceId(int applicationId, String agentUUID); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceHeartBeatPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceHeartBeatPersistenceDAO.java new file mode 100644 index 000000000..5089df5ef --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceHeartBeatPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IInstanceHeartBeatPersistenceDAO extends IPersistenceDAO { +} \ No newline at end of file diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceRegisterDAO.java similarity index 74% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceRegisterDAO.java index 95dd699ef..94c17bf2d 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/IInstanceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceRegisterDAO.java @@ -16,21 +16,20 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.instance.dao; +package org.skywalking.apm.collector.storage.dao; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; +import org.skywalking.apm.collector.storage.base.dao.DAO; +import org.skywalking.apm.collector.storage.table.register.Instance; /** * @author peng-yongsheng */ -public interface IInstanceDAO { - int getInstanceId(int applicationId, String agentUUID); - +public interface IInstanceRegisterDAO extends DAO { int getMaxInstanceId(); int getMinInstanceId(); - void save(InstanceDataDefine.Instance instance); + void save(Instance instance); void updateHeartbeatTime(int instanceId, long heartbeatTime); } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceUIDAO.java similarity index 80% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceUIDAO.java index 483d5111e..9dcdb273c 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IInstanceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IInstanceUIDAO.java @@ -16,25 +16,26 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonArray; import java.util.List; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; +import org.skywalking.apm.collector.storage.base.dao.DAO; +import org.skywalking.apm.collector.storage.table.register.Instance; /** * @author peng-yongsheng */ -public interface IInstanceDAO { +public interface IInstanceUIDAO extends DAO { Long lastHeartBeatTime(); Long instanceLastHeartBeatTime(long applicationInstanceId); JsonArray getApplications(long startTime, long endTime); - InstanceDataDefine.Instance getInstance(int instanceId); + Instance getInstance(int instanceId); - List getInstances(int applicationId, long timeBucket); + List getInstances(int applicationId, long timeBucket); class Application { private final int applicationId; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryMetricPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryMetricPersistenceDAO.java new file mode 100644 index 000000000..5035aa13b --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryMetricPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IMemoryMetricPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IMemoryMetricDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryMetricUIDAO.java similarity index 85% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IMemoryMetricDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryMetricUIDAO.java index 14195d320..5aa15eabd 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IMemoryMetricDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryMetricUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonObject; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IMemoryMetricDAO { +public interface IMemoryMetricUIDAO extends DAO { JsonObject getMetric(int instanceId, long timeBucket, boolean isHeap); JsonObject getMetric(int instanceId, long startTimeBucket, long endTimeBucket, boolean isHeap); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryPoolMetricPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryPoolMetricPersistenceDAO.java new file mode 100644 index 000000000..0e5630327 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryPoolMetricPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IMemoryPoolMetricPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IMemoryPoolMetricDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryPoolMetricUIDAO.java similarity index 85% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IMemoryPoolMetricDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryPoolMetricUIDAO.java index c35bae58e..ef0357008 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IMemoryPoolMetricDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IMemoryPoolMetricUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonObject; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IMemoryPoolMetricDAO { +public interface IMemoryPoolMetricUIDAO extends DAO { JsonObject getMetric(int instanceId, long timeBucket, int poolType); JsonObject getMetric(int instanceId, long startTimeBucket, long endTimeBucket, int poolType); diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeComponentPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeComponentPersistenceDAO.java new file mode 100644 index 000000000..7a5f0562f --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeComponentPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface INodeComponentPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeMappingDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeComponentUIDAO.java similarity index 83% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeMappingDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeComponentUIDAO.java index c05a7563f..f83a519ec 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeMappingDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeComponentUIDAO.java @@ -16,13 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonArray; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface INodeMappingDAO { +public interface INodeComponentUIDAO extends DAO { JsonArray load(long startTime, long endTime); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeMappingPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeMappingPersistenceDAO.java new file mode 100644 index 000000000..22b3eface --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeMappingPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface INodeMappingPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeComponentDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeMappingUIDAO.java similarity index 84% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeComponentDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeMappingUIDAO.java index ef944e89c..06aee5af1 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeComponentDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeMappingUIDAO.java @@ -16,13 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonArray; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface INodeComponentDAO { +public interface INodeMappingUIDAO extends DAO { JsonArray load(long startTime, long endTime); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeReferencePersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeReferencePersistenceDAO.java new file mode 100644 index 000000000..5aaadbb2b --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeReferencePersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface INodeReferencePersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeReferenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeReferenceUIDAO.java similarity index 83% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeReferenceDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeReferenceUIDAO.java index 8237e28d0..eb8dfca2f 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/INodeReferenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/INodeReferenceUIDAO.java @@ -16,13 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonArray; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface INodeReferenceDAO { +public interface INodeReferenceUIDAO extends DAO { JsonArray load(long startTime, long endTime); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentCostPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentCostPersistenceDAO.java new file mode 100644 index 000000000..7819b7566 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentCostPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface ISegmentCostPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentCostDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentCostUIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentCostDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentCostUIDAO.java index 15d7ebf7f..4a045d707 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentCostDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentCostUIDAO.java @@ -16,15 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonObject; import java.util.List; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface ISegmentCostDAO { +public interface ISegmentCostUIDAO extends DAO { JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName, Error error, int applicationId, List segmentIds, int limit, int from, Sort sort); diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigParseException.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentPersistenceDAO.java similarity index 71% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigParseException.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentPersistenceDAO.java index f5293b891..5d280bd02 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/ConfigParseException.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentPersistenceDAO.java @@ -16,18 +16,13 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.config; +package org.skywalking.apm.collector.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; /** * @author peng-yongsheng */ -public class ConfigParseException extends ConfigException { - - public ConfigParseException(String message) { - super(message); - } - - public ConfigParseException(String message, Throwable cause) { - super(message, cause); - } +public interface ISegmentPersistenceDAO extends IPersistenceDAO { } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentUIDAO.java similarity index 84% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentUIDAO.java index 6bd9b6ea5..038200b74 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ISegmentDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/ISegmentUIDAO.java @@ -16,13 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; +import org.skywalking.apm.collector.storage.base.dao.DAO; import org.skywalking.apm.network.proto.TraceSegmentObject; /** * @author peng-yongsheng */ -public interface ISegmentDAO { +public interface ISegmentUIDAO extends DAO { TraceSegmentObject load(String segmentId); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceEntryPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceEntryPersistenceDAO.java new file mode 100644 index 000000000..9691dc400 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceEntryPersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IServiceEntryPersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceEntryDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceEntryUIDAO.java similarity index 84% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceEntryDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceEntryUIDAO.java index 7b0926cab..adfc3a738 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceEntryDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceEntryUIDAO.java @@ -16,13 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonObject; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IServiceEntryDAO { +public interface IServiceEntryUIDAO extends DAO { JsonObject load(int applicationId, String entryServiceName, long startTime, long endTime, int from, int size); } diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceNameCacheDAO.java similarity index 84% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameCacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceNameCacheDAO.java index 13aa62010..162909c40 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/IServiceNameCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceNameCacheDAO.java @@ -16,12 +16,14 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.dao; + +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IServiceNameCacheDAO { +public interface IServiceNameCacheDAO extends DAO { String getServiceName(int serviceId); int getServiceId(int applicationId, String serviceName); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceNameRegisterDAO.java similarity index 74% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceNameRegisterDAO.java index d3bb8bf7c..89d7f6537 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/IServiceNameDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceNameRegisterDAO.java @@ -16,17 +16,18 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.servicename.dao; +package org.skywalking.apm.collector.storage.dao; -import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine; +import org.skywalking.apm.collector.storage.base.dao.DAO; +import org.skywalking.apm.collector.storage.table.register.ServiceName; /** * @author peng-yongsheng */ -public interface IServiceNameDAO { +public interface IServiceNameRegisterDAO extends DAO { int getMaxServiceId(); int getMinServiceId(); - void save(ServiceNameDataDefine.ServiceName serviceName); + void save(ServiceName serviceName); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceReferencePersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceReferencePersistenceDAO.java new file mode 100644 index 000000000..8a088ae7a --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceReferencePersistenceDAO.java @@ -0,0 +1,28 @@ +/* + * 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.storage.dao; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; + +/** + * @author peng-yongsheng + */ +public interface IServiceReferencePersistenceDAO extends IPersistenceDAO { +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceReferenceUIDAO.java similarity index 84% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceReferenceUIDAO.java index bd064745a..de4569388 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/IServiceReferenceDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/dao/IServiceReferenceUIDAO.java @@ -16,14 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.dao; import com.google.gson.JsonObject; import java.util.Map; +import org.skywalking.apm.collector.storage.base.dao.DAO; /** * @author peng-yongsheng */ -public interface IServiceReferenceDAO { +public interface IServiceReferenceUIDAO extends DAO { Map load(int entryServiceId, long startTime, long endTime); } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/global/GlobalTrace.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/global/GlobalTrace.java new file mode 100644 index 000000000..bc9004418 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/global/GlobalTrace.java @@ -0,0 +1,74 @@ +/* + * 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.storage.table.global; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class GlobalTrace extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(GlobalTraceTable.COLUMN_ID, new NonOperation()), + new Column(GlobalTraceTable.COLUMN_SEGMENT_ID, new CoverOperation()), + new Column(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, new CoverOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(GlobalTraceTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public GlobalTrace(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public String getSegmentId() { + return getDataString(1); + } + + public void setSegmentId(String segmentId) { + setDataString(1, segmentId); + } + + public String getGlobalTraceId() { + return getDataString(2); + } + + public void setGlobalTraceId(String globalTraceId) { + setDataString(2, globalTraceId); + } + + public Long getTimeBucket() { + return getDataLong(0); + } + + public void setTimeBucket(long timeBucket) { + setDataLong(0, timeBucket); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/global/GlobalTraceTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/global/GlobalTraceTable.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/global/GlobalTraceTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/global/GlobalTraceTable.java index 0bf92e6b5..75c6aaff2 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/global/GlobalTraceTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/global/GlobalTraceTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.global; +package org.skywalking.apm.collector.storage.table.global; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/instance/InstPerformance.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/instance/InstPerformance.java new file mode 100644 index 000000000..5c2f29561 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/instance/InstPerformance.java @@ -0,0 +1,95 @@ +/* + * 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.storage.table.instance; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.AddOperation; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class InstPerformance extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(InstPerformanceTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(InstPerformanceTable.COLUMN_COST_TOTAL, new AddOperation()), + new Column(InstPerformanceTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + + private static final Column[] DOUBLE_COLUMNS = {}; + + private static final Column[] INTEGER_COLUMNS = { + new Column(InstPerformanceTable.COLUMN_APPLICATION_ID, new CoverOperation()), + new Column(InstPerformanceTable.COLUMN_INSTANCE_ID, new CoverOperation()), + new Column(InstPerformanceTable.COLUMN_CALLS, new AddOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public InstPerformance(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public Long getCostTotal() { + return getDataLong(0); + } + + public void setCostTotal(Long costTotal) { + setDataLong(0, costTotal); + } + + public Long getTimeBucket() { + return getDataLong(1); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(1, timeBucket); + } + + public Integer getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(Integer applicationId) { + setDataInteger(0, applicationId); + } + + public Integer getInstanceId() { + return getDataInteger(1); + } + + public void setInstanceId(Integer instanceId) { + setDataInteger(1, instanceId); + } + + public Integer getCalls() { + return getDataInteger(2); + } + + public void setCalls(Integer calls) { + setDataInteger(2, calls); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/instance/InstPerformanceTable.java similarity index 89% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/instance/InstPerformanceTable.java index 82b8c5604..b306a1505 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/instance/InstPerformanceTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.instance; +package org.skywalking.apm.collector.storage.table.instance; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/CpuMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/CpuMetric.java new file mode 100644 index 000000000..7abcf5a76 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/CpuMetric.java @@ -0,0 +1,78 @@ +/* + * 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.storage.table.jvm; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.AddOperation; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class CpuMetric extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(CpuMetricTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(CpuMetricTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + + private static final Column[] DOUBLE_COLUMNS = { + new Column(CpuMetricTable.COLUMN_USAGE_PERCENT, new AddOperation()), + }; + + private static final Column[] INTEGER_COLUMNS = { + new Column(CpuMetricTable.COLUMN_INSTANCE_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public CpuMetric(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public Integer getInstanceId() { + return getDataInteger(0); + } + + public void setInstanceId(Integer instanceId) { + setDataInteger(0, instanceId); + } + + public Double getUsagePercent() { + return getDataDouble(0); + } + + public void setUsagePercent(Double usagePercent) { + setDataDouble(0, usagePercent); + } + + public Long getTimeBucket() { + return getDataLong(0); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(0, timeBucket); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/CpuMetricTable.java similarity index 89% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/CpuMetricTable.java index 054e328f2..bb0a6c072 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/CpuMetricTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.jvm; +package org.skywalking.apm.collector.storage.table.jvm; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/GCMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/GCMetric.java new file mode 100644 index 000000000..3744ee0a7 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/GCMetric.java @@ -0,0 +1,95 @@ +/* + * 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.storage.table.jvm; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class GCMetric extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(GCMetricTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(GCMetricTable.COLUMN_COUNT, new CoverOperation()), + new Column(GCMetricTable.COLUMN_TIME, new CoverOperation()), + new Column(GCMetricTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + + private static final Column[] DOUBLE_COLUMNS = { + }; + + private static final Column[] INTEGER_COLUMNS = { + new Column(GCMetricTable.COLUMN_INSTANCE_ID, new CoverOperation()), + new Column(GCMetricTable.COLUMN_PHRASE, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public GCMetric(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public Long getCount() { + return getDataLong(0); + } + + public void setCount(Long count) { + setDataLong(0, count); + } + + public Long getTime() { + return getDataLong(1); + } + + public void setTime(Long time) { + setDataLong(1, time); + } + + public Long getTimeBucket() { + return getDataLong(2); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(2, timeBucket); + } + + public Integer getInstanceId() { + return getDataInteger(0); + } + + public void setInstanceId(Integer instanceId) { + setDataInteger(0, instanceId); + } + + public Integer getPhrase() { + return getDataInteger(1); + } + + public void setPhrase(Integer phrase) { + setDataInteger(1, phrase); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java similarity index 89% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java index 2f47ba03d..6f4c8ea0c 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/GCMetricTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.jvm; +package org.skywalking.apm.collector.storage.table.jvm; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java new file mode 100644 index 000000000..63579f27f --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryMetric.java @@ -0,0 +1,114 @@ +/* + * 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.storage.table.jvm; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class MemoryMetric extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(MemoryMetricTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(MemoryMetricTable.COLUMN_INIT, new CoverOperation()), + new Column(MemoryMetricTable.COLUMN_MAX, new CoverOperation()), + new Column(MemoryMetricTable.COLUMN_USED, new CoverOperation()), + new Column(MemoryMetricTable.COLUMN_COMMITTED, new CoverOperation()), + new Column(MemoryMetricTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + + private static final Column[] DOUBLE_COLUMNS = { + }; + + private static final Column[] INTEGER_COLUMNS = { + new Column(MemoryMetricTable.COLUMN_INSTANCE_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = { + new Column(MemoryMetricTable.COLUMN_IS_HEAP, new CoverOperation()), + }; + private static final Column[] BYTE_COLUMNS = {}; + + public MemoryMetric(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public Long getInit() { + return getDataLong(0); + } + + public void setInit(Long init) { + setDataLong(0, init); + } + + public Long getMax() { + return getDataLong(1); + } + + public void setMax(Long max) { + setDataLong(1, max); + } + + public Long getUsed() { + return getDataLong(2); + } + + public void setUsed(Long used) { + setDataLong(2, used); + } + + public Long getCommitted() { + return getDataLong(3); + } + + public void setCommitted(Long committed) { + setDataLong(3, committed); + } + + public Long getTimeBucket() { + return getDataLong(4); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(4, timeBucket); + } + + public Boolean getIsHeap() { + return getDataBoolean(0); + } + + public void setIsHeap(Boolean isHeap) { + setDataBoolean(0, isHeap); + } + + public Integer getInstanceId() { + return getDataInteger(0); + } + + public void setInstanceId(Integer instanceId) { + setDataInteger(0, instanceId); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryMetricTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java similarity index 84% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryMetricTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java index 996c16c81..88c35a953 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryMetricTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryMetricTable.java @@ -16,16 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.jvm; +package org.skywalking.apm.collector.storage.table.jvm; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng */ public class MemoryMetricTable extends CommonTable { public static final String TABLE = "memory_metric"; - public static final String COLUMN_APPLICATION_INSTANCE_ID = "application_instance_id"; + public static final String COLUMN_INSTANCE_ID = "instance_id"; public static final String COLUMN_IS_HEAP = "is_heap"; public static final String COLUMN_INIT = "init"; public static final String COLUMN_MAX = "max"; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryPoolMetric.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryPoolMetric.java new file mode 100644 index 000000000..77cca5180 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryPoolMetric.java @@ -0,0 +1,113 @@ +/* + * 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.storage.table.jvm; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class MemoryPoolMetric extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(MemoryPoolMetricTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(MemoryPoolMetricTable.COLUMN_INIT, new CoverOperation()), + new Column(MemoryPoolMetricTable.COLUMN_MAX, new CoverOperation()), + new Column(MemoryPoolMetricTable.COLUMN_USED, new CoverOperation()), + new Column(MemoryPoolMetricTable.COLUMN_COMMITTED, new CoverOperation()), + new Column(MemoryPoolMetricTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + + private static final Column[] DOUBLE_COLUMNS = { + }; + + private static final Column[] INTEGER_COLUMNS = { + new Column(MemoryPoolMetricTable.COLUMN_INSTANCE_ID, new CoverOperation()), + new Column(MemoryPoolMetricTable.COLUMN_POOL_TYPE, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public MemoryPoolMetric(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public Long getInit() { + return getDataLong(0); + } + + public void setInit(Long init) { + setDataLong(0, init); + } + + public Long getMax() { + return getDataLong(1); + } + + public void setMax(Long max) { + setDataLong(1, max); + } + + public Long getUsed() { + return getDataLong(2); + } + + public void setUsed(Long used) { + setDataLong(2, used); + } + + public Long getCommitted() { + return getDataLong(3); + } + + public void setCommitted(Long committed) { + setDataLong(3, committed); + } + + public Long getTimeBucket() { + return getDataLong(4); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(4, timeBucket); + } + + public Integer getInstanceId() { + return getDataInteger(0); + } + + public void setInstanceId(Integer instanceId) { + setDataInteger(0, instanceId); + } + + public Integer getPoolType() { + return getDataInteger(1); + } + + public void setPoolType(Integer poolType) { + setDataInteger(1, poolType); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryPoolMetricTable.java similarity index 90% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryPoolMetricTable.java index 9382e526b..7409aa71e 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/jvm/MemoryPoolMetricTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.jvm; +package org.skywalking.apm.collector.storage.table.jvm; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeComponent.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeComponent.java new file mode 100644 index 000000000..94b696e12 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeComponent.java @@ -0,0 +1,74 @@ +/* + * 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.storage.table.node; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class NodeComponent extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(NodeComponentTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(NodeComponentTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(NodeComponentTable.COLUMN_COMPONENT_ID, new CoverOperation()), + new Column(NodeComponentTable.COLUMN_PEER_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public NodeComponent(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public Long getTimeBucket() { + return getDataLong(0); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(0, timeBucket); + } + + public Integer getComponentId() { + return getDataInteger(0); + } + + public void setComponentId(Integer componentId) { + setDataInteger(0, componentId); + } + + public Integer getPeerId() { + return getDataInteger(1); + } + + public void setPeerId(Integer peerId) { + setDataInteger(1, peerId); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeComponentTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeComponentTable.java similarity index 79% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeComponentTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeComponentTable.java index cfd80b4b7..79e73c627 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeComponentTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeComponentTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.node; +package org.skywalking.apm.collector.storage.table.node; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng @@ -26,7 +26,5 @@ import org.skywalking.apm.collector.storage.define.CommonTable; public class NodeComponentTable extends CommonTable { public static final String TABLE = "node_component"; public static final String COLUMN_COMPONENT_ID = "component_id"; - public static final String COLUMN_COMPONENT_NAME = "component_name"; - public static final String COLUMN_PEER = "peer"; public static final String COLUMN_PEER_ID = "peer_id"; } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeMapping.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeMapping.java new file mode 100644 index 000000000..64a3df40b --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeMapping.java @@ -0,0 +1,74 @@ +/* + * 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.storage.table.node; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class NodeMapping extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(NodeMappingTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(NodeMappingTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(NodeMappingTable.COLUMN_APPLICATION_ID, new CoverOperation()), + new Column(NodeMappingTable.COLUMN_ADDRESS_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public NodeMapping(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public int getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(int applicationId) { + setDataInteger(0, applicationId); + } + + public int getAddressId() { + return getDataInteger(1); + } + + public void setAddressId(int addressId) { + setDataInteger(1, addressId); + } + + public long getTimeBucket() { + return getDataLong(0); + } + + public void setTimeBucket(long timeBucket) { + setDataLong(0, timeBucket); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeMappingTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeMappingTable.java similarity index 84% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeMappingTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeMappingTable.java index 4af90a8a5..4603f7937 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeMappingTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/node/NodeMappingTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.node; +package org.skywalking.apm.collector.storage.table.node; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng @@ -27,5 +27,4 @@ public class NodeMappingTable extends CommonTable { public static final String TABLE = "node_mapping"; public static final String COLUMN_APPLICATION_ID = "application_id"; public static final String COLUMN_ADDRESS_ID = "address_id"; - public static final String COLUMN_ADDRESS = "address"; } diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/noderef/NodeReference.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/noderef/NodeReference.java new file mode 100644 index 000000000..171aafcb6 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/noderef/NodeReference.java @@ -0,0 +1,134 @@ +/* + * 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.storage.table.noderef; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.AddOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class NodeReference extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(NodeReferenceTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(NodeReferenceTable.COLUMN_TIME_BUCKET, new NonOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, new NonOperation()), + new Column(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, new NonOperation()), + new Column(NodeReferenceTable.COLUMN_S1_LTE, new AddOperation()), + new Column(NodeReferenceTable.COLUMN_S3_LTE, new AddOperation()), + new Column(NodeReferenceTable.COLUMN_S5_LTE, new AddOperation()), + new Column(NodeReferenceTable.COLUMN_S5_GT, new AddOperation()), + new Column(NodeReferenceTable.COLUMN_SUMMARY, new AddOperation()), + new Column(NodeReferenceTable.COLUMN_ERROR, new AddOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public NodeReference(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + setS1Lte(0); + setS3Lte(0); + setS5Lte(0); + setS5Gt(0); + setError(0); + setSummary(0); + } + + public Long getTimeBucket() { + return getDataLong(0); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(0, timeBucket); + } + + public Integer getFrontApplicationId() { + return getDataInteger(0); + } + + public void setFrontApplicationId(Integer frontApplicationId) { + setDataInteger(0, frontApplicationId); + } + + public Integer getBehindApplicationId() { + return getDataInteger(1); + } + + public void setBehindApplicationId(Integer behindApplicationId) { + setDataInteger(1, behindApplicationId); + } + + public Integer getS1Lte() { + return getDataInteger(2); + } + + public void setS1Lte(Integer s1Lte) { + setDataInteger(2, s1Lte); + } + + public Integer getS3Lte() { + return getDataInteger(3); + } + + public void setS3Lte(Integer s3Lte) { + setDataInteger(3, s3Lte); + } + + public Integer getS5Lte() { + return getDataInteger(4); + } + + public void setS5Lte(Integer s5Lte) { + setDataInteger(4, s5Lte); + } + + public Integer getS5Gt() { + return getDataInteger(5); + } + + public void setS5Gt(Integer s5Gt) { + setDataInteger(5, s5Gt); + } + + public Integer getSummary() { + return getDataInteger(6); + } + + public void setSummary(Integer summary) { + setDataInteger(6, summary); + } + + public Integer getError() { + return getDataInteger(7); + } + + public void setError(Integer error) { + setDataInteger(7, error); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/noderef/NodeReferenceTable.java similarity index 87% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/noderef/NodeReferenceTable.java index 8ea1eb782..aa5e31c5e 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/noderef/NodeReferenceTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.noderef; +package org.skywalking.apm.collector.storage.table.noderef; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng @@ -27,7 +27,6 @@ public class NodeReferenceTable extends CommonTable { public static final String TABLE = "node_reference"; public static final String COLUMN_FRONT_APPLICATION_ID = "front_application_id"; public static final String COLUMN_BEHIND_APPLICATION_ID = "behind_application_id"; - public static final String COLUMN_BEHIND_PEER = "behind_peer"; public static final String COLUMN_S1_LTE = "s1_lte"; public static final String COLUMN_S3_LTE = "s3_lte"; public static final String COLUMN_S5_LTE = "s5_lte"; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/Application.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/Application.java new file mode 100644 index 000000000..e27d75753 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/Application.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.storage.table.register; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class Application extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(ApplicationTable.COLUMN_ID, new NonOperation()), + new Column(ApplicationTable.COLUMN_APPLICATION_CODE, new CoverOperation()), + }; + + private static final Column[] LONG_COLUMNS = {}; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(ApplicationTable.COLUMN_APPLICATION_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public Application(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public String getApplicationCode() { + return getDataString(1); + } + + public void setApplicationCode(String applicationCode) { + setDataString(1, applicationCode); + } + + public int getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(int applicationId) { + setDataInteger(0, applicationId); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ApplicationTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ApplicationTable.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ApplicationTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ApplicationTable.java index 6168451b3..5de17c701 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ApplicationTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ApplicationTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.register; +package org.skywalking.apm.collector.storage.table.register; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/Instance.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/Instance.java new file mode 100644 index 000000000..d6691f253 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/Instance.java @@ -0,0 +1,105 @@ +/* + * 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.storage.table.register; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class Instance extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(InstanceTable.COLUMN_ID, new NonOperation()), + new Column(InstanceTable.COLUMN_AGENT_UUID, new CoverOperation()), + new Column(InstanceTable.COLUMN_OS_INFO, new CoverOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(InstanceTable.COLUMN_REGISTER_TIME, new CoverOperation()), + new Column(InstanceTable.COLUMN_HEARTBEAT_TIME, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(InstanceTable.COLUMN_APPLICATION_ID, new CoverOperation()), + new Column(InstanceTable.COLUMN_INSTANCE_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public Instance(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public String getId() { + return getDataString(0); + } + + public int getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(Integer applicationId) { + setDataInteger(0, applicationId); + } + + public String getAgentUUID() { + return getDataString(1); + } + + public void setAgentUUID(String agentUUID) { + setDataString(1, agentUUID); + } + + public long getRegisterTime() { + return getDataLong(0); + } + + public void setRegisterTime(Long registerTime) { + setDataLong(0, registerTime); + } + + public int getInstanceId() { + return getDataInteger(1); + } + + public void setInstanceId(Integer instanceId) { + setDataInteger(1, instanceId); + } + + public long getHeartBeatTime() { + return getDataLong(1); + } + + public void setHeartBeatTime(Long heartBeatTime) { + setDataLong(1, heartBeatTime); + } + + public String getOsInfo() { + return getDataString(2); + } + + public void setOsInfo(String osInfo) { + setDataString(2, osInfo); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/InstanceTable.java similarity index 90% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/InstanceTable.java index a38d4c068..0c62871f3 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/InstanceTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.register; +package org.skywalking.apm.collector.storage.table.register; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ServiceName.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ServiceName.java new file mode 100644 index 000000000..eef835536 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ServiceName.java @@ -0,0 +1,73 @@ +/* + * 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.storage.table.register; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class ServiceName extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(ServiceNameTable.COLUMN_ID, new NonOperation()), + new Column(ServiceNameTable.COLUMN_SERVICE_NAME, new CoverOperation()), + }; + + private static final Column[] LONG_COLUMNS = {}; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(ServiceNameTable.COLUMN_APPLICATION_ID, new CoverOperation()), + new Column(ServiceNameTable.COLUMN_SERVICE_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public ServiceName(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public String getServiceName() { + return getDataString(1); + } + + public void setServiceName(String serviceName) { + setDataString(1, serviceName); + } + + public int getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(int applicationId) { + setDataInteger(0, applicationId); + } + + public int getServiceId() { + return getDataInteger(1); + } + + public void setServiceId(int serviceId) { + setDataInteger(1, serviceId); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ServiceNameTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ServiceNameTable.java similarity index 89% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ServiceNameTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ServiceNameTable.java index 85ba19b2a..ec32d1a2e 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ServiceNameTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/register/ServiceNameTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.register; +package org.skywalking.apm.collector.storage.table.register; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/Segment.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/Segment.java new file mode 100644 index 000000000..3c362359b --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/Segment.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.storage.table.segment; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class Segment extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(SegmentTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(SegmentTable.COLUMN_TIME_BUCKET, new NonOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = { + new Column(SegmentTable.COLUMN_DATA_BINARY, new CoverOperation()), + }; + + public Segment(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public byte[] getDataBinary() { + return getDataBytes(0); + } + + public void setDataBinary(byte[] dataBinary) { + setDataBytes(0, dataBinary); + } + + public long getTimeBucket() { + return getDataLong(0); + } + + public void setTimeBucket(long timeBucket) { + setDataLong(0, timeBucket); + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentCost.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentCost.java new file mode 100644 index 000000000..25c7d6044 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentCost.java @@ -0,0 +1,120 @@ +/* + * 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.storage.table.segment; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class SegmentCost extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(SegmentCostTable.COLUMN_ID, new NonOperation()), + new Column(SegmentCostTable.COLUMN_SEGMENT_ID, new CoverOperation()), + new Column(SegmentCostTable.COLUMN_SERVICE_NAME, new CoverOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(SegmentCostTable.COLUMN_COST, new CoverOperation()), + new Column(SegmentCostTable.COLUMN_START_TIME, new CoverOperation()), + new Column(SegmentCostTable.COLUMN_END_TIME, new CoverOperation()), + new Column(SegmentCostTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(SegmentCostTable.COLUMN_APPLICATION_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = { + new Column(SegmentCostTable.COLUMN_IS_ERROR, new CoverOperation()), + }; + private static final Column[] BYTE_COLUMNS = {}; + + public SegmentCost(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public String getSegmentId() { + return getDataString(1); + } + + public void setSegmentId(String segmentId) { + setDataString(1, segmentId); + } + + public String getServiceName() { + return getDataString(2); + } + + public void setServiceName(String serviceName) { + setDataString(2, serviceName); + } + + public Long getCost() { + return getDataLong(0); + } + + public void setCost(Long cost) { + setDataLong(0, cost); + } + + public Long getStartTime() { + return getDataLong(1); + } + + public void setStartTime(Long startTime) { + setDataLong(1, startTime); + } + + public Long getEndTime() { + return getDataLong(2); + } + + public void setEndTime(Long endTime) { + setDataLong(2, endTime); + } + + public Long getTimeBucket() { + return getDataLong(3); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(3, timeBucket); + } + + public Integer getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(Integer applicationId) { + setDataInteger(0, applicationId); + } + + public Boolean getIsError() { + return getDataBoolean(0); + } + + public void setIsError(Boolean isError) { + setDataBoolean(0, isError); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentCostTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentCostTable.java similarity index 91% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentCostTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentCostTable.java index 8ad71576c..8ecabffc8 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentCostTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentCostTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.segment; +package org.skywalking.apm.collector.storage.table.segment; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentTable.java similarity index 87% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentTable.java index 6066c9506..bdbc667d4 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/segment/SegmentTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.segment; +package org.skywalking.apm.collector.storage.table.segment; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/service/ServiceEntry.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/service/ServiceEntry.java new file mode 100644 index 000000000..ac2b5bef3 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/service/ServiceEntry.java @@ -0,0 +1,92 @@ +/* + * 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.storage.table.service; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class ServiceEntry extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(ServiceEntryTable.COLUMN_ID, new NonOperation()), + new Column(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, new CoverOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(ServiceEntryTable.COLUMN_REGISTER_TIME, new NonOperation()), + new Column(ServiceEntryTable.COLUMN_NEWEST_TIME, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(ServiceEntryTable.COLUMN_APPLICATION_ID, new CoverOperation()), + new Column(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, new CoverOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public ServiceEntry(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + } + + public String getEntryServiceName() { + return getDataString(1); + } + + public void setEntryServiceName(String entryServiceName) { + setDataString(1, entryServiceName); + } + + public Long getRegisterTime() { + return getDataLong(0); + } + + public void setRegisterTime(Long registerTime) { + setDataLong(0, registerTime); + } + + public Long getNewestTime() { + return getDataLong(1); + } + + public void setNewestTime(Long newestTime) { + setDataLong(1, newestTime); + } + + public Integer getApplicationId() { + return getDataInteger(0); + } + + public void setApplicationId(Integer applicationId) { + setDataInteger(0, applicationId); + } + + public Integer getEntryServiceId() { + return getDataInteger(1); + } + + public void setEntryServiceId(Integer entryServiceId) { + setDataInteger(1, entryServiceId); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/service/ServiceEntryTable.java similarity index 90% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/service/ServiceEntryTable.java index 959bad634..cc03520d0 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/service/ServiceEntryTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.service; +package org.skywalking.apm.collector.storage.table.service; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/serviceref/ServiceReference.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/serviceref/ServiceReference.java new file mode 100644 index 000000000..ef943f802 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/serviceref/ServiceReference.java @@ -0,0 +1,154 @@ +/* + * 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.storage.table.serviceref; + +import org.skywalking.apm.collector.core.data.Column; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.data.operator.AddOperation; +import org.skywalking.apm.collector.core.data.operator.CoverOperation; +import org.skywalking.apm.collector.core.data.operator.NonOperation; + +/** + * @author peng-yongsheng + */ +public class ServiceReference extends Data { + + private static final Column[] STRING_COLUMNS = { + new Column(ServiceReferenceTable.COLUMN_ID, new NonOperation()), + }; + + private static final Column[] LONG_COLUMNS = { + new Column(ServiceReferenceTable.COLUMN_S1_LTE, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_S3_LTE, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_S5_LTE, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_S5_GT, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_SUMMARY, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_ERROR, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_COST_SUMMARY, new AddOperation()), + new Column(ServiceReferenceTable.COLUMN_TIME_BUCKET, new CoverOperation()), + }; + private static final Column[] DOUBLE_COLUMNS = {}; + private static final Column[] INTEGER_COLUMNS = { + new Column(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, new NonOperation()), + new Column(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, new NonOperation()), + new Column(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, new NonOperation()), + }; + + private static final Column[] BOOLEAN_COLUMNS = {}; + private static final Column[] BYTE_COLUMNS = {}; + + public ServiceReference(String id) { + super(id, STRING_COLUMNS, LONG_COLUMNS, DOUBLE_COLUMNS, INTEGER_COLUMNS, BOOLEAN_COLUMNS, BYTE_COLUMNS); + setS1Lte(0L); + setS3Lte(0L); + setS5Lte(0L); + setS5Gt(0L); + setError(0L); + setSummary(0L); + setCostSummary(0L); + } + + public Integer getEntryServiceId() { + return getDataInteger(0); + } + + public void setEntryServiceId(Integer entryServiceId) { + setDataInteger(0, entryServiceId); + } + + public Integer getFrontServiceId() { + return getDataInteger(1); + } + + public void setFrontServiceId(Integer frontServiceId) { + setDataInteger(1, frontServiceId); + } + + public Integer getBehindServiceId() { + return getDataInteger(2); + } + + public void setBehindServiceId(Integer behindServiceId) { + setDataInteger(2, behindServiceId); + } + + public Long getS1Lte() { + return getDataLong(0); + } + + public void setS1Lte(Long s1Lte) { + setDataLong(0, s1Lte); + } + + public Long getS3Lte() { + return getDataLong(1); + } + + public void setS3Lte(Long s3Lte) { + setDataLong(1, s3Lte); + } + + public Long getS5Lte() { + return getDataLong(2); + } + + public void setS5Lte(Long s5Lte) { + setDataLong(2, s5Lte); + } + + public Long getS5Gt() { + return getDataLong(3); + } + + public void setS5Gt(Long s5Gt) { + setDataLong(3, s5Gt); + } + + public Long getSummary() { + return getDataLong(4); + } + + public void setSummary(Long summary) { + setDataLong(4, summary); + } + + public Long getError() { + return getDataLong(5); + } + + public void setError(Long error) { + setDataLong(5, error); + } + + public Long getCostSummary() { + return getDataLong(6); + } + + public void setCostSummary(Long costSummary) { + setDataLong(6, costSummary); + } + + public Long getTimeBucket() { + return getDataLong(7); + } + + public void setTimeBucket(Long timeBucket) { + setDataLong(7, timeBucket); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceTable.java b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/serviceref/ServiceReferenceTable.java similarity index 80% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceTable.java rename to apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/serviceref/ServiceReferenceTable.java index 4a4953462..8d8b2704b 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceTable.java +++ b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/skywalking/apm/collector/storage/table/serviceref/ServiceReferenceTable.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.define.serviceref; +package org.skywalking.apm.collector.storage.table.serviceref; -import org.skywalking.apm.collector.storage.define.CommonTable; +import org.skywalking.apm.collector.core.data.CommonTable; /** * @author peng-yongsheng @@ -26,11 +26,8 @@ import org.skywalking.apm.collector.storage.define.CommonTable; public class ServiceReferenceTable extends CommonTable { public static final String TABLE = "service_reference"; public static final String COLUMN_ENTRY_SERVICE_ID = "entry_service_id"; - public static final String COLUMN_ENTRY_SERVICE_NAME = "entry_service_name"; public static final String COLUMN_FRONT_SERVICE_ID = "front_service_id"; - public static final String COLUMN_FRONT_SERVICE_NAME = "front_service_name"; public static final String COLUMN_BEHIND_SERVICE_ID = "behind_service_id"; - public static final String COLUMN_BEHIND_SERVICE_NAME = "behind_service_name"; public static final String COLUMN_S1_LTE = "s1_lte"; public static final String COLUMN_S3_LTE = "s3_lte"; public static final String COLUMN_S5_LTE = "s5_lte"; diff --git a/apm-collector/apm-collector-storage/collector-storage-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-storage/collector-storage-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..16904e1dd --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-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.storage.StorageModule \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/pom.xml b/apm-collector/apm-collector-storage/collector-storage-es-provider/pom.xml new file mode 100644 index 000000000..ef4dcb10f --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-storage + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-storage-es-provider + jar + + + + org.skywalking + collector-storage-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java new file mode 100644 index 000000000..43e0e7c0e --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java @@ -0,0 +1,209 @@ +/* + * 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.storage.es; + +import java.util.Properties; +import org.skywalking.apm.collector.client.ClientException; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +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.storage.StorageException; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformancePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeComponentPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeComponentUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferenceUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameRegisterDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferenceUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.BatchEsDAO; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchStorageInstaller; +import org.skywalking.apm.collector.storage.es.dao.ApplicationEsCacheDAO; +import org.skywalking.apm.collector.storage.es.dao.ApplicationEsRegisterDAO; +import org.skywalking.apm.collector.storage.es.dao.CpuMetricEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.CpuMetricEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.GCMetricEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.GCMetricEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.GlobalTraceEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.GlobalTraceEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.InstPerformanceEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.InstPerformanceEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.InstanceEsCacheDAO; +import org.skywalking.apm.collector.storage.es.dao.InstanceEsRegisterDAO; +import org.skywalking.apm.collector.storage.es.dao.InstanceEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.InstanceHeartBeatEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.MemoryMetricEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.MemoryMetricEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.MemoryPoolMetricEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.MemoryPoolMetricEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.NodeComponentEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.NodeComponentEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.NodeMappingEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.NodeMappingEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.NodeReferenceEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.NodeReferenceEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.SegmentCostEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.SegmentCostEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.SegmentEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.SegmentEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.ServiceEntryEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.ServiceEntryEsUIDAO; +import org.skywalking.apm.collector.storage.es.dao.ServiceNameEsCacheDAO; +import org.skywalking.apm.collector.storage.es.dao.ServiceNameEsRegisterDAO; +import org.skywalking.apm.collector.storage.es.dao.ServiceReferenceEsPersistenceDAO; +import org.skywalking.apm.collector.storage.es.dao.ServiceReferenceEsUIDAO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class StorageModuleEsProvider extends ModuleProvider { + + private final Logger logger = LoggerFactory.getLogger(StorageModuleEsProvider.class); + + private static final String CLUSTER_NAME = "cluster_name"; + private static final String CLUSTER_TRANSPORT_SNIFFER = "cluster_transport_sniffer"; + private static final String CLUSTER_NODES = "cluster_nodes"; + private static final String INDEX_SHARDS_NUMBER = "index_shards_number"; + private static final String INDEX_REPLICAS_NUMBER = "index_replicas_number"; + + private ElasticSearchClient elasticSearchClient; + + @Override public String name() { + return "elasticsearch"; + } + + @Override public Class module() { + return StorageModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + String clusterName = config.getProperty(CLUSTER_NAME); + Boolean clusterTransportSniffer = (Boolean)config.get(CLUSTER_TRANSPORT_SNIFFER); + String clusterNodes = config.getProperty(CLUSTER_NODES); + elasticSearchClient = new ElasticSearchClient(clusterName, clusterTransportSniffer, clusterNodes); + + this.registerServiceImplementation(IBatchDAO.class, new BatchEsDAO(elasticSearchClient)); + registerCacheDAO(); + registerRegisterDAO(); + registerPersistenceDAO(); + registerUiDAO(); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + Integer indexShardsNumber = (Integer)config.get(INDEX_SHARDS_NUMBER); + Integer indexReplicasNumber = (Integer)config.get(INDEX_REPLICAS_NUMBER); + try { + elasticSearchClient.initialize(); + + ElasticSearchStorageInstaller installer = new ElasticSearchStorageInstaller(indexShardsNumber, indexReplicasNumber); + installer.install(elasticSearchClient); + } catch (ClientException | StorageException e) { + logger.error(e.getMessage(), e); + } + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } + + private void registerCacheDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(IApplicationCacheDAO.class, new ApplicationEsCacheDAO(elasticSearchClient)); + this.registerServiceImplementation(IInstanceCacheDAO.class, new InstanceEsCacheDAO(elasticSearchClient)); + this.registerServiceImplementation(IServiceNameCacheDAO.class, new ServiceNameEsCacheDAO(elasticSearchClient)); + } + + private void registerRegisterDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(IApplicationRegisterDAO.class, new ApplicationEsRegisterDAO(elasticSearchClient)); + this.registerServiceImplementation(IInstanceRegisterDAO.class, new InstanceEsRegisterDAO(elasticSearchClient)); + this.registerServiceImplementation(IServiceNameRegisterDAO.class, new ServiceNameEsRegisterDAO(elasticSearchClient)); + } + + private void registerPersistenceDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(ICpuMetricPersistenceDAO.class, new CpuMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCMetricPersistenceDAO.class, new GCMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryMetricPersistenceDAO.class, new MemoryMetricEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryPoolMetricPersistenceDAO.class, new MemoryPoolMetricEsPersistenceDAO(elasticSearchClient)); + + this.registerServiceImplementation(IGlobalTracePersistenceDAO.class, new GlobalTraceEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IInstPerformancePersistenceDAO.class, new InstPerformanceEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(INodeComponentPersistenceDAO.class, new NodeComponentEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(INodeMappingPersistenceDAO.class, new NodeMappingEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(INodeReferencePersistenceDAO.class, new NodeReferenceEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(ISegmentCostPersistenceDAO.class, new SegmentCostEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(ISegmentPersistenceDAO.class, new SegmentEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IServiceEntryPersistenceDAO.class, new ServiceEntryEsPersistenceDAO(elasticSearchClient)); + this.registerServiceImplementation(IServiceReferencePersistenceDAO.class, new ServiceReferenceEsPersistenceDAO(elasticSearchClient)); + + this.registerServiceImplementation(IInstanceHeartBeatPersistenceDAO.class, new InstanceHeartBeatEsPersistenceDAO(elasticSearchClient)); + } + + private void registerUiDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(IInstanceUIDAO.class, new InstanceEsUIDAO(elasticSearchClient)); + + this.registerServiceImplementation(ICpuMetricUIDAO.class, new CpuMetricEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(IGCMetricUIDAO.class, new GCMetricEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryMetricUIDAO.class, new MemoryMetricEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(IMemoryPoolMetricUIDAO.class, new MemoryPoolMetricEsUIDAO(elasticSearchClient)); + + this.registerServiceImplementation(IGlobalTraceUIDAO.class, new GlobalTraceEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(IInstPerformanceUIDAO.class, new InstPerformanceEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(INodeComponentUIDAO.class, new NodeComponentEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(INodeMappingUIDAO.class, new NodeMappingEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(INodeReferenceUIDAO.class, new NodeReferenceEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(ISegmentCostUIDAO.class, new SegmentCostEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(ISegmentUIDAO.class, new SegmentEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(IServiceEntryUIDAO.class, new ServiceEntryEsUIDAO(elasticSearchClient)); + this.registerServiceImplementation(IServiceReferenceUIDAO.class, new ServiceReferenceEsUIDAO(elasticSearchClient)); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/BatchEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/dao/BatchEsDAO.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/BatchEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/dao/BatchEsDAO.java index fe372619a..96fd2c325 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/BatchEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/dao/BatchEsDAO.java @@ -16,15 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.elasticsearch.dao; +package org.skywalking.apm.collector.storage.es.base.dao; import java.util.List; import org.elasticsearch.action.bulk.BulkRequestBuilder; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.CollectionUtils; -import org.skywalking.apm.collector.storage.dao.IBatchDAO; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +36,10 @@ public class BatchEsDAO extends EsDAO implements IBatchDAO { private final Logger logger = LoggerFactory.getLogger(BatchEsDAO.class); + public BatchEsDAO(ElasticSearchClient client) { + super(client); + } + @Override public void batchPersistence(List batchCollection) { BulkRequestBuilder bulkRequest = getClient().prepareBulk(); diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/dao/EsDAO.java similarity index 91% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/dao/EsDAO.java index 01097da01..abcf1a75c 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/dao/EsDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.elasticsearch.dao; +package org.skywalking.apm.collector.storage.es.base.dao; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; @@ -26,12 +26,16 @@ import org.elasticsearch.search.aggregations.metrics.max.MaxAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.min.Min; import org.elasticsearch.search.aggregations.metrics.min.MinAggregationBuilder; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.storage.dao.DAO; +import org.skywalking.apm.collector.storage.base.dao.AbstractDAO; /** * @author peng-yongsheng */ -public abstract class EsDAO extends DAO { +public abstract class EsDAO extends AbstractDAO { + + public EsDAO(ElasticSearchClient client) { + super(client); + } public final int getMaxId(String indexName, String columnName) { ElasticSearchClient client = getClient(); diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchColumnDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchColumnDefine.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchColumnDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchColumnDefine.java index 7f1893277..4173fc5c4 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchColumnDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchColumnDefine.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.elasticsearch.define; +package org.skywalking.apm.collector.storage.es.base.define; -import org.skywalking.apm.collector.core.storage.ColumnDefine; +import org.skywalking.apm.collector.core.data.ColumnDefine; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchStorageInstaller.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchStorageInstaller.java similarity index 87% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchStorageInstaller.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchStorageInstaller.java index b5bf11a5f..13563b9bd 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchStorageInstaller.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchStorageInstaller.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.elasticsearch.define; +package org.skywalking.apm.collector.storage.es.base.define; import java.io.IOException; import java.util.List; @@ -24,12 +24,11 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.IndexNotFoundException; +import org.skywalking.apm.collector.client.Client; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.storage.ColumnDefine; -import org.skywalking.apm.collector.core.storage.StorageInstaller; -import org.skywalking.apm.collector.core.storage.TableDefine; -import org.skywalking.apm.collector.storage.elasticsearch.StorageElasticSearchConfig; +import org.skywalking.apm.collector.storage.StorageInstaller; +import org.skywalking.apm.collector.core.data.ColumnDefine; +import org.skywalking.apm.collector.core.data.TableDefine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,6 +39,14 @@ public class ElasticSearchStorageInstaller extends StorageInstaller { private final Logger logger = LoggerFactory.getLogger(ElasticSearchStorageInstaller.class); + private final int indexShardsNumber; + private final int indexReplicasNumber; + + public ElasticSearchStorageInstaller(int indexShardsNumber, int indexReplicasNumber) { + this.indexShardsNumber = indexShardsNumber; + this.indexReplicasNumber = indexReplicasNumber; + } + @Override protected void defineFilter(List tableDefines) { int size = tableDefines.size(); for (int i = size - 1; i >= 0; i--) { @@ -70,8 +77,8 @@ public class ElasticSearchStorageInstaller extends StorageInstaller { private Settings createSettingBuilder(ElasticSearchTableDefine tableDefine) { return Settings.builder() - .put("index.number_of_shards", StorageElasticSearchConfig.INDEX_SHARDS_NUMBER) - .put("index.number_of_replicas", StorageElasticSearchConfig.INDEX_REPLICAS_NUMBER) + .put("index.number_of_shards", indexShardsNumber) + .put("index.number_of_replicas", indexReplicasNumber) .put("index.refresh_interval", String.valueOf(tableDefine.refreshInterval()) + "s") .put("analysis.analyzer.collector_analyzer.tokenizer", "collector_tokenizer") diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchTableDefine.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchTableDefine.java index d7c5c797a..45696db45 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/define/ElasticSearchTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/base/define/ElasticSearchTableDefine.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.elasticsearch.define; +package org.skywalking.apm.collector.storage.es.base.define; -import org.skywalking.apm.collector.core.storage.TableDefine; +import org.skywalking.apm.collector.core.data.TableDefine; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java similarity index 88% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsCacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java index 9ebed3a08..77d886472 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationEsCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ApplicationEsCacheDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.es.dao; import org.elasticsearch.action.get.GetRequestBuilder; import org.elasticsearch.action.get.GetResponse; @@ -27,8 +27,9 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.register.ApplicationTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.ApplicationTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +40,10 @@ public class ApplicationEsCacheDAO extends EsDAO implements IApplicationCacheDAO private final Logger logger = LoggerFactory.getLogger(ApplicationEsCacheDAO.class); + public ApplicationEsCacheDAO(ElasticSearchClient client) { + super(client); + } + @Override public int getApplicationId(String applicationCode) { ElasticSearchClient client = getClient(); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java similarity index 70% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java index c830f5cd4..d544dbf3d 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ApplicationEsRegisterDAO.java @@ -16,25 +16,30 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.application.dao; +package org.skywalking.apm.collector.storage.es.dao; import java.util.HashMap; import java.util.Map; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.support.WriteRequest; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.storage.define.register.ApplicationDataDefine; -import org.skywalking.apm.collector.storage.define.register.ApplicationTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.Application; +import org.skywalking.apm.collector.storage.table.register.ApplicationTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ApplicationEsDAO extends EsDAO implements IApplicationDAO { +public class ApplicationEsRegisterDAO extends EsDAO implements IApplicationRegisterDAO { - private final Logger logger = LoggerFactory.getLogger(ApplicationEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(ApplicationEsRegisterDAO.class); + + public ApplicationEsRegisterDAO(ElasticSearchClient client) { + super(client); + } @Override public int getMaxApplicationId() { return getMaxId(ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID); @@ -44,14 +49,14 @@ public class ApplicationEsDAO extends EsDAO implements IApplicationDAO { return getMinId(ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_ID); } - @Override public void save(ApplicationDataDefine.Application application) { - logger.debug("save application register info, application id: {}, application code: {}", application.getApplicationId(), application.getApplicationCode()); + @Override public void save(Application application) { + logger.debug("save application register info, application getId: {}, application code: {}", application.getId(), application.getApplicationCode()); ElasticSearchClient client = getClient(); Map source = new HashMap<>(); source.put(ApplicationTable.COLUMN_APPLICATION_CODE, application.getApplicationCode()); source.put(ApplicationTable.COLUMN_APPLICATION_ID, application.getApplicationId()); IndexResponse response = client.prepareIndex(ApplicationTable.TABLE, application.getId()).setSource(source).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); - logger.debug("save application register info, application id: {}, application code: {}, status: {}", application.getApplicationId(), application.getApplicationCode(), response.status().name()); + logger.debug("save application register info, application getId: {}, application code: {}, status: {}", application.getApplicationId(), application.getApplicationCode(), response.status().name()); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/CpuMetricEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/CpuMetricEsPersistenceDAO.java new file mode 100644 index 000000000..18b43116f --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/CpuMetricEsPersistenceDAO.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.storage.es.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.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.ICpuMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetric; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetricTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class CpuMetricEsPersistenceDAO extends EsDAO implements ICpuMetricPersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(CpuMetricEsPersistenceDAO.class); + + public CpuMetricEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public CpuMetric get(String id) { + return null; + } + + @Override public IndexRequestBuilder prepareBatchInsert(CpuMetric cpuMetric) { + Map source = new HashMap<>(); + source.put(CpuMetricTable.COLUMN_INSTANCE_ID, cpuMetric.getInstanceId()); + source.put(CpuMetricTable.COLUMN_USAGE_PERCENT, cpuMetric.getUsagePercent()); + source.put(CpuMetricTable.COLUMN_TIME_BUCKET, cpuMetric.getTimeBucket()); + + logger.debug("prepare cpu metric batch insert, getId: {}", cpuMetric.getId()); + return getClient().prepareIndex(CpuMetricTable.TABLE, cpuMetric.getId()).setSource(source); + } + + @Override public UpdateRequestBuilder prepareBatchUpdate(CpuMetric cpuMetric) { + return null; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/CpuMetricEsUIDAO.java similarity index 84% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/CpuMetricEsUIDAO.java index 40cff2afa..5839090c0 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/CpuMetricEsUIDAO.java @@ -16,22 +16,28 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.get.MultiGetItemResponse; import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetResponse; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetricTable; /** * @author peng-yongsheng */ -public class CpuMetricEsDAO extends EsDAO implements ICpuMetricDAO { +public class CpuMetricEsUIDAO extends EsDAO implements ICpuMetricUIDAO { + + public CpuMetricEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public int getMetric(int instanceId, long timeBucket) { String id = timeBucket + Const.ID_SPLIT + instanceId; diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GCMetricEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GCMetricEsPersistenceDAO.java new file mode 100644 index 000000000..643480bd3 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GCMetricEsPersistenceDAO.java @@ -0,0 +1,58 @@ +/* + * 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.storage.es.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.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IGCMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.GCMetric; +import org.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng + */ +public class GCMetricEsPersistenceDAO extends EsDAO implements IGCMetricPersistenceDAO { + + public GCMetricEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public GCMetric get(String id) { + return null; + } + + @Override public IndexRequestBuilder prepareBatchInsert(GCMetric gcMetric) { + Map source = new HashMap<>(); + source.put(GCMetricTable.COLUMN_INSTANCE_ID, gcMetric.getInstanceId()); + source.put(GCMetricTable.COLUMN_PHRASE, gcMetric.getPhrase()); + source.put(GCMetricTable.COLUMN_COUNT, gcMetric.getCount()); + source.put(GCMetricTable.COLUMN_TIME, gcMetric.getTime()); + source.put(GCMetricTable.COLUMN_TIME_BUCKET, gcMetric.getTimeBucket()); + + return getClient().prepareIndex(GCMetricTable.TABLE, gcMetric.getId()).setSource(source); + } + + @Override public UpdateRequestBuilder prepareBatchUpdate(GCMetric gcMetric) { + return null; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GCMetricEsUIDAO.java similarity index 93% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GCMetricEsUIDAO.java index ee694205b..250bf5251 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GCMetricEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -32,10 +32,12 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.metrics.sum.Sum; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.GCMetricTable; import org.skywalking.apm.network.proto.GCPhrase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,9 +45,13 @@ import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class GCMetricEsDAO extends EsDAO implements IGCMetricDAO { +public class GCMetricEsUIDAO extends EsDAO implements IGCMetricUIDAO { - private final Logger logger = LoggerFactory.getLogger(GCMetricEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(GCMetricEsUIDAO.class); + + public GCMetricEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public GCCount getGCCount(long[] timeBuckets, int instanceId) { logger.debug("get gc count, timeBuckets: {}, instanceId: {}", timeBuckets, instanceId); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/GlobalTraceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java similarity index 58% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/GlobalTraceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java index 3707b9b8c..27c4aa3bb 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/GlobalTraceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GlobalTraceEsPersistenceDAO.java @@ -16,42 +16,46 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.global.dao; +package org.skywalking.apm.collector.storage.es.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.framework.UnexpectedException; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.global.GlobalTrace; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class GlobalTraceEsDAO extends EsDAO implements IGlobalTraceDAO, IPersistenceDAO { +public class GlobalTraceEsPersistenceDAO extends EsDAO implements IGlobalTracePersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(GlobalTraceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(GlobalTraceEsPersistenceDAO.class); - @Override public Data get(String id, DataDefine dataDefine) { + public GlobalTraceEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public GlobalTrace get(String id) { throw new UnexpectedException("There is no need to merge stream data with database data."); } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(GlobalTrace data) { throw new UnexpectedException("There is no need to merge stream data with database data."); } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(GlobalTrace data) { Map source = new HashMap<>(); - source.put(GlobalTraceTable.COLUMN_SEGMENT_ID, data.getDataString(1)); - source.put(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, data.getDataString(2)); - source.put(GlobalTraceTable.COLUMN_TIME_BUCKET, data.getDataLong(0)); + source.put(GlobalTraceTable.COLUMN_SEGMENT_ID, data.getSegmentId()); + source.put(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, data.getGlobalTraceId()); + source.put(GlobalTraceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); logger.debug("global trace source: {}", source.toString()); - return getClient().prepareIndex(GlobalTraceTable.TABLE, data.getDataString(0)).setSource(source); + return getClient().prepareIndex(GlobalTraceTable.TABLE, data.getId()).setSource(source); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GlobalTraceEsUIDAO.java similarity index 86% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GlobalTraceEsUIDAO.java index d5c15e953..e6a2b9698 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/GlobalTraceEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import java.util.ArrayList; import java.util.List; @@ -25,17 +25,23 @@ import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class GlobalTraceEsDAO extends EsDAO implements IGlobalTraceDAO { +public class GlobalTraceEsUIDAO extends EsDAO implements IGlobalTraceUIDAO { - private final Logger logger = LoggerFactory.getLogger(GlobalTraceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(GlobalTraceEsUIDAO.class); + + public GlobalTraceEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public List getGlobalTraceId(String segmentId) { SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(GlobalTraceTable.TABLE); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstPerformanceEsPersistenceDAO.java similarity index 50% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstPerformanceEsPersistenceDAO.java index ff753391e..59aa39a69 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstPerformanceEsPersistenceDAO.java @@ -16,64 +16,68 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.instance.performance.dao; +package org.skywalking.apm.collector.storage.es.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.instance.InstPerformanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IInstPerformancePersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.instance.InstPerformance; +import org.skywalking.apm.collector.storage.table.instance.InstPerformanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO, IPersistenceDAO { +public class InstPerformanceEsPersistenceDAO extends EsDAO implements IInstPerformancePersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(InstPerformanceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(InstPerformanceEsPersistenceDAO.class); - @Override public Data get(String id, DataDefine dataDefine) { + public InstPerformanceEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public InstPerformance get(String id) { GetResponse getResponse = getClient().prepareGet(InstPerformanceTable.TABLE, id).get(); if (getResponse.isExists()) { - logger.debug("id: {} is exist", id); - Data data = dataDefine.build(id); + logger.debug("getId: {} is exist", id); + InstPerformance instPerformance = new InstPerformance(id); Map source = getResponse.getSource(); - data.setDataInteger(0, (Integer)source.get(InstPerformanceTable.COLUMN_APPLICATION_ID)); - data.setDataInteger(1, (Integer)source.get(InstPerformanceTable.COLUMN_INSTANCE_ID)); - data.setDataInteger(2, (Integer)source.get(InstPerformanceTable.COLUMN_CALLS)); - data.setDataLong(0, ((Number)source.get(InstPerformanceTable.COLUMN_COST_TOTAL)).longValue()); - data.setDataLong(1, ((Number)source.get(InstPerformanceTable.COLUMN_TIME_BUCKET)).longValue()); - return data; + instPerformance.setApplicationId((Integer)source.get(InstPerformanceTable.COLUMN_APPLICATION_ID)); + instPerformance.setInstanceId((Integer)source.get(InstPerformanceTable.COLUMN_INSTANCE_ID)); + instPerformance.setCalls((Integer)source.get(InstPerformanceTable.COLUMN_CALLS)); + instPerformance.setCostTotal(((Number)source.get(InstPerformanceTable.COLUMN_COST_TOTAL)).longValue()); + instPerformance.setTimeBucket(((Number)source.get(InstPerformanceTable.COLUMN_TIME_BUCKET)).longValue()); + return instPerformance; } else { return null; } } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(InstPerformance data) { Map source = new HashMap<>(); - source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getDataInteger(1)); - source.put(InstPerformanceTable.COLUMN_CALLS, data.getDataInteger(2)); - source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getDataLong(0)); - source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getDataLong(1)); + source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(InstPerformanceTable.COLUMN_CALLS, data.getCalls()); + source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getCostTotal()); + source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); - return getClient().prepareIndex(InstPerformanceTable.TABLE, data.getDataString(0)).setSource(source); + return getClient().prepareIndex(InstPerformanceTable.TABLE, data.getId()).setSource(source); } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(InstPerformance data) { Map source = new HashMap<>(); - source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getDataInteger(1)); - source.put(InstPerformanceTable.COLUMN_CALLS, data.getDataInteger(2)); - source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getDataLong(0)); - source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getDataLong(1)); + source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(InstPerformanceTable.COLUMN_CALLS, data.getCalls()); + source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getCostTotal()); + source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); - return getClient().prepareUpdate(InstPerformanceTable.TABLE, data.getDataString(0)).setDoc(source); + return getClient().prepareUpdate(InstPerformanceTable.TABLE, data.getId()).setDoc(source); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstPerformanceEsUIDAO.java similarity index 92% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstPerformanceEsUIDAO.java index 838080a67..aa6499386 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstPerformanceEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import org.elasticsearch.action.get.GetResponse; @@ -31,15 +31,21 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.metrics.sum.Sum; import org.elasticsearch.search.sort.SortOrder; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.instance.InstPerformanceTable; /** * @author peng-yongsheng */ -public class InstPerformanceEsDAO extends EsDAO implements IInstPerformanceDAO { +public class InstPerformanceEsUIDAO extends EsDAO implements IInstPerformanceUIDAO { + + public InstPerformanceEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public InstPerformance get(long[] timeBuckets, int instanceId) { SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstPerformanceTable.TABLE); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java new file mode 100644 index 000000000..ac32c56a7 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsCacheDAO.java @@ -0,0 +1,74 @@ +/* + * 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.storage.es.dao; + +import org.elasticsearch.action.get.GetResponse; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.SearchHit; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class InstanceEsCacheDAO extends EsDAO implements IInstanceCacheDAO { + + private final Logger logger = LoggerFactory.getLogger(InstanceEsCacheDAO.class); + + public InstanceEsCacheDAO(ElasticSearchClient client) { + super(client); + } + + @Override public int getApplicationId(int instanceId) { + GetResponse response = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(instanceId)).get(); + if (response.isExists()) { + return (int)response.getSource().get(InstanceTable.COLUMN_APPLICATION_ID); + } else { + return 0; + } + } + + @Override public int getInstanceId(int applicationId, String agentUUID) { + ElasticSearchClient client = getClient(); + + SearchRequestBuilder searchRequestBuilder = client.prepareSearch(InstanceTable.TABLE); + searchRequestBuilder.setTypes("type"); + searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); + BoolQueryBuilder builder = QueryBuilders.boolQuery(); + builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId)); + builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_AGENT_UUID, agentUUID)); + searchRequestBuilder.setQuery(builder); + searchRequestBuilder.setSize(1); + + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + if (searchResponse.getHits().totalHits > 0) { + SearchHit searchHit = searchResponse.getHits().iterator().next(); + return (int)searchHit.getSource().get(InstanceTable.COLUMN_INSTANCE_ID); + } + return 0; + } +} diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java similarity index 57% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java index dc49691e4..03ff9d41d 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsRegisterDAO.java @@ -16,51 +16,30 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.instance.dao; +package org.skywalking.apm.collector.storage.es.dao; import java.util.HashMap; import java.util.Map; import org.elasticsearch.action.index.IndexResponse; -import org.elasticsearch.action.search.SearchRequestBuilder; -import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.action.search.SearchType; import org.elasticsearch.action.support.WriteRequest; import org.elasticsearch.action.update.UpdateRequest; -import org.elasticsearch.index.query.BoolQueryBuilder; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.SearchHit; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.Instance; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class InstanceEsDAO extends EsDAO implements IInstanceDAO { +public class InstanceEsRegisterDAO extends EsDAO implements IInstanceRegisterDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(InstanceEsRegisterDAO.class); - @Override public int getInstanceId(int applicationId, String agentUUID) { - ElasticSearchClient client = getClient(); - - SearchRequestBuilder searchRequestBuilder = client.prepareSearch(InstanceTable.TABLE); - searchRequestBuilder.setTypes("type"); - searchRequestBuilder.setSearchType(SearchType.QUERY_THEN_FETCH); - BoolQueryBuilder builder = QueryBuilders.boolQuery(); - builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_APPLICATION_ID, applicationId)); - builder.must().add(QueryBuilders.termQuery(InstanceTable.COLUMN_AGENT_UUID, agentUUID)); - searchRequestBuilder.setQuery(builder); - searchRequestBuilder.setSize(1); - - SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); - if (searchResponse.getHits().totalHits > 0) { - SearchHit searchHit = searchResponse.getHits().iterator().next(); - return (int)searchHit.getSource().get(InstanceTable.COLUMN_INSTANCE_ID); - } - return 0; + public InstanceEsRegisterDAO(ElasticSearchClient client) { + super(client); } @Override public int getMaxInstanceId() { @@ -71,8 +50,8 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO { return getMinId(InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID); } - @Override public void save(InstanceDataDefine.Instance instance) { - logger.debug("save instance register info, application id: {}, agentUUID: {}", instance.getApplicationId(), instance.getAgentUUID()); + @Override public void save(Instance instance) { + logger.debug("save instance register info, application getId: {}, agentUUID: {}", instance.getApplicationId(), instance.getAgentUUID()); ElasticSearchClient client = getClient(); Map source = new HashMap<>(); source.put(InstanceTable.COLUMN_INSTANCE_ID, instance.getInstanceId()); @@ -83,7 +62,7 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO { source.put(InstanceTable.COLUMN_OS_INFO, instance.getOsInfo()); IndexResponse response = client.prepareIndex(InstanceTable.TABLE, instance.getId()).setSource(source).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); - logger.debug("save instance register info, application id: {}, agentUUID: {}, status: {}", instance.getApplicationId(), instance.getAgentUUID(), response.status().name()); + logger.debug("save instance register info, application getId: {}, agentUUID: {}, status: {}", instance.getApplicationId(), instance.getAgentUUID(), response.status().name()); } @Override public void updateHeartbeatTime(int instanceId, long heartbeatTime) { diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsUIDAO.java similarity index 88% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsUIDAO.java index 50524142a..9405a540d 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -37,20 +37,25 @@ import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.metrics.valuecount.ValueCount; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortMode; -import org.skywalking.apm.collector.cache.ApplicationCache; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.Instance; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class InstanceEsDAO extends EsDAO implements IInstanceDAO { +public class InstanceEsUIDAO extends EsDAO implements IInstanceUIDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(InstanceEsUIDAO.class); + + public InstanceEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public Long lastHeartBeatTime() { long fiveMinuteBefore = System.currentTimeMillis() - 5 * 60 * 1000; @@ -112,20 +117,18 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO { JsonObject application = new JsonObject(); application.addProperty("applicationId", applicationId); - application.addProperty("applicationCode", ApplicationCache.get(applicationId)); application.addProperty("instanceCount", instanceCount.getValue()); applications.add(application); } return applications; } - @Override public InstanceDataDefine.Instance getInstance(int instanceId) { + @Override public Instance getInstance(int instanceId) { logger.debug("get instance info, instance id: {}", instanceId); GetRequestBuilder requestBuilder = getClient().prepareGet(InstanceTable.TABLE, String.valueOf(instanceId)); GetResponse getResponse = requestBuilder.get(); if (getResponse.isExists()) { - InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance(); - instance.setId(String.valueOf(instanceId)); + Instance instance = new Instance(getResponse.getId()); instance.setApplicationId(((Number)getResponse.getSource().get(InstanceTable.COLUMN_APPLICATION_ID)).intValue()); instance.setAgentUUID((String)getResponse.getSource().get(InstanceTable.COLUMN_AGENT_UUID)); instance.setRegisterTime(((Number)getResponse.getSource().get(InstanceTable.COLUMN_REGISTER_TIME)).longValue()); @@ -136,7 +139,7 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO { return null; } - @Override public List getInstances(int applicationId, long timeBucket) { + @Override public List getInstances(int applicationId, long timeBucket) { logger.debug("get instances info, application id: {}, timeBucket: {}", applicationId, timeBucket); SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(InstanceTable.TABLE); searchRequestBuilder.setTypes(InstanceTable.TABLE_TYPE); @@ -151,9 +154,9 @@ public class InstanceEsDAO extends EsDAO implements IInstanceDAO { SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); SearchHit[] searchHits = searchResponse.getHits().getHits(); - List instanceList = new LinkedList<>(); + List instanceList = new LinkedList<>(); for (SearchHit searchHit : searchHits) { - InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance(); + Instance instance = new Instance(searchHit.getId()); instance.setApplicationId(((Number)searchHit.getSource().get(InstanceTable.COLUMN_APPLICATION_ID)).intValue()); instance.setHeartBeatTime(((Number)searchHit.getSource().get(InstanceTable.COLUMN_HEARTBEAT_TIME)).longValue()); instance.setInstanceId(((Number)searchHit.getSource().get(InstanceTable.COLUMN_INSTANCE_ID)).intValue()); diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/InstanceHeartBeatEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java similarity index 54% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/InstanceHeartBeatEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java index 124807197..1cd0756c3 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/InstanceHeartBeatEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/InstanceHeartBeatEsPersistenceDAO.java @@ -16,51 +16,55 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.heartbeat.dao; +package org.skywalking.apm.collector.storage.es.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.framework.UnexpectedException; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.Instance; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class InstanceHeartBeatEsDAO extends EsDAO implements IInstanceHeartBeatDAO, IPersistenceDAO { +public class InstanceHeartBeatEsPersistenceDAO extends EsDAO implements IInstanceHeartBeatPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatEsPersistenceDAO.class); - @Override public Data get(String id, DataDefine dataDefine) { + public InstanceHeartBeatEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public Instance get(String id) { GetResponse getResponse = getClient().prepareGet(InstanceTable.TABLE, id).get(); if (getResponse.isExists()) { - Data data = dataDefine.build(id); + Instance instance = new Instance(id); Map source = getResponse.getSource(); - data.setDataInteger(0, (Integer)source.get(InstanceTable.COLUMN_INSTANCE_ID)); - data.setDataLong(0, (Long)source.get(InstanceTable.COLUMN_HEARTBEAT_TIME)); - logger.debug("id: {} is exists", id); - return data; + instance.setInstanceId((Integer)source.get(InstanceTable.COLUMN_INSTANCE_ID)); + instance.setHeartBeatTime((Long)source.get(InstanceTable.COLUMN_HEARTBEAT_TIME)); + logger.debug("getId: {} is exists", id); + return instance; } else { - logger.debug("id: {} is not exists", id); + logger.debug("getId: {} is not exists", id); return null; } } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(Instance data) { throw new UnexpectedException("There is no need to merge stream data with database data."); } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(Instance data) { Map source = new HashMap<>(); - source.put(InstanceTable.COLUMN_HEARTBEAT_TIME, data.getDataLong(0)); - return getClient().prepareUpdate(InstanceTable.TABLE, data.getDataString(0)).setDoc(source); + source.put(InstanceTable.COLUMN_HEARTBEAT_TIME, data.getHeartBeatTime()); + return getClient().prepareUpdate(InstanceTable.TABLE, data.getId()).setDoc(source); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryMetricEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryMetricEsPersistenceDAO.java new file mode 100644 index 000000000..9e81860f9 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryMetricEsPersistenceDAO.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.storage.es.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.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetric; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; + +/** + * @author peng-yongsheng + */ +public class MemoryMetricEsPersistenceDAO extends EsDAO implements IMemoryMetricPersistenceDAO { + + public MemoryMetricEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public MemoryMetric get(String id) { + return null; + } + + @Override public IndexRequestBuilder prepareBatchInsert(MemoryMetric data) { + Map source = new HashMap<>(); + source.put(MemoryMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(MemoryMetricTable.COLUMN_IS_HEAP, data.getIsHeap()); + source.put(MemoryMetricTable.COLUMN_INIT, data.getInit()); + source.put(MemoryMetricTable.COLUMN_MAX, data.getMax()); + source.put(MemoryMetricTable.COLUMN_USED, data.getUsed()); + source.put(MemoryMetricTable.COLUMN_COMMITTED, data.getCommitted()); + source.put(MemoryMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareIndex(MemoryMetricTable.TABLE, data.getId()).setSource(source); + } + + @Override public UpdateRequestBuilder prepareBatchUpdate(MemoryMetric data) { + return null; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryMetricEsUIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryMetricEsUIDAO.java index c3c0f2062..cb8d9b1fc 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryMetricEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -24,15 +24,21 @@ import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.get.MultiGetItemResponse; import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetResponse; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; /** * @author peng-yongsheng */ -public class MemoryMetricEsDAO extends EsDAO implements IMemoryMetricDAO { +public class MemoryMetricEsUIDAO extends EsDAO implements IMemoryMetricUIDAO { + + public MemoryMetricEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public JsonObject getMetric(int instanceId, long timeBucket, boolean isHeap) { String id = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + isHeap; diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryPoolMetricEsPersistenceDAO.java similarity index 52% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryPoolMetricEsPersistenceDAO.java index 0e2b3953c..aae64b469 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryPoolMetricEsPersistenceDAO.java @@ -16,41 +16,45 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memorypool.dao; +package org.skywalking.apm.collector.storage.es.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.MemoryPoolMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetric; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetricTable; /** * @author peng-yongsheng */ -public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO, IPersistenceDAO { +public class MemoryPoolMetricEsPersistenceDAO extends EsDAO implements IMemoryPoolMetricPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + public MemoryPoolMetricEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public MemoryPoolMetric get(String id) { return null; } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(MemoryPoolMetric data) { Map source = new HashMap<>(); - source.put(MemoryPoolMetricTable.COLUMN_INSTANCE_ID, data.getDataInteger(0)); - source.put(MemoryPoolMetricTable.COLUMN_POOL_TYPE, data.getDataInteger(1)); - source.put(MemoryPoolMetricTable.COLUMN_INIT, data.getDataLong(0)); - source.put(MemoryPoolMetricTable.COLUMN_MAX, data.getDataLong(1)); - source.put(MemoryPoolMetricTable.COLUMN_USED, data.getDataLong(2)); - source.put(MemoryPoolMetricTable.COLUMN_COMMITTED, data.getDataLong(3)); - source.put(MemoryPoolMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(4)); + source.put(MemoryPoolMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(MemoryPoolMetricTable.COLUMN_POOL_TYPE, data.getPoolType()); + source.put(MemoryPoolMetricTable.COLUMN_INIT, data.getInit()); + source.put(MemoryPoolMetricTable.COLUMN_MAX, data.getMax()); + source.put(MemoryPoolMetricTable.COLUMN_USED, data.getUsed()); + source.put(MemoryPoolMetricTable.COLUMN_COMMITTED, data.getCommitted()); + source.put(MemoryPoolMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); - return getClient().prepareIndex(MemoryPoolMetricTable.TABLE, data.getDataString(0)).setSource(source); + return getClient().prepareIndex(MemoryPoolMetricTable.TABLE, data.getId()).setSource(source); } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(MemoryPoolMetric data) { return null; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryPoolMetricEsUIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryPoolMetricEsUIDAO.java index f5c23bec0..3485a5481 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/MemoryPoolMetricEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -24,15 +24,21 @@ import org.elasticsearch.action.get.GetResponse; import org.elasticsearch.action.get.MultiGetItemResponse; import org.elasticsearch.action.get.MultiGetRequestBuilder; import org.elasticsearch.action.get.MultiGetResponse; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetricTable; /** * @author peng-yongsheng */ -public class MemoryPoolMetricEsDAO extends EsDAO implements IMemoryPoolMetricDAO { +public class MemoryPoolMetricEsUIDAO extends EsDAO implements IMemoryPoolMetricUIDAO { + + public MemoryPoolMetricEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public JsonObject getMetric(int instanceId, long timeBucket, int poolType) { String id = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + poolType; diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeComponentEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeComponentEsPersistenceDAO.java new file mode 100644 index 000000000..5dad91001 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeComponentEsPersistenceDAO.java @@ -0,0 +1,72 @@ +/* + * 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.storage.es.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.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.INodeComponentPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.node.NodeComponent; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; + +/** + * @author peng-yongsheng + */ +public class NodeComponentEsPersistenceDAO extends EsDAO implements INodeComponentPersistenceDAO { + + public NodeComponentEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public NodeComponent get(String id) { + GetResponse getResponse = getClient().prepareGet(NodeComponentTable.TABLE, id).get(); + if (getResponse.isExists()) { + NodeComponent nodeComponent = new NodeComponent(id); + Map source = getResponse.getSource(); + nodeComponent.setComponentId(((Number)source.get(NodeComponentTable.COLUMN_COMPONENT_ID)).intValue()); + nodeComponent.setPeerId(((Number)source.get(NodeComponentTable.COLUMN_PEER_ID)).intValue()); + nodeComponent.setTimeBucket((Long)source.get(NodeComponentTable.COLUMN_TIME_BUCKET)); + return nodeComponent; + } else { + return null; + } + } + + @Override public IndexRequestBuilder prepareBatchInsert(NodeComponent data) { + Map source = new HashMap<>(); + source.put(NodeComponentTable.COLUMN_COMPONENT_ID, data.getComponentId()); + source.put(NodeComponentTable.COLUMN_PEER_ID, data.getPeerId()); + source.put(NodeComponentTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareIndex(NodeComponentTable.TABLE, data.getId()).setSource(source); + } + + @Override public UpdateRequestBuilder prepareBatchUpdate(NodeComponent data) { + Map source = new HashMap<>(); + source.put(NodeComponentTable.COLUMN_COMPONENT_ID, data.getComponentId()); + source.put(NodeComponentTable.COLUMN_PEER_ID, data.getPeerId()); + source.put(NodeComponentTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareUpdate(NodeComponentTable.TABLE, data.getId()).setDoc(source); + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeComponentEsUIDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeComponentEsUIDAO.java new file mode 100644 index 000000000..6df165dd2 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeComponentEsUIDAO.java @@ -0,0 +1,87 @@ +/* + * 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.storage.es.dao; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import org.elasticsearch.action.search.SearchRequestBuilder; +import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.bucket.terms.Terms; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.INodeComponentUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class NodeComponentEsUIDAO extends EsDAO implements INodeComponentUIDAO { + + private final Logger logger = LoggerFactory.getLogger(NodeComponentEsPersistenceDAO.class); + + public NodeComponentEsUIDAO(ElasticSearchClient client) { + super(client); + } + + @Override public JsonArray load(long startTime, long endTime) { + logger.debug("node component load, start time: {}, end time: {}", startTime, endTime); + JsonArray nodeComponentArray = new JsonArray(); + nodeComponentArray.addAll(aggregationByComponentId(startTime, endTime)); + return nodeComponentArray; + } + + private JsonArray aggregationByComponentId(long startTime, long endTime) { + SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(NodeComponentTable.TABLE); + searchRequestBuilder.setTypes(NodeComponentTable.TABLE_TYPE); + searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); + searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(NodeComponentTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); + searchRequestBuilder.setSize(0); + + searchRequestBuilder.addAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_COMPONENT_ID).field(NodeComponentTable.COLUMN_COMPONENT_ID).size(100) + .subAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_PEER_ID).field(NodeComponentTable.COLUMN_PEER_ID).size(100))); + + SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); + + Terms componentIdTerms = searchResponse.getAggregations().get(NodeComponentTable.COLUMN_COMPONENT_ID); + JsonArray nodeComponentArray = new JsonArray(); + for (Terms.Bucket componentIdBucket : componentIdTerms.getBuckets()) { + int componentId = componentIdBucket.getKeyAsNumber().intValue(); + buildComponentArray(componentIdBucket, componentId, nodeComponentArray); + } + + return nodeComponentArray; + } + + private void buildComponentArray(Terms.Bucket componentBucket, int componentId, JsonArray nodeComponentArray) { + Terms peerIdTerms = componentBucket.getAggregations().get(NodeComponentTable.COLUMN_PEER_ID); + for (Terms.Bucket peerIdBucket : peerIdTerms.getBuckets()) { + int peerId = peerIdBucket.getKeyAsNumber().intValue(); + + JsonObject nodeComponentObj = new JsonObject(); + nodeComponentObj.addProperty(NodeComponentTable.COLUMN_COMPONENT_ID, componentId); + nodeComponentObj.addProperty(NodeComponentTable.COLUMN_PEER_ID, peerId); + nodeComponentArray.add(nodeComponentObj); + } + } +} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/NodeMappingEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeMappingEsPersistenceDAO.java similarity index 50% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/NodeMappingEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeMappingEsPersistenceDAO.java index acd2f7c62..0372faadb 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/NodeMappingEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeMappingEsPersistenceDAO.java @@ -16,56 +16,56 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.mapping.dao; +package org.skywalking.apm.collector.storage.es.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.NodeMappingTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.INodeMappingPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.node.NodeMapping; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; /** * @author peng-yongsheng */ -public class NodeMappingEsDAO extends EsDAO implements INodeMappingDAO, IPersistenceDAO { +public class NodeMappingEsPersistenceDAO extends EsDAO implements INodeMappingPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + public NodeMappingEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public NodeMapping get(String id) { GetResponse getResponse = getClient().prepareGet(NodeMappingTable.TABLE, id).get(); if (getResponse.isExists()) { - Data data = dataDefine.build(id); + NodeMapping nodeMapping = new NodeMapping(id); Map source = getResponse.getSource(); - data.setDataInteger(0, ((Number)source.get(NodeMappingTable.COLUMN_APPLICATION_ID)).intValue()); - data.setDataInteger(1, ((Number)source.get(NodeMappingTable.COLUMN_ADDRESS_ID)).intValue()); - data.setDataString(1, (String)source.get(NodeMappingTable.COLUMN_ADDRESS)); - data.setDataLong(0, ((Number)source.get(NodeMappingTable.COLUMN_TIME_BUCKET)).longValue()); - return data; + nodeMapping.setApplicationId(((Number)source.get(NodeMappingTable.COLUMN_APPLICATION_ID)).intValue()); + nodeMapping.setAddressId(((Number)source.get(NodeMappingTable.COLUMN_ADDRESS_ID)).intValue()); + nodeMapping.setTimeBucket(((Number)source.get(NodeMappingTable.COLUMN_TIME_BUCKET)).longValue()); + return nodeMapping; } else { return null; } } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(NodeMapping data) { Map source = new HashMap<>(); - source.put(NodeMappingTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(NodeMappingTable.COLUMN_ADDRESS_ID, data.getDataInteger(1)); - source.put(NodeMappingTable.COLUMN_ADDRESS, data.getDataString(1)); - source.put(NodeMappingTable.COLUMN_TIME_BUCKET, data.getDataLong(0)); + source.put(NodeMappingTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(NodeMappingTable.COLUMN_ADDRESS_ID, data.getAddressId()); + source.put(NodeMappingTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); - return getClient().prepareIndex(NodeMappingTable.TABLE, data.getDataString(0)).setSource(source); + return getClient().prepareIndex(NodeMappingTable.TABLE, data.getId()).setSource(source); } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(NodeMapping data) { Map source = new HashMap<>(); - source.put(NodeMappingTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(NodeMappingTable.COLUMN_ADDRESS_ID, data.getDataInteger(1)); - source.put(NodeMappingTable.COLUMN_ADDRESS, data.getDataString(1)); - source.put(NodeMappingTable.COLUMN_TIME_BUCKET, data.getDataLong(0)); - - return getClient().prepareUpdate(NodeMappingTable.TABLE, data.getDataString(0)).setDoc(source); + source.put(NodeMappingTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(NodeMappingTable.COLUMN_ADDRESS_ID, data.getAddressId()); + source.put(NodeMappingTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + return getClient().prepareUpdate(NodeMappingTable.TABLE, data.getId()).setDoc(source); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeMappingEsUIDAO.java similarity index 63% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeMappingEsUIDAO.java index 12f544627..a26f5daaa 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeMappingEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -26,19 +26,23 @@ import org.elasticsearch.action.search.SearchType; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.terms.Terms; -import org.skywalking.apm.collector.cache.ApplicationCache; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.node.NodeMappingTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.INodeMappingUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class NodeMappingEsDAO extends EsDAO implements INodeMappingDAO { +public class NodeMappingEsUIDAO extends EsDAO implements INodeMappingUIDAO { - private final Logger logger = LoggerFactory.getLogger(NodeMappingEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(NodeMappingEsUIDAO.class); + + public NodeMappingEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public JsonArray load(long startTime, long endTime) { SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(NodeMappingTable.TABLE); @@ -49,8 +53,7 @@ public class NodeMappingEsDAO extends EsDAO implements INodeMappingDAO { searchRequestBuilder.addAggregation( AggregationBuilders.terms(NodeMappingTable.COLUMN_APPLICATION_ID).field(NodeMappingTable.COLUMN_APPLICATION_ID).size(100) - .subAggregation(AggregationBuilders.terms(NodeMappingTable.COLUMN_ADDRESS_ID).field(NodeMappingTable.COLUMN_ADDRESS_ID).size(100)) - .subAggregation(AggregationBuilders.terms(NodeMappingTable.COLUMN_ADDRESS).field(NodeMappingTable.COLUMN_ADDRESS).size(100))); + .subAggregation(AggregationBuilders.terms(NodeMappingTable.COLUMN_ADDRESS_ID).field(NodeMappingTable.COLUMN_ADDRESS_ID).size(100))); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); Terms applicationIdTerms = searchResponse.getAggregations().get(NodeMappingTable.COLUMN_APPLICATION_ID); @@ -58,30 +61,13 @@ public class NodeMappingEsDAO extends EsDAO implements INodeMappingDAO { JsonArray nodeMappingArray = new JsonArray(); for (Terms.Bucket applicationIdBucket : applicationIdTerms.getBuckets()) { int applicationId = applicationIdBucket.getKeyAsNumber().intValue(); - String applicationCode = ApplicationCache.get(applicationId); Terms addressIdTerms = applicationIdBucket.getAggregations().get(NodeMappingTable.COLUMN_ADDRESS_ID); for (Terms.Bucket addressIdBucket : addressIdTerms.getBuckets()) { int addressId = addressIdBucket.getKeyAsNumber().intValue(); - String address = ApplicationCache.get(addressId); - - if (addressId != 0) { - JsonObject nodeMappingObj = new JsonObject(); - nodeMappingObj.addProperty("applicationCode", applicationCode); - nodeMappingObj.addProperty("address", address); - nodeMappingArray.add(nodeMappingObj); - } - } - - Terms addressTerms = applicationIdBucket.getAggregations().get(NodeMappingTable.COLUMN_ADDRESS); - for (Terms.Bucket addressBucket : addressTerms.getBuckets()) { - String address = addressBucket.getKeyAsString(); - - if (StringUtils.isNotEmpty(address)) { - JsonObject nodeMappingObj = new JsonObject(); - nodeMappingObj.addProperty("applicationCode", applicationCode); - nodeMappingObj.addProperty("address", address); - nodeMappingArray.add(nodeMappingObj); - } + JsonObject nodeMappingObj = new JsonObject(); + nodeMappingObj.addProperty(NodeMappingTable.COLUMN_APPLICATION_ID, applicationId); + nodeMappingObj.addProperty(NodeMappingTable.COLUMN_ADDRESS_ID, addressId); + nodeMappingArray.add(nodeMappingObj); } } logger.debug("node mapping data: {}", nodeMappingArray.toString()); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeReferenceEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeReferenceEsPersistenceDAO.java new file mode 100644 index 000000000..c58f94061 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeReferenceEsPersistenceDAO.java @@ -0,0 +1,90 @@ +/* + * 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.storage.es.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.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.INodeReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.noderef.NodeReference; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; + +/** + * @author peng-yongsheng + */ +public class NodeReferenceEsPersistenceDAO extends EsDAO implements INodeReferencePersistenceDAO { + + public NodeReferenceEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public NodeReference get(String id) { + GetResponse getResponse = getClient().prepareGet(NodeReferenceTable.TABLE, id).get(); + if (getResponse.isExists()) { + NodeReference nodeReference = new NodeReference(id); + Map source = getResponse.getSource(); + nodeReference.setFrontApplicationId(((Number)source.get(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID)).intValue()); + nodeReference.setBehindApplicationId(((Number)source.get(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID)).intValue()); + nodeReference.setS1Lte(((Number)source.get(NodeReferenceTable.COLUMN_S1_LTE)).intValue()); + nodeReference.setS3Lte(((Number)source.get(NodeReferenceTable.COLUMN_S3_LTE)).intValue()); + nodeReference.setS5Lte(((Number)source.get(NodeReferenceTable.COLUMN_S5_LTE)).intValue()); + nodeReference.setS5Gt(((Number)source.get(NodeReferenceTable.COLUMN_S5_GT)).intValue()); + nodeReference.setSummary(((Number)source.get(NodeReferenceTable.COLUMN_SUMMARY)).intValue()); + nodeReference.setError(((Number)source.get(NodeReferenceTable.COLUMN_ERROR)).intValue()); + nodeReference.setTimeBucket(((Number)source.get(NodeReferenceTable.COLUMN_TIME_BUCKET)).longValue()); + return nodeReference; + } else { + return null; + } + } + + @Override public IndexRequestBuilder prepareBatchInsert(NodeReference data) { + Map source = new HashMap<>(); + source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getFrontApplicationId()); + source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getBehindApplicationId()); + source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(NodeReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(NodeReferenceTable.COLUMN_ERROR, data.getError()); + source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareIndex(NodeReferenceTable.TABLE, data.getId()).setSource(source); + } + + @Override public UpdateRequestBuilder prepareBatchUpdate(NodeReference data) { + Map source = new HashMap<>(); + source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getFrontApplicationId()); + source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getBehindApplicationId()); + source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(NodeReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(NodeReferenceTable.COLUMN_ERROR, data.getError()); + source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareUpdate(NodeReferenceTable.TABLE, data.getId()).setDoc(source); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeReferenceEsUIDAO.java similarity index 51% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeReferenceEsUIDAO.java index 52d3ce3c0..dba339467 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/NodeReferenceEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -28,19 +28,24 @@ import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.elasticsearch.search.aggregations.metrics.sum.Sum; -import org.skywalking.apm.collector.cache.ApplicationCache; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.core.util.ColumnNameUtils; +import org.skywalking.apm.collector.storage.dao.INodeReferenceUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class NodeReferenceEsDAO extends EsDAO implements INodeReferenceDAO { +public class NodeReferenceEsUIDAO extends EsDAO implements INodeReferenceUIDAO { - private final Logger logger = LoggerFactory.getLogger(NodeReferenceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(NodeReferenceEsUIDAO.class); + + public NodeReferenceEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public JsonArray load(long startTime, long endTime) { SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(NodeReferenceTable.TABLE); @@ -57,13 +62,6 @@ public class NodeReferenceEsDAO extends EsDAO implements INodeReferenceDAO { .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_S5_GT).field(NodeReferenceTable.COLUMN_S5_GT)) .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_SUMMARY).field(NodeReferenceTable.COLUMN_SUMMARY)) .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_ERROR).field(NodeReferenceTable.COLUMN_ERROR))); - aggregationBuilder.subAggregation(AggregationBuilders.terms(NodeReferenceTable.COLUMN_BEHIND_PEER).field(NodeReferenceTable.COLUMN_BEHIND_PEER).size(100) - .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_S1_LTE).field(NodeReferenceTable.COLUMN_S1_LTE)) - .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_S3_LTE).field(NodeReferenceTable.COLUMN_S3_LTE)) - .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_S5_LTE).field(NodeReferenceTable.COLUMN_S5_LTE)) - .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_S5_GT).field(NodeReferenceTable.COLUMN_S5_GT)) - .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_SUMMARY).field(NodeReferenceTable.COLUMN_SUMMARY)) - .subAggregation(AggregationBuilders.sum(NodeReferenceTable.COLUMN_ERROR).field(NodeReferenceTable.COLUMN_ERROR))); searchRequestBuilder.addAggregation(aggregationBuilder); SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); @@ -71,60 +69,30 @@ public class NodeReferenceEsDAO extends EsDAO implements INodeReferenceDAO { JsonArray nodeRefResSumArray = new JsonArray(); Terms frontApplicationIdTerms = searchResponse.getAggregations().get(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID); for (Terms.Bucket frontApplicationIdBucket : frontApplicationIdTerms.getBuckets()) { - int applicationId = frontApplicationIdBucket.getKeyAsNumber().intValue(); - String applicationCode = ApplicationCache.get(applicationId); + int frontApplicationId = frontApplicationIdBucket.getKeyAsNumber().intValue(); Terms behindApplicationIdTerms = frontApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID); for (Terms.Bucket behindApplicationIdBucket : behindApplicationIdTerms.getBuckets()) { int behindApplicationId = behindApplicationIdBucket.getKeyAsNumber().intValue(); if (behindApplicationId != 0) { - String behindApplicationCode = ApplicationCache.get(behindApplicationId); - Sum s1LTE = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_S1_LTE); Sum s3LTE = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_S3_LTE); Sum s5LTE = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_S5_LTE); Sum s5GT = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_S5_GT); Sum summary = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_SUMMARY); Sum error = behindApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_ERROR); - logger.debug("applicationId: {}, behindApplicationId: {}, s1LTE: {}, s3LTE: {}, s5LTE: {}, s5GT: {}, error: {}, summary: {}", applicationId, + logger.debug("frontApplicationId: {}, behindApplicationId: {}, s1LTE: {}, s3LTE: {}, s5LTE: {}, s5GT: {}, error: {}, summary: {}", frontApplicationId, behindApplicationId, s1LTE.getValue(), s3LTE.getValue(), s5LTE.getValue(), s5GT.getValue(), error.getValue(), summary.getValue()); JsonObject nodeRefResSumObj = new JsonObject(); - nodeRefResSumObj.addProperty("front", applicationCode); - nodeRefResSumObj.addProperty("behind", behindApplicationCode); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S1_LTE, s1LTE.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S3_LTE, s3LTE.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_LTE, s5LTE.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_GT, s5GT.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_ERROR, error.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_SUMMARY, summary.getValue()); - nodeRefResSumArray.add(nodeRefResSumObj); - } - } - - Terms behindPeerTerms = frontApplicationIdBucket.getAggregations().get(NodeReferenceTable.COLUMN_BEHIND_PEER); - for (Terms.Bucket behindPeerBucket : behindPeerTerms.getBuckets()) { - String behindPeer = behindPeerBucket.getKeyAsString(); - - if (StringUtils.isNotEmpty(behindPeer)) { - Sum s1LTE = behindPeerBucket.getAggregations().get(NodeReferenceTable.COLUMN_S1_LTE); - Sum s3LTE = behindPeerBucket.getAggregations().get(NodeReferenceTable.COLUMN_S3_LTE); - Sum s5LTE = behindPeerBucket.getAggregations().get(NodeReferenceTable.COLUMN_S5_LTE); - Sum s5GT = behindPeerBucket.getAggregations().get(NodeReferenceTable.COLUMN_S5_GT); - Sum summary = behindPeerBucket.getAggregations().get(NodeReferenceTable.COLUMN_SUMMARY); - Sum error = behindPeerBucket.getAggregations().get(NodeReferenceTable.COLUMN_ERROR); - logger.debug("applicationId: {}, behindPeer: {}, s1LTE: {}, s3LTE: {}, s5LTE: {}, s5GT: {}, error: {}, summary: {}", applicationId, - behindPeer, s1LTE.getValue(), s3LTE.getValue(), s5LTE.getValue(), s5GT.getValue(), error.getValue(), summary.getValue()); - - JsonObject nodeRefResSumObj = new JsonObject(); - nodeRefResSumObj.addProperty("front", applicationCode); - nodeRefResSumObj.addProperty("behind", behindPeer); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S1_LTE, s1LTE.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S3_LTE, s3LTE.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_LTE, s5LTE.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_GT, s5GT.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_ERROR, error.getValue()); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_SUMMARY, summary.getValue()); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID), frontApplicationId); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID), behindApplicationId); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S1_LTE), s1LTE.getValue()); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S3_LTE), s3LTE.getValue()); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S5_LTE), s5LTE.getValue()); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S5_GT), s5GT.getValue()); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_ERROR), error.getValue()); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_SUMMARY), summary.getValue()); nodeRefResSumArray.add(nodeRefResSumObj); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/SegmentCostEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentCostEsPersistenceDAO.java similarity index 50% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/SegmentCostEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentCostEsPersistenceDAO.java index b7a8f6746..8e1b0eeac 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/SegmentCostEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentCostEsPersistenceDAO.java @@ -16,47 +16,51 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.cost.dao; +package org.skywalking.apm.collector.storage.es.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.segment.SegmentCostTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.ISegmentCostPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.segment.SegmentCost; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class SegmentCostEsDAO extends EsDAO implements ISegmentCostDAO, IPersistenceDAO { +public class SegmentCostEsPersistenceDAO extends EsDAO implements ISegmentCostPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentCostEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(SegmentCostEsPersistenceDAO.class); - @Override public Data get(String id, DataDefine dataDefine) { + public SegmentCostEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public SegmentCost get(String id) { return null; } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(SegmentCost data) { return null; } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { - logger.debug("segment cost prepareBatchInsert, id: {}", data.getDataString(0)); + @Override public IndexRequestBuilder prepareBatchInsert(SegmentCost data) { + logger.debug("segment cost prepareBatchInsert, getId: {}", data.getId()); Map source = new HashMap<>(); - source.put(SegmentCostTable.COLUMN_SEGMENT_ID, data.getDataString(1)); - source.put(SegmentCostTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(SegmentCostTable.COLUMN_SERVICE_NAME, data.getDataString(2)); - source.put(SegmentCostTable.COLUMN_COST, data.getDataLong(0)); - source.put(SegmentCostTable.COLUMN_START_TIME, data.getDataLong(1)); - source.put(SegmentCostTable.COLUMN_END_TIME, data.getDataLong(2)); - source.put(SegmentCostTable.COLUMN_IS_ERROR, data.getDataBoolean(0)); - source.put(SegmentCostTable.COLUMN_TIME_BUCKET, data.getDataLong(3)); + source.put(SegmentCostTable.COLUMN_SEGMENT_ID, data.getSegmentId()); + source.put(SegmentCostTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(SegmentCostTable.COLUMN_SERVICE_NAME, data.getServiceName()); + source.put(SegmentCostTable.COLUMN_COST, data.getCost()); + source.put(SegmentCostTable.COLUMN_START_TIME, data.getStartTime()); + source.put(SegmentCostTable.COLUMN_END_TIME, data.getEndTime()); + source.put(SegmentCostTable.COLUMN_IS_ERROR, data.getIsError()); + source.put(SegmentCostTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); logger.debug("segment cost source: {}", source.toString()); - return getClient().prepareIndex(SegmentCostTable.TABLE, data.getDataString(0)).setSource(source); + return getClient().prepareIndex(SegmentCostTable.TABLE, data.getId()).setSource(source); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentCostEsUIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentCostEsUIDAO.java index 87a02bf92..d66815b97 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentCostEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -30,17 +30,21 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.RangeQueryBuilder; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.sort.SortOrder; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.CollectionUtils; import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; /** * @author peng-yongsheng */ -public class SegmentCostEsDAO extends EsDAO implements ISegmentCostDAO { +public class SegmentCostEsUIDAO extends EsDAO implements ISegmentCostUIDAO { + + public SegmentCostEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName, Error error, int applicationId, List segmentIds, int limit, int from, Sort sort) { @@ -104,12 +108,6 @@ public class SegmentCostEsDAO extends EsDAO implements ISegmentCostDAO { topSegmentJson.addProperty(SegmentCostTable.COLUMN_END_TIME, (Number)searchHit.getSource().get(SegmentCostTable.COLUMN_END_TIME)); } - IGlobalTraceDAO globalTraceDAO = (IGlobalTraceDAO)DAOContainer.INSTANCE.get(IGlobalTraceDAO.class.getName()); - List globalTraces = globalTraceDAO.getGlobalTraceId(segmentId); - if (CollectionUtils.isNotEmpty(globalTraces)) { - topSegmentJson.addProperty(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, globalTraces.get(0)); - } - topSegmentJson.addProperty(SegmentCostTable.COLUMN_APPLICATION_ID, (Number)searchHit.getSource().get(SegmentCostTable.COLUMN_APPLICATION_ID)); topSegmentJson.addProperty(SegmentCostTable.COLUMN_SERVICE_NAME, (String)searchHit.getSource().get(SegmentCostTable.COLUMN_SERVICE_NAME)); topSegmentJson.addProperty(SegmentCostTable.COLUMN_COST, (Number)searchHit.getSource().get(SegmentCostTable.COLUMN_COST)); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java similarity index 59% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java index 26e597e14..aed49c510 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentEsPersistenceDAO.java @@ -16,40 +16,44 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.origin.dao; +package org.skywalking.apm.collector.storage.es.dao; import java.util.Base64; 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.segment.SegmentTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.segment.Segment; +import org.skywalking.apm.collector.storage.table.segment.SegmentTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class SegmentEsDAO extends EsDAO implements ISegmentDAO, IPersistenceDAO { +public class SegmentEsPersistenceDAO extends EsDAO implements ISegmentPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(SegmentEsPersistenceDAO.class); - @Override public Data get(String id, DataDefine dataDefine) { + public SegmentEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public Segment get(String id) { return null; } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(Segment data) { return null; } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(Segment data) { Map source = new HashMap<>(); - source.put(SegmentTable.COLUMN_DATA_BINARY, new String(Base64.getEncoder().encode(data.getDataBytes(0)))); + source.put(SegmentTable.COLUMN_DATA_BINARY, new String(Base64.getEncoder().encode(data.getDataBinary()))); logger.debug("segment source: {}", source.toString()); - return getClient().prepareIndex(SegmentTable.TABLE, data.getDataString(0)).setSource(source); + return getClient().prepareIndex(SegmentTable.TABLE, data.getId()).setSource(source); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentEsUIDAO.java similarity index 78% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentEsUIDAO.java index 43047665e..562ff7ec7 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/SegmentEsUIDAO.java @@ -16,15 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.protobuf.InvalidProtocolBufferException; import java.util.Base64; import java.util.Map; import org.elasticsearch.action.get.GetResponse; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.segment.SegmentTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.segment.SegmentTable; import org.skywalking.apm.network.proto.TraceSegmentObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -32,9 +34,13 @@ import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class SegmentEsDAO extends EsDAO implements ISegmentDAO { +public class SegmentEsUIDAO extends EsDAO implements ISegmentUIDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(SegmentEsUIDAO.class); + + public SegmentEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public TraceSegmentObject load(String segmentId) { GetResponse response = getClient().prepareGet(SegmentTable.TABLE, segmentId).get(); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceEntryEsPersistenceDAO.java similarity index 53% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceEntryEsPersistenceDAO.java index 724bd91d0..a4f16d612 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceEntryEsPersistenceDAO.java @@ -16,58 +16,62 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.service.entry.dao; +package org.skywalking.apm.collector.storage.es.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.service.ServiceEntryTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.stream.worker.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IServiceEntryPersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.service.ServiceEntry; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; /** * @author peng-yongsheng */ -public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO, IPersistenceDAO { +public class ServiceEntryEsPersistenceDAO extends EsDAO implements IServiceEntryPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + public ServiceEntryEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public ServiceEntry get(String id) { GetResponse getResponse = getClient().prepareGet(ServiceEntryTable.TABLE, id).get(); if (getResponse.isExists()) { - Data data = dataDefine.build(id); + ServiceEntry serviceEntry = new ServiceEntry(id); Map source = getResponse.getSource(); - data.setDataInteger(0, ((Number)source.get(ServiceEntryTable.COLUMN_APPLICATION_ID)).intValue()); - data.setDataInteger(1, ((Number)source.get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID)).intValue()); - data.setDataString(1, (String)source.get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME)); - data.setDataLong(0, ((Number)source.get(ServiceEntryTable.COLUMN_REGISTER_TIME)).longValue()); - data.setDataLong(1, ((Number)source.get(ServiceEntryTable.COLUMN_NEWEST_TIME)).longValue()); - return data; + serviceEntry.setApplicationId(((Number)source.get(ServiceEntryTable.COLUMN_APPLICATION_ID)).intValue()); + serviceEntry.setEntryServiceId(((Number)source.get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID)).intValue()); + serviceEntry.setEntryServiceName((String)source.get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME)); + serviceEntry.setRegisterTime(((Number)source.get(ServiceEntryTable.COLUMN_REGISTER_TIME)).longValue()); + serviceEntry.setNewestTime(((Number)source.get(ServiceEntryTable.COLUMN_NEWEST_TIME)).longValue()); + return serviceEntry; } else { return null; } } - @Override public IndexRequestBuilder prepareBatchInsert(Data data) { + @Override public IndexRequestBuilder prepareBatchInsert(ServiceEntry data) { Map source = new HashMap<>(); - source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getDataLong(0)); - source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getDataLong(1)); - return getClient().prepareIndex(ServiceEntryTable.TABLE, data.getDataString(0)).setSource(source); + source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getEntryServiceName()); + source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getRegisterTime()); + source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getNewestTime()); + return getClient().prepareIndex(ServiceEntryTable.TABLE, data.getId()).setSource(source); } - @Override public UpdateRequestBuilder prepareBatchUpdate(Data data) { + @Override public UpdateRequestBuilder prepareBatchUpdate(ServiceEntry data) { Map source = new HashMap<>(); - source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getDataLong(0)); - source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getDataLong(1)); + source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getEntryServiceName()); + source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getRegisterTime()); + source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getNewestTime()); - return getClient().prepareUpdate(ServiceEntryTable.TABLE, data.getDataString(0)).setDoc(source); + return getClient().prepareUpdate(ServiceEntryTable.TABLE, data.getId()).setDoc(source); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceEntryEsUIDAO.java similarity index 89% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceEntryEsUIDAO.java index 2574818ea..646ebab3f 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceEntryEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -29,16 +29,21 @@ import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; -import org.skywalking.apm.collector.cache.ApplicationCache; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.ColumnNameUtils; import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; /** * @author peng-yongsheng */ -public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO { +public class ServiceEntryEsUIDAO extends EsDAO implements IServiceEntryUIDAO { + + public ServiceEntryEsUIDAO(ElasticSearchClient client) { + super(client); + } @Override public JsonObject load(int applicationId, String entryServiceName, long startTime, long endTime, int from, @@ -75,14 +80,12 @@ public class ServiceEntryEsDAO extends EsDAO implements IServiceEntryDAO { for (SearchHit searchHit : searchHits.getHits()) { int applicationId = ((Number)searchHit.getSource().get(ServiceEntryTable.COLUMN_APPLICATION_ID)).intValue(); int entryServiceId = ((Number)searchHit.getSource().get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID)).intValue(); - String applicationCode = ApplicationCache.get(applicationId); String entryServiceName = (String)searchHit.getSource().get(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME); JsonObject row = new JsonObject(); row.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID), entryServiceId); row.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME), entryServiceName); row.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_APPLICATION_ID), applicationId); - row.addProperty("applicationCode", applicationCode); serviceArray.add(row); } diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsCacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceNameEsCacheDAO.java similarity index 87% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsCacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceNameEsCacheDAO.java index 4d3ab730b..80e18a02b 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameEsCacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceNameEsCacheDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.es.dao; import org.elasticsearch.action.get.GetRequestBuilder; import org.elasticsearch.action.get.GetResponse; @@ -26,15 +26,21 @@ import org.elasticsearch.action.search.SearchType; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.register.ServiceNameTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.ServiceNameTable; /** * @author peng-yongsheng */ public class ServiceNameEsCacheDAO extends EsDAO implements IServiceNameCacheDAO { + public ServiceNameEsCacheDAO(ElasticSearchClient client) { + super(client); + } + @Override public String getServiceName(int serviceId) { GetRequestBuilder getRequestBuilder = getClient().prepareGet(ServiceNameTable.TABLE, String.valueOf(serviceId)); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceNameEsRegisterDAO.java similarity index 71% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceNameEsRegisterDAO.java index c82ba981f..c0b4d4c49 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceNameEsRegisterDAO.java @@ -16,25 +16,30 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.servicename.dao; +package org.skywalking.apm.collector.storage.es.dao; import java.util.HashMap; import java.util.Map; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.support.WriteRequest; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.storage.define.register.ServiceNameDataDefine; -import org.skywalking.apm.collector.storage.define.register.ServiceNameTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameRegisterDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.register.ServiceName; +import org.skywalking.apm.collector.storage.table.register.ServiceNameTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO { +public class ServiceNameEsRegisterDAO extends EsDAO implements IServiceNameRegisterDAO { - private final Logger logger = LoggerFactory.getLogger(ServiceNameEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(ServiceNameEsRegisterDAO.class); + + public ServiceNameEsRegisterDAO(ElasticSearchClient client) { + super(client); + } @Override public int getMaxServiceId() { return getMaxId(ServiceNameTable.TABLE, ServiceNameTable.COLUMN_SERVICE_ID); @@ -44,8 +49,8 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO { return getMinId(ServiceNameTable.TABLE, ServiceNameTable.COLUMN_SERVICE_ID); } - @Override public void save(ServiceNameDataDefine.ServiceName serviceName) { - logger.debug("save service name register info, application id: {}, service name: {}", serviceName.getApplicationId(), serviceName.getServiceName()); + @Override public void save(ServiceName serviceName) { + logger.debug("save service name register info, application getId: {}, service name: {}", serviceName.getId(), serviceName.getServiceName()); ElasticSearchClient client = getClient(); Map source = new HashMap<>(); source.put(ServiceNameTable.COLUMN_SERVICE_ID, serviceName.getServiceId()); @@ -53,6 +58,6 @@ public class ServiceNameEsDAO extends EsDAO implements IServiceNameDAO { source.put(ServiceNameTable.COLUMN_SERVICE_NAME, serviceName.getServiceName()); IndexResponse response = client.prepareIndex(ServiceNameTable.TABLE, serviceName.getId()).setSource(source).setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE).get(); - logger.debug("save service name register info, application id: {}, service name: {}, status: {}", serviceName.getApplicationId(), serviceName.getServiceName(), response.status().name()); + logger.debug("save service name register info, application getId: {}, service name: {}, status: {}", serviceName.getId(), serviceName.getServiceName(), response.status().name()); } } diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceReferenceEsPersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceReferenceEsPersistenceDAO.java new file mode 100644 index 000000000..ff96008b4 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceReferenceEsPersistenceDAO.java @@ -0,0 +1,100 @@ +/* + * 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.storage.es.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.client.elasticsearch.ElasticSearchClient; +import org.skywalking.apm.collector.storage.dao.IServiceReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class ServiceReferenceEsPersistenceDAO extends EsDAO implements IServiceReferencePersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(ServiceReferenceEsPersistenceDAO.class); + + public ServiceReferenceEsPersistenceDAO(ElasticSearchClient client) { + super(client); + } + + @Override public ServiceReference get(String id) { + GetResponse getResponse = getClient().prepareGet(ServiceReferenceTable.TABLE, id).get(); + if (getResponse.isExists()) { + ServiceReference serviceReference = new ServiceReference(id); + Map source = getResponse.getSource(); + serviceReference.setEntryServiceId(((Number)source.get(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID)).intValue()); + serviceReference.setFrontServiceId(((Number)source.get(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).intValue()); + serviceReference.setBehindServiceId(((Number)source.get(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).intValue()); + serviceReference.setS1Lte(((Number)source.get(ServiceReferenceTable.COLUMN_S1_LTE)).longValue()); + serviceReference.setS3Lte(((Number)source.get(ServiceReferenceTable.COLUMN_S3_LTE)).longValue()); + serviceReference.setS5Lte(((Number)source.get(ServiceReferenceTable.COLUMN_S5_LTE)).longValue()); + serviceReference.setS5Gt(((Number)source.get(ServiceReferenceTable.COLUMN_S5_GT)).longValue()); + serviceReference.setSummary(((Number)source.get(ServiceReferenceTable.COLUMN_SUMMARY)).longValue()); + serviceReference.setError(((Number)source.get(ServiceReferenceTable.COLUMN_ERROR)).longValue()); + serviceReference.setCostSummary(((Number)source.get(ServiceReferenceTable.COLUMN_COST_SUMMARY)).longValue()); + serviceReference.setTimeBucket(((Number)source.get(ServiceReferenceTable.COLUMN_TIME_BUCKET)).longValue()); + return serviceReference; + } else { + return null; + } + } + + @Override public IndexRequestBuilder prepareBatchInsert(ServiceReference data) { + Map source = new HashMap<>(); + source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getFrontServiceId()); + source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getBehindServiceId()); + source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(ServiceReferenceTable.COLUMN_ERROR, data.getError()); + source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getCostSummary()); + source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareIndex(ServiceReferenceTable.TABLE, data.getId()).setSource(source); + } + + @Override public UpdateRequestBuilder prepareBatchUpdate(ServiceReference data) { + Map source = new HashMap<>(); + source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getFrontServiceId()); + source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getBehindServiceId()); + source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(ServiceReferenceTable.COLUMN_ERROR, data.getError()); + source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getCostSummary()); + source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + return getClient().prepareUpdate(ServiceReferenceTable.TABLE, data.getId()).setDoc(source); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceReferenceEsUIDAO.java similarity index 83% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceReferenceEsUIDAO.java index 2f4bc38d8..1a4531d13 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceEsDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/dao/ServiceReferenceEsUIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.es.dao; import com.google.gson.JsonObject; import java.util.LinkedHashMap; @@ -29,22 +29,28 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.metrics.sum.Sum; -import org.skywalking.apm.collector.cache.ServiceNameCache; +import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.util.ColumnNameUtils; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferenceUIDAO; +import org.skywalking.apm.collector.storage.es.base.dao.EsDAO; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO { +public class ServiceReferenceEsUIDAO extends EsDAO implements IServiceReferenceUIDAO { - private final Logger logger = LoggerFactory.getLogger(ServiceReferenceEsDAO.class); + private final Logger logger = LoggerFactory.getLogger(ServiceReferenceEsUIDAO.class); - @Override public Map load(int entryServiceId, long startTime, long endTime) { + public ServiceReferenceEsUIDAO(ElasticSearchClient client) { + super(client); + } + + @Override + public Map load(int entryServiceId, long startTime, long endTime) { SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(ServiceReferenceTable.TABLE); searchRequestBuilder.setTypes(ServiceReferenceTable.TABLE_TYPE); searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); @@ -52,12 +58,7 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); boolQuery.must().add(QueryBuilders.rangeQuery(ServiceReferenceTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); boolQuery.must().add(QueryBuilders.rangeQuery(ServiceReferenceTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); - - String entryServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(entryServiceId)); - BoolQueryBuilder entryBoolQuery = QueryBuilders.boolQuery(); - entryBoolQuery.should().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, entryServiceId)); - entryBoolQuery.should().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, entryServiceName)); - boolQuery.must(entryBoolQuery); + boolQuery.must().add(QueryBuilders.matchQuery(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, entryServiceId)); searchRequestBuilder.setQuery(boolQuery); searchRequestBuilder.setSize(0); @@ -105,14 +106,9 @@ public class ServiceReferenceEsDAO extends EsDAO implements IServiceReferenceDAO Sum summary = behindServiceIdBucket.getAggregations().get(ServiceReferenceTable.COLUMN_SUMMARY); Sum costSum = behindServiceIdBucket.getAggregations().get(ServiceReferenceTable.COLUMN_COST_SUMMARY); - String frontServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(frontServiceId)); - String behindServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(behindServiceId)); - JsonObject serviceReference = new JsonObject(); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID), frontServiceId); - serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME), frontServiceName); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID), behindServiceId); - serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME), behindServiceName); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE), (long)s1LteSum.getValue()); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE), (long)s3LteSum.getValue()); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE), (long)s5LteSum.getValue()); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java similarity index 79% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java index 0db462e6a..cae76d3a0 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ApplicationEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.application; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.register.ApplicationTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.register.ApplicationTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/CpuMetricEsTableDefine.java similarity index 81% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/CpuMetricEsTableDefine.java index c73389119..d49c48d46 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/CpuMetricEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.cpu.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetricTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/GCMetricEsTableDefine.java similarity index 83% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/GCMetricEsTableDefine.java index a5012800a..0e5c5b52b 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/GCMetricEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.gc.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.jvm.GCMetricTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/define/GlobalTraceEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/GlobalTraceEsTableDefine.java similarity index 81% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/define/GlobalTraceEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/GlobalTraceEsTableDefine.java index 7de114578..626961037 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/define/GlobalTraceEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/GlobalTraceEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.global.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/InstPerformanceEsTableDefine.java similarity index 83% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/InstPerformanceEsTableDefine.java index e5e9e0881..92523d2d3 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/InstPerformanceEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.instance.performance.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.instance.InstPerformanceTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java similarity index 84% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java index 7e5c854c1..0b1e59ab2 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/InstanceEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.instance; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/define/MemoryMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/MemoryMetricEsTableDefine.java similarity index 81% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/define/MemoryMetricEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/MemoryMetricEsTableDefine.java index 947e75772..10530e477 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/define/MemoryMetricEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/MemoryMetricEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memory.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; /** * @author peng-yongsheng @@ -36,7 +36,7 @@ public class MemoryMetricEsTableDefine extends ElasticSearchTableDefine { } @Override public void initialize() { - addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_APPLICATION_INSTANCE_ID, ElasticSearchColumnDefine.Type.Integer.name())); + addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_INSTANCE_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_IS_HEAP, ElasticSearchColumnDefine.Type.Boolean.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_INIT, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(MemoryMetricTable.COLUMN_MAX, ElasticSearchColumnDefine.Type.Long.name())); diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/MemoryPoolMetricEsTableDefine.java similarity index 85% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/MemoryPoolMetricEsTableDefine.java index d8bba3980..86e34a89b 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/MemoryPoolMetricEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memorypool.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetricTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/define/NodeComponentEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeComponentEsTableDefine.java similarity index 70% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/define/NodeComponentEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeComponentEsTableDefine.java index 71e935d82..75cb22cb2 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/define/NodeComponentEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeComponentEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.component.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.node.NodeComponentTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; /** * @author peng-yongsheng @@ -37,9 +37,7 @@ public class NodeComponentEsTableDefine extends ElasticSearchTableDefine { @Override public void initialize() { addColumn(new ElasticSearchColumnDefine(NodeComponentTable.COLUMN_COMPONENT_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(NodeComponentTable.COLUMN_COMPONENT_NAME, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(NodeComponentTable.COLUMN_PEER_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(NodeComponentTable.COLUMN_PEER, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(NodeComponentTable.COLUMN_TIME_BUCKET, ElasticSearchColumnDefine.Type.Long.name())); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/define/NodeMappingEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeMappingEsTableDefine.java similarity index 75% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/define/NodeMappingEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeMappingEsTableDefine.java index 1a793abd0..a84fd9a1b 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/define/NodeMappingEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeMappingEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.mapping.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.node.NodeMappingTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; /** * @author peng-yongsheng @@ -38,7 +38,6 @@ public class NodeMappingEsTableDefine extends ElasticSearchTableDefine { @Override public void initialize() { addColumn(new ElasticSearchColumnDefine(NodeMappingTable.COLUMN_APPLICATION_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(NodeMappingTable.COLUMN_ADDRESS_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(NodeMappingTable.COLUMN_ADDRESS, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(NodeMappingTable.COLUMN_TIME_BUCKET, ElasticSearchColumnDefine.Type.Long.name())); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/define/NodeReferenceEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeReferenceEsTableDefine.java similarity index 82% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/define/NodeReferenceEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeReferenceEsTableDefine.java index 4b8d2753b..9e87b653a 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/define/NodeReferenceEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/NodeReferenceEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.noderef.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; /** * @author peng-yongsheng @@ -38,7 +38,6 @@ public class NodeReferenceEsTableDefine extends ElasticSearchTableDefine { @Override public void initialize() { addColumn(new ElasticSearchColumnDefine(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(NodeReferenceTable.COLUMN_BEHIND_PEER, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(NodeReferenceTable.COLUMN_S1_LTE, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(NodeReferenceTable.COLUMN_S3_LTE, ElasticSearchColumnDefine.Type.Integer.name())); addColumn(new ElasticSearchColumnDefine(NodeReferenceTable.COLUMN_S5_LTE, ElasticSearchColumnDefine.Type.Integer.name())); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/define/SegmentCostEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/SegmentCostEsTableDefine.java similarity index 85% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/define/SegmentCostEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/SegmentCostEsTableDefine.java index 8a7e38c2a..6af322e45 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/define/SegmentCostEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/SegmentCostEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.cost.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/define/SegmentEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/SegmentEsTableDefine.java similarity index 77% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/define/SegmentEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/SegmentEsTableDefine.java index 6c38de543..c5885869a 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/define/SegmentEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/SegmentEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.origin.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.segment.SegmentTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.segment.SegmentTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceEntryEsTableDefine.java similarity index 83% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceEntryEsTableDefine.java index 62ed13bf2..2621dfb37 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceEntryEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.service.entry.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceNameEsTableDefine.java similarity index 81% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceNameEsTableDefine.java index 85cfc58e1..0b7eab1bc 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceNameEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.servicename; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.register.ServiceNameTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.register.ServiceNameTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceEsTableDefine.java b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceReferenceEsTableDefine.java similarity index 77% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceEsTableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceReferenceEsTableDefine.java index 3090c98f1..5c6a8b38e 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceEsTableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/skywalking/apm/collector/storage/es/define/ServiceReferenceEsTableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.serviceref.define; +package org.skywalking.apm.collector.storage.es.define; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchColumnDefine; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchColumnDefine; +import org.skywalking.apm.collector.storage.es.base.define.ElasticSearchTableDefine; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; /** * @author peng-yongsheng @@ -38,11 +38,8 @@ public class ServiceReferenceEsTableDefine extends ElasticSearchTableDefine { @Override public void initialize() { addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_AGG, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, ElasticSearchColumnDefine.Type.Integer.name())); - addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, ElasticSearchColumnDefine.Type.Keyword.name())); addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_S1_LTE, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_S3_LTE, ElasticSearchColumnDefine.Type.Long.name())); addColumn(new ElasticSearchColumnDefine(ServiceReferenceTable.COLUMN_S5_LTE, ElasticSearchColumnDefine.Type.Long.name())); diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define new file mode 100644 index 000000000..539421a58 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define @@ -0,0 +1,16 @@ +org.skywalking.apm.collector.storage.es.define.ApplicationEsTableDefine +org.skywalking.apm.collector.storage.es.define.InstanceEsTableDefine +org.skywalking.apm.collector.storage.es.define.ServiceNameEsTableDefine +org.skywalking.apm.collector.storage.es.define.CpuMetricEsTableDefine +org.skywalking.apm.collector.storage.es.define.GCMetricEsTableDefine +org.skywalking.apm.collector.storage.es.define.MemoryMetricEsTableDefine +org.skywalking.apm.collector.storage.es.define.MemoryPoolMetricEsTableDefine +org.skywalking.apm.collector.storage.es.define.GlobalTraceEsTableDefine +org.skywalking.apm.collector.storage.es.define.InstPerformanceEsTableDefine +org.skywalking.apm.collector.storage.es.define.NodeComponentEsTableDefine +org.skywalking.apm.collector.storage.es.define.NodeMappingEsTableDefine +org.skywalking.apm.collector.storage.es.define.NodeReferenceEsTableDefine +org.skywalking.apm.collector.storage.es.define.SegmentCostEsTableDefine +org.skywalking.apm.collector.storage.es.define.SegmentEsTableDefine +org.skywalking.apm.collector.storage.es.define.ServiceEntryEsTableDefine +org.skywalking.apm.collector.storage.es.define.ServiceReferenceEsTableDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..6e20edd75 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-es-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.storage.es.StorageModuleEsProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/pom.xml b/apm-collector/apm-collector-storage/collector-storage-h2-provider/pom.xml new file mode 100644 index 000000000..653d6f6e6 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-storage + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-storage-h2-provider + jar + + + + org.skywalking + collector-storage-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java new file mode 100644 index 000000000..9f34717b8 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java @@ -0,0 +1,204 @@ +/* + * 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.storage.h2; + +import java.util.Properties; +import org.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.client.h2.H2ClientException; +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.storage.StorageException; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; +import org.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ICpuMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformancePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeComponentPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeComponentUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferenceUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryPersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IServiceEntryUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; +import org.skywalking.apm.collector.storage.dao.IServiceNameRegisterDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferenceUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.BatchH2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2StorageInstaller; +import org.skywalking.apm.collector.storage.h2.dao.ApplicationH2CacheDAO; +import org.skywalking.apm.collector.storage.h2.dao.ApplicationH2RegisterDAO; +import org.skywalking.apm.collector.storage.h2.dao.CpuMetricH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.CpuMetricH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.GCMetricH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.GCMetricH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.GlobalTraceH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.GlobalTraceH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.InstPerformanceH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.InstPerformanceH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.InstanceH2CacheDAO; +import org.skywalking.apm.collector.storage.h2.dao.InstanceH2RegisterDAO; +import org.skywalking.apm.collector.storage.h2.dao.InstanceH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.InstanceHeartBeatH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.MemoryMetricH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.MemoryMetricH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.MemoryPoolMetricH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.MemoryPoolMetricH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.NodeComponentH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.NodeComponentH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.NodeMappingH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.NodeMappingH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.NodeReferenceH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.NodeReferenceH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.SegmentCostH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.SegmentCostH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.SegmentH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.SegmentH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.ServiceEntryH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.ServiceEntryH2UIDAO; +import org.skywalking.apm.collector.storage.h2.dao.ServiceNameH2CacheDAO; +import org.skywalking.apm.collector.storage.h2.dao.ServiceNameH2RegisterDAO; +import org.skywalking.apm.collector.storage.h2.dao.ServiceReferenceH2PersistenceDAO; +import org.skywalking.apm.collector.storage.h2.dao.ServiceReferenceH2UIDAO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class StorageModuleH2Provider extends ModuleProvider { + + private final Logger logger = LoggerFactory.getLogger(StorageModuleH2Provider.class); + + private static final String URL = "url"; + private static final String USER_NAME = "user_name"; + private static final String PASSWORD = "password"; + + private H2Client h2Client; + + @Override public String name() { + return "h2"; + } + + @Override public Class module() { + return StorageModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + String url = config.getProperty(URL); + String userName = config.getProperty(USER_NAME); + String password = config.getProperty(PASSWORD); + h2Client = new H2Client(url, userName, password); + + this.registerServiceImplementation(IBatchDAO.class, new BatchH2DAO(h2Client)); + registerCacheDAO(); + registerRegisterDAO(); + registerPersistenceDAO(); + registerUiDAO(); + } + + @Override public void start(Properties config) throws ServiceNotProvidedException { + try { + h2Client.initialize(); + + H2StorageInstaller installer = new H2StorageInstaller(); + installer.install(h2Client); + } catch (H2ClientException | StorageException e) { + logger.error(e.getMessage(), e); + } + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[0]; + } + + private void registerCacheDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(IApplicationCacheDAO.class, new ApplicationH2CacheDAO(h2Client)); + this.registerServiceImplementation(IInstanceCacheDAO.class, new InstanceH2CacheDAO(h2Client)); + this.registerServiceImplementation(IServiceNameCacheDAO.class, new ServiceNameH2CacheDAO(h2Client)); + } + + private void registerRegisterDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(IApplicationRegisterDAO.class, new ApplicationH2RegisterDAO(h2Client)); + this.registerServiceImplementation(IInstanceRegisterDAO.class, new InstanceH2RegisterDAO(h2Client)); + this.registerServiceImplementation(IServiceNameRegisterDAO.class, new ServiceNameH2RegisterDAO(h2Client)); + } + + private void registerPersistenceDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(ICpuMetricPersistenceDAO.class, new CpuMetricH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(IGCMetricPersistenceDAO.class, new GCMetricH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(IMemoryMetricPersistenceDAO.class, new MemoryMetricH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(IMemoryPoolMetricPersistenceDAO.class, new MemoryPoolMetricH2PersistenceDAO(h2Client)); + + this.registerServiceImplementation(IGlobalTracePersistenceDAO.class, new GlobalTraceH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(IInstPerformancePersistenceDAO.class, new InstPerformanceH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(INodeComponentPersistenceDAO.class, new NodeComponentH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(INodeMappingPersistenceDAO.class, new NodeMappingH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(INodeReferencePersistenceDAO.class, new NodeReferenceH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(ISegmentCostPersistenceDAO.class, new SegmentCostH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(ISegmentPersistenceDAO.class, new SegmentH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(IServiceEntryPersistenceDAO.class, new ServiceEntryH2PersistenceDAO(h2Client)); + this.registerServiceImplementation(IServiceReferencePersistenceDAO.class, new ServiceReferenceH2PersistenceDAO(h2Client)); + + this.registerServiceImplementation(IInstanceHeartBeatPersistenceDAO.class, new InstanceHeartBeatH2PersistenceDAO(h2Client)); + } + + private void registerUiDAO() throws ServiceNotProvidedException { + this.registerServiceImplementation(IInstanceUIDAO.class, new InstanceH2UIDAO(h2Client)); + + this.registerServiceImplementation(ICpuMetricUIDAO.class, new CpuMetricH2UIDAO(h2Client)); + this.registerServiceImplementation(IGCMetricUIDAO.class, new GCMetricH2UIDAO(h2Client)); + this.registerServiceImplementation(IMemoryMetricUIDAO.class, new MemoryMetricH2UIDAO(h2Client)); + this.registerServiceImplementation(IMemoryPoolMetricUIDAO.class, new MemoryPoolMetricH2UIDAO(h2Client)); + + this.registerServiceImplementation(IGlobalTraceUIDAO.class, new GlobalTraceH2UIDAO(h2Client)); + this.registerServiceImplementation(IInstPerformanceUIDAO.class, new InstPerformanceH2UIDAO(h2Client)); + this.registerServiceImplementation(INodeComponentUIDAO.class, new NodeComponentH2UIDAO(h2Client)); + this.registerServiceImplementation(INodeMappingUIDAO.class, new NodeMappingH2UIDAO(h2Client)); + this.registerServiceImplementation(INodeReferenceUIDAO.class, new NodeReferenceH2UIDAO(h2Client)); + this.registerServiceImplementation(ISegmentCostUIDAO.class, new SegmentCostH2UIDAO(h2Client)); + this.registerServiceImplementation(ISegmentUIDAO.class, new SegmentH2UIDAO(h2Client)); + this.registerServiceImplementation(IServiceEntryUIDAO.class, new ServiceEntryH2UIDAO(h2Client)); + this.registerServiceImplementation(IServiceReferenceUIDAO.class, new ServiceReferenceH2UIDAO(h2Client)); + } +} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/BatchH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/dao/BatchH2DAO.java similarity index 90% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/BatchH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/dao/BatchH2DAO.java index 4175f47bb..840ec4361 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/BatchH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/dao/BatchH2DAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2.dao; +package org.skywalking.apm.collector.storage.h2.base.dao; import java.sql.Connection; import java.sql.PreparedStatement; @@ -24,9 +24,10 @@ import java.sql.SQLException; 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.storage.dao.IBatchDAO; -import org.skywalking.apm.collector.storage.h2.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,8 +35,13 @@ import org.slf4j.LoggerFactory; * @author peng-yongsheng */ public class BatchH2DAO extends H2DAO implements IBatchDAO { + private final Logger logger = LoggerFactory.getLogger(BatchH2DAO.class); + public BatchH2DAO(H2Client client) { + super(client); + } + @Override public void batchPersistence(List batchCollection) { if (batchCollection != null && batchCollection.size() > 0) { diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/dao/H2DAO.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/dao/H2DAO.java index ff6403353..7aa9f1b3c 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/dao/H2DAO.java @@ -16,22 +16,27 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2.dao; +package org.skywalking.apm.collector.storage.h2.base.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.storage.dao.DAO; +import org.skywalking.apm.collector.storage.base.dao.AbstractDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public abstract class H2DAO extends DAO { +public abstract class H2DAO extends AbstractDAO { + private final Logger logger = LoggerFactory.getLogger(H2DAO.class); + public H2DAO(H2Client client) { + super(client); + } + protected final int getMaxId(String tableName, String columnName) { String sql = "select max(" + columnName + ") from " + tableName; return getIntValueBySQL(sql); diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2ColumnDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2ColumnDefine.java similarity index 88% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2ColumnDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2ColumnDefine.java index 1a9e2bfff..73d1fece7 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2ColumnDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2ColumnDefine.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2.define; +package org.skywalking.apm.collector.storage.h2.base.define; -import org.skywalking.apm.collector.core.storage.ColumnDefine; +import org.skywalking.apm.collector.core.data.ColumnDefine; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2SqlEntity.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2SqlEntity.java similarity index 94% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2SqlEntity.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2SqlEntity.java index 39cba0ad9..0818bf9f9 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2SqlEntity.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2SqlEntity.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2.define; +package org.skywalking.apm.collector.storage.h2.base.define; /** * @author clevertension diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2StorageInstaller.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2StorageInstaller.java similarity index 91% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2StorageInstaller.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2StorageInstaller.java index e9ef07141..03d181c17 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2StorageInstaller.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2StorageInstaller.java @@ -16,15 +16,15 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2.define; +package org.skywalking.apm.collector.storage.h2.base.define; +import org.skywalking.apm.collector.client.Client; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.storage.StorageException; -import org.skywalking.apm.collector.core.storage.StorageInstallException; -import org.skywalking.apm.collector.core.storage.StorageInstaller; -import org.skywalking.apm.collector.core.storage.TableDefine; +import org.skywalking.apm.collector.storage.StorageException; +import org.skywalking.apm.collector.storage.StorageInstallException; +import org.skywalking.apm.collector.storage.StorageInstaller; +import org.skywalking.apm.collector.core.data.TableDefine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2TableDefine.java similarity index 87% rename from apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2TableDefine.java index 6e7a2f326..2b7c60f80 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/define/H2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/base/define/H2TableDefine.java @@ -16,9 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.storage.h2.define; +package org.skywalking.apm.collector.storage.h2.base.define; -import org.skywalking.apm.collector.core.storage.TableDefine; +import org.skywalking.apm.collector.core.data.TableDefine; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2CacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java similarity index 84% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2CacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java index accd1c094..364e9dd1c 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ApplicationH2CacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ApplicationH2CacheDAO.java @@ -16,16 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.register.ApplicationTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IApplicationCacheDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.ApplicationTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,9 +38,13 @@ public class ApplicationH2CacheDAO extends H2DAO implements IApplicationCacheDAO private final Logger logger = LoggerFactory.getLogger(ApplicationH2CacheDAO.class); private static final String GET_APPLICATION_ID_OR_CODE_SQL = "select {0} from {1} where {2} = ?"; + public ApplicationH2CacheDAO(H2Client client) { + super(client); + } + @Override public int getApplicationId(String applicationCode) { - logger.info("get the application id with application code = {}", applicationCode); + logger.info("get the application getId with application code = {}", applicationCode); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_OR_CODE_SQL, ApplicationTable.COLUMN_APPLICATION_ID, ApplicationTable.TABLE, ApplicationTable.COLUMN_APPLICATION_CODE); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java similarity index 73% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java index 3ce9c1dcd..ea20bc2aa 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/dao/ApplicationH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ApplicationH2RegisterDAO.java @@ -16,24 +16,29 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.application.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.util.HashMap; 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.storage.define.register.ApplicationDataDefine; -import org.skywalking.apm.collector.storage.define.register.ApplicationTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IApplicationRegisterDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.Application; +import org.skywalking.apm.collector.storage.table.register.ApplicationTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class ApplicationH2DAO extends H2DAO implements IApplicationDAO { - private final Logger logger = LoggerFactory.getLogger(ApplicationH2DAO.class); +public class ApplicationH2RegisterDAO extends H2DAO implements IApplicationRegisterDAO { + private final Logger logger = LoggerFactory.getLogger(ApplicationH2RegisterDAO.class); + + public ApplicationH2RegisterDAO(H2Client client) { + super(client); + } @Override public int getMaxApplicationId() { @@ -46,11 +51,11 @@ public class ApplicationH2DAO extends H2DAO implements IApplicationDAO { } @Override - public void save(ApplicationDataDefine.Application application) { + public void save(Application application) { H2Client client = getClient(); Map source = new HashMap<>(); - source.put(ApplicationTable.COLUMN_ID, application.getApplicationId()); + source.put(ApplicationTable.COLUMN_ID, application.getId()); source.put(ApplicationTable.COLUMN_APPLICATION_CODE, application.getApplicationCode()); source.put(ApplicationTable.COLUMN_APPLICATION_ID, application.getApplicationId()); diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/CpuMetricH2PersistenceDAO.java similarity index 52% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/CpuMetricH2PersistenceDAO.java index e6e735e21..4d146d192 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/dao/CpuMetricH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/CpuMetricH2PersistenceDAO.java @@ -16,46 +16,51 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.cpu.dao; +package org.skywalking.apm.collector.storage.h2.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.CpuMetricTable; -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.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.ICpuMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetric; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetricTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class CpuMetricH2DAO extends H2DAO implements ICpuMetricDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(CpuMetricH2DAO.class); +public class CpuMetricH2PersistenceDAO extends H2DAO implements ICpuMetricPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + private final Logger logger = LoggerFactory.getLogger(CpuMetricH2PersistenceDAO.class); + + public CpuMetricH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public CpuMetric get(String id) { return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(CpuMetric data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(CpuMetricTable.COLUMN_ID, data.getDataString(0)); - 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)); + source.put(CpuMetricTable.COLUMN_ID, data.getId()); + source.put(CpuMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(CpuMetricTable.COLUMN_USAGE_PERCENT, data.getUsagePercent()); + source.put(CpuMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); - logger.debug("prepare cpu metric batch insert, id: {}", data.getDataString(0)); + logger.debug("prepare cpu metric batch insert, getId: {}", data.getId()); String sql = SqlBuilder.buildBatchInsertSql(CpuMetricTable.TABLE, source.keySet()); entity.setSql(sql); entity.setParams(source.values().toArray(new Object[0])); return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(CpuMetric data) { return null; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/CpuMetricH2UIDAO.java similarity index 85% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/CpuMetricH2UIDAO.java index 100727168..c677dd684 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/CpuMetricH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/CpuMetricH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import java.sql.ResultSet; @@ -27,19 +27,24 @@ import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.ICpuMetricUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetricTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class CpuMetricH2DAO extends H2DAO implements ICpuMetricDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceH2DAO.class); +public class CpuMetricH2UIDAO extends H2DAO implements ICpuMetricUIDAO { + private final Logger logger = LoggerFactory.getLogger(CpuMetricH2UIDAO.class); private static final String GET_CPU_METRIC_SQL = "select * from {0} where {1} = ?"; + public CpuMetricH2UIDAO(H2Client client) { + super(client); + } + @Override public int getMetric(int instanceId, long timeBucket) { String id = timeBucket + Const.ID_SPLIT + instanceId; H2Client client = getClient(); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GCMetricH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GCMetricH2PersistenceDAO.java new file mode 100644 index 000000000..9cca8ddaa --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GCMetricH2PersistenceDAO.java @@ -0,0 +1,63 @@ +/* + * 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.storage.h2.dao; + +import java.util.HashMap; +import java.util.Map; +import org.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IGCMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.jvm.GCMetric; +import org.skywalking.apm.collector.storage.table.jvm.GCMetricTable; + +/** + * @author peng-yongsheng, clevertension + */ +public class GCMetricH2PersistenceDAO extends H2DAO implements IGCMetricPersistenceDAO { + + public GCMetricH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public GCMetric get(String id) { + return null; + } + + @Override public H2SqlEntity prepareBatchInsert(GCMetric data) { + H2SqlEntity entity = new H2SqlEntity(); + Map source = new HashMap<>(); + source.put(GCMetricTable.COLUMN_ID, data.getId()); + source.put(GCMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(GCMetricTable.COLUMN_PHRASE, data.getPhrase()); + source.put(GCMetricTable.COLUMN_COUNT, data.getCount()); + source.put(GCMetricTable.COLUMN_TIME, data.getTime()); + source.put(GCMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + 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(GCMetric data) { + return null; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GCMetricH2UIDAO.java similarity index 92% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GCMetricH2UIDAO.java index 8a8fe0023..fe7b67122 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GCMetricH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GCMetricH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -28,9 +28,10 @@ import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -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.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.jvm.GCMetricTable; import org.skywalking.apm.network.proto.GCPhrase; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,11 +39,16 @@ import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class GCMetricH2DAO extends H2DAO implements IGCMetricDAO { - private final Logger logger = LoggerFactory.getLogger(GCMetricH2DAO.class); +public class GCMetricH2UIDAO extends H2DAO implements IGCMetricUIDAO { + + private final Logger logger = LoggerFactory.getLogger(GCMetricH2UIDAO.class); private static final String GET_GC_COUNT_SQL = "select {1}, sum({0}) as cnt, {1} from {2} where {3} = ? and {4} in ("; private static final String GET_GC_METRIC_SQL = "select * from {0} where {1} = ?"; + public GCMetricH2UIDAO(H2Client client) { + super(client); + } + @Override public GCCount getGCCount(long[] timeBuckets, int instanceId) { GCCount gcCount = new GCCount(); H2Client client = getClient(); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/GlobalTraceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java similarity index 58% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/GlobalTraceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java index 5852e5822..805670fca 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/dao/GlobalTraceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2PersistenceDAO.java @@ -16,42 +16,47 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.global.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.util.HashMap; import java.util.Map; -import org.skywalking.apm.collector.core.framework.UnexpectedException; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -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.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IGlobalTracePersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.global.GlobalTrace; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class GlobalTraceH2DAO extends H2DAO implements IGlobalTraceDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(GlobalTraceH2DAO.class); +public class GlobalTraceH2PersistenceDAO extends H2DAO implements IGlobalTracePersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + private final Logger logger = LoggerFactory.getLogger(GlobalTraceH2PersistenceDAO.class); + + public GlobalTraceH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public GlobalTrace get(String id) { throw new UnexpectedException("There is no need to merge stream data with database data."); } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(GlobalTrace data) { throw new UnexpectedException("There is no need to merge stream data with database data."); } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(GlobalTrace data) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(GlobalTraceTable.COLUMN_ID, data.getDataString(0)); - source.put(GlobalTraceTable.COLUMN_SEGMENT_ID, data.getDataString(1)); - source.put(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, data.getDataString(2)); - source.put(GlobalTraceTable.COLUMN_TIME_BUCKET, data.getDataLong(0)); + source.put(GlobalTraceTable.COLUMN_ID, data.getId()); + source.put(GlobalTraceTable.COLUMN_SEGMENT_ID, data.getSegmentId()); + source.put(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, data.getGlobalTraceId()); + source.put(GlobalTraceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); logger.debug("global trace source: {}", source.toString()); String sql = SqlBuilder.buildBatchInsertSql(GlobalTraceTable.TABLE, source.keySet()); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2UIDAO.java similarity index 78% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2UIDAO.java index 6383833d0..83cf0e628 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/GlobalTraceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/GlobalTraceH2UIDAO.java @@ -16,34 +16,41 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; - import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class GlobalTraceH2DAO extends H2DAO implements IGlobalTraceDAO { - private final Logger logger = LoggerFactory.getLogger(GlobalTraceH2DAO.class); +public class GlobalTraceH2UIDAO extends H2DAO implements IGlobalTraceUIDAO { + + private final Logger logger = LoggerFactory.getLogger(GlobalTraceH2UIDAO.class); + private static final String GET_GLOBAL_TRACE_ID_SQL = "select {0} from {1} where {2} = ? limit 10"; private static final String GET_SEGMENT_IDS_SQL = "select {0} from {1} where {2} = ? limit 10"; + + public GlobalTraceH2UIDAO(H2Client client) { + super(client); + } + @Override public List getGlobalTraceId(String segmentId) { List globalTraceIds = new ArrayList<>(); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_GLOBAL_TRACE_ID_SQL, GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, - GlobalTraceTable.TABLE, GlobalTraceTable.COLUMN_SEGMENT_ID); - Object[] params = new Object[]{segmentId}; + GlobalTraceTable.TABLE, GlobalTraceTable.COLUMN_SEGMENT_ID); + Object[] params = new Object[] {segmentId}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { String globalTraceId = rs.getString(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID); @@ -60,8 +67,8 @@ public class GlobalTraceH2DAO extends H2DAO implements IGlobalTraceDAO { List segmentIds = new ArrayList<>(); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SEGMENT_IDS_SQL, GlobalTraceTable.COLUMN_SEGMENT_ID, - GlobalTraceTable.TABLE, GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID); - Object[] params = new Object[]{globalTraceId}; + GlobalTraceTable.TABLE, GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID); + Object[] params = new Object[] {globalTraceId}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { String segmentId = rs.getString(GlobalTraceTable.COLUMN_SEGMENT_ID); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstPerformanceH2PersistenceDAO.java similarity index 59% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstPerformanceH2PersistenceDAO.java index 93c96517d..a42773530 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/dao/InstPerformanceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstPerformanceH2PersistenceDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.instance.performance.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,36 +26,40 @@ 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.instance.InstPerformanceTable; -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.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IInstPerformancePersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.instance.InstPerformance; +import org.skywalking.apm.collector.storage.table.instance.InstPerformanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class InstPerformanceH2DAO extends H2DAO implements IInstPerformanceDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(InstPerformanceH2DAO.class); +public class InstPerformanceH2PersistenceDAO extends H2DAO implements IInstPerformancePersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(InstPerformanceH2PersistenceDAO.class); private static final String GET_SQL = "select * from {0} where {1} = ?"; - @Override public Data get(String id, DataDefine dataDefine) { + public InstPerformanceH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public InstPerformance get(String id) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SQL, InstPerformanceTable.TABLE, InstPerformanceTable.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(InstPerformanceTable.COLUMN_APPLICATION_ID)); - data.setDataInteger(1, rs.getInt(InstPerformanceTable.COLUMN_INSTANCE_ID)); - data.setDataInteger(2, rs.getInt(InstPerformanceTable.COLUMN_CALLS)); - data.setDataLong(0, rs.getLong(InstPerformanceTable.COLUMN_COST_TOTAL)); - data.setDataLong(1, rs.getLong(InstPerformanceTable.COLUMN_TIME_BUCKET)); - return data; + InstPerformance instPerformance = new InstPerformance(id); + instPerformance.setApplicationId(rs.getInt(InstPerformanceTable.COLUMN_APPLICATION_ID)); + instPerformance.setInstanceId(rs.getInt(InstPerformanceTable.COLUMN_INSTANCE_ID)); + instPerformance.setCalls(rs.getInt(InstPerformanceTable.COLUMN_CALLS)); + instPerformance.setCostTotal(rs.getLong(InstPerformanceTable.COLUMN_COST_TOTAL)); + instPerformance.setTimeBucket(rs.getLong(InstPerformanceTable.COLUMN_TIME_BUCKET)); + return instPerformance; } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); @@ -63,34 +67,33 @@ public class InstPerformanceH2DAO extends H2DAO implements IInstPerformanceDAO, return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(InstPerformance data) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(InstPerformanceTable.COLUMN_ID, data.getDataString(0)); - source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getDataInteger(1)); - source.put(InstPerformanceTable.COLUMN_CALLS, data.getDataInteger(2)); - source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getDataLong(0)); - source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getDataLong(1)); + source.put(InstPerformanceTable.COLUMN_ID, data.getId()); + source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(InstPerformanceTable.COLUMN_CALLS, data.getCalls()); + source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getCostTotal()); + source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchInsertSql(InstPerformanceTable.TABLE, source.keySet()); entity.setSql(sql); entity.setParams(source.values().toArray(new Object[0])); return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(InstPerformance data) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getDataInteger(1)); - source.put(InstPerformanceTable.COLUMN_CALLS, data.getDataInteger(2)); - source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getDataLong(0)); - source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getDataLong(1)); - String id = data.getDataString(0); + source.put(InstPerformanceTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(InstPerformanceTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(InstPerformanceTable.COLUMN_CALLS, data.getCalls()); + source.put(InstPerformanceTable.COLUMN_COST_TOTAL, data.getCostTotal()); + source.put(InstPerformanceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchUpdateSql(InstPerformanceTable.TABLE, source.keySet(), InstPerformanceTable.COLUMN_ID); entity.setSql(sql); List values = new ArrayList<>(source.values()); - values.add(id); + values.add(data.getId()); entity.setParams(values.toArray(new Object[0])); return entity; } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstPerformanceH2UIDAO.java similarity index 92% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstPerformanceH2UIDAO.java index 28f8fa2a9..540d80094 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstPerformanceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstPerformanceH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import java.sql.ResultSet; @@ -27,20 +27,26 @@ import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.instance.InstPerformanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class InstPerformanceH2DAO extends H2DAO implements IInstPerformanceDAO { - private final Logger logger = LoggerFactory.getLogger(InstPerformanceH2DAO.class); +public class InstPerformanceH2UIDAO extends H2DAO implements IInstPerformanceUIDAO { + + private final Logger logger = LoggerFactory.getLogger(InstPerformanceH2UIDAO.class); private static final String GET_INST_PERF_SQL = "select * from {0} where {1} = ? and {2} in ("; private static final String GET_TPS_METRIC_SQL = "select * from {0} where {1} = ?"; + public InstPerformanceH2UIDAO(H2Client client) { + super(client); + } + @Override public InstPerformance get(long[] timeBuckets, int instanceId) { H2Client client = getClient(); logger.info("the inst performance inst id = {}", instanceId); diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2CacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java similarity index 53% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2CacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java index 696ceac56..4d2fb09c7 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/InstanceH2CacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2CacheDAO.java @@ -16,15 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IInstanceCacheDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -36,12 +37,17 @@ public class InstanceH2CacheDAO extends H2DAO implements IInstanceCacheDAO { private final Logger logger = LoggerFactory.getLogger(InstanceH2CacheDAO.class); private static final String GET_APPLICATION_ID_SQL = "select {0} from {1} where {2} = ?"; + private static final String GET_INSTANCE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ?"; - @Override public int getApplicationId(int applicationInstanceId) { - logger.info("get the application id with application id = {}", applicationInstanceId); + public InstanceH2CacheDAO(H2Client client) { + super(client); + } + + @Override public int getApplicationId(int instanceId) { + logger.info("get the application getId with application getId = {}", instanceId); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_APPLICATION_ID_SQL, InstanceTable.COLUMN_APPLICATION_ID, InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID); - Object[] params = new Object[] {applicationInstanceId}; + Object[] params = new Object[] {instanceId}; try (ResultSet rs = client.executeQuery(sql, params)) { if (rs.next()) { return rs.getInt(InstanceTable.COLUMN_APPLICATION_ID); @@ -51,4 +57,20 @@ public class InstanceH2CacheDAO extends H2DAO implements IInstanceCacheDAO { } return 0; } + + @Override public int getInstanceId(int applicationId, String agentUUID) { + logger.info("get the application getId with application getId = {}, agentUUID = {}", applicationId, agentUUID); + H2Client client = getClient(); + String sql = SqlBuilder.buildSql(GET_INSTANCE_ID_SQL, InstanceTable.COLUMN_INSTANCE_ID, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, + InstanceTable.COLUMN_AGENT_UUID); + Object[] params = new Object[] {applicationId, agentUUID}; + try (ResultSet rs = client.executeQuery(sql, params)) { + if (rs.next()) { + return rs.getInt(InstanceTable.COLUMN_INSTANCE_ID); + } + } catch (SQLException | H2ClientException e) { + logger.error(e.getMessage(), e); + } + return 0; + } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java similarity index 66% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java index 32bf7097b..994c4077a 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/dao/InstanceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2RegisterDAO.java @@ -16,46 +16,33 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.instance.dao; +package org.skywalking.apm.collector.storage.h2.dao; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.HashMap; 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.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IInstanceRegisterDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.Instance; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class InstanceH2DAO extends H2DAO implements IInstanceDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceH2DAO.class); +public class InstanceH2RegisterDAO extends H2DAO implements IInstanceRegisterDAO { + + private final Logger logger = LoggerFactory.getLogger(InstanceH2RegisterDAO.class); - private static final String GET_INSTANCE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ?"; - private static final String UPDATE_HEARTBEAT_TIME_SQL = "update {0} set {1} = ? where {2} = ?"; - - @Override public int getInstanceId(int applicationId, String agentUUID) { - logger.info("get the application id with application id = {}, agentUUID = {}", applicationId, agentUUID); - H2Client client = getClient(); - String sql = SqlBuilder.buildSql(GET_INSTANCE_ID_SQL, InstanceTable.COLUMN_INSTANCE_ID, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, - InstanceTable.COLUMN_AGENT_UUID); - Object[] params = new Object[] {applicationId, agentUUID}; - try (ResultSet rs = client.executeQuery(sql, params)) { - if (rs.next()) { - return rs.getInt(InstanceTable.COLUMN_INSTANCE_ID); - } - } catch (SQLException | H2ClientException e) { - logger.error(e.getMessage(), e); - } - return 0; + public InstanceH2RegisterDAO(H2Client client) { + super(client); } + private static final String UPDATE_HEARTBEAT_TIME_SQL = "update {0} set {1} = ? where {2} = ?"; + @Override public int getMaxInstanceId() { return getMaxId(InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID); } @@ -64,7 +51,7 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO { return getMinId(InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID); } - @Override public void save(InstanceDataDefine.Instance instance) { + @Override public void save(Instance instance) { H2Client client = getClient(); Map source = new HashMap<>(); source.put(InstanceTable.COLUMN_ID, instance.getId()); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2UIDAO.java similarity index 86% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2UIDAO.java index 7cfb79c30..01832778b 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/InstanceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -24,22 +24,28 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedList; import java.util.List; -import org.skywalking.apm.collector.cache.ApplicationCache; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.Instance; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class InstanceH2DAO extends H2DAO implements IInstanceDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceH2DAO.class); +public class InstanceH2UIDAO extends H2DAO implements IInstanceUIDAO { + + private final Logger logger = LoggerFactory.getLogger(InstanceH2UIDAO.class); + + public InstanceH2UIDAO(H2Client client) { + super(client); + } + private static final String GET_LAST_HEARTBEAT_TIME_SQL = "select {0} from {1} where {2} > ? limit 1"; private static final String GET_INST_LAST_HEARTBEAT_TIME_SQL = "select {0} from {1} where {2} > ? and {3} = ? limit 1"; private static final String GET_INSTANCE_SQL = "select * from {0} where {1} = ?"; @@ -94,7 +100,6 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO { logger.debug("applicationId: {}", applicationId); JsonObject application = new JsonObject(); application.addProperty("applicationId", applicationId); - application.addProperty("applicationCode", ApplicationCache.get(applicationId)); application.addProperty("instanceCount", rs.getInt("cnt")); applications.add(application); } @@ -105,14 +110,13 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO { } @Override - public InstanceDataDefine.Instance getInstance(int instanceId) { + public Instance getInstance(int instanceId) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_INSTANCE_SQL, InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_ID); Object[] params = new Object[] {instanceId}; try (ResultSet rs = client.executeQuery(sql, params)) { if (rs.next()) { - InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance(); - instance.setId(String.valueOf(instanceId)); + Instance instance = new Instance(rs.getString(InstanceTable.COLUMN_ID)); instance.setApplicationId(rs.getInt(InstanceTable.COLUMN_APPLICATION_ID)); instance.setAgentUUID(rs.getString(InstanceTable.COLUMN_AGENT_UUID)); instance.setRegisterTime(rs.getLong(InstanceTable.COLUMN_REGISTER_TIME)); @@ -127,15 +131,15 @@ public class InstanceH2DAO extends H2DAO implements IInstanceDAO { } @Override - public List getInstances(int applicationId, long timeBucket) { + public List getInstances(int applicationId, long timeBucket) { logger.debug("get instances info, application id: {}, timeBucket: {}", applicationId, timeBucket); - List instanceList = new LinkedList<>(); + List instanceList = new LinkedList<>(); H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_INSTANCES_SQL, InstanceTable.TABLE, InstanceTable.COLUMN_APPLICATION_ID, InstanceTable.COLUMN_HEARTBEAT_TIME); Object[] params = new Object[] {applicationId, timeBucket}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { - InstanceDataDefine.Instance instance = new InstanceDataDefine.Instance(); + Instance instance = new Instance(rs.getString(InstanceTable.COLUMN_ID)); instance.setApplicationId(rs.getInt(InstanceTable.COLUMN_APPLICATION_ID)); instance.setHeartBeatTime(rs.getLong(InstanceTable.COLUMN_HEARTBEAT_TIME)); instance.setInstanceId(rs.getInt(InstanceTable.COLUMN_INSTANCE_ID)); diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/InstanceHeartBeatH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java similarity index 64% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/InstanceHeartBeatH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java index a249c295e..fd8e3982e 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/heartbeat/dao/InstanceHeartBeatH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/InstanceHeartBeatH2PersistenceDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.heartbeat.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,34 +26,39 @@ 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.framework.UnexpectedException; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -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.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IInstanceHeartBeatPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.register.Instance; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class InstanceHeartBeatH2DAO extends H2DAO implements IInstanceHeartBeatDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatEsDAO.class); +public class InstanceHeartBeatH2PersistenceDAO extends H2DAO implements IInstanceHeartBeatPersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatH2PersistenceDAO.class); + + public InstanceHeartBeatH2PersistenceDAO(H2Client client) { + super(client); + } + private static final String GET_INSTANCE_HEARTBEAT_SQL = "select * from {0} where {1} = ?"; - @Override public Data get(String id, DataDefine dataDefine) { + @Override public Instance get(String id) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_INSTANCE_HEARTBEAT_SQL, InstanceTable.TABLE, InstanceTable.COLUMN_INSTANCE_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(InstanceTable.COLUMN_INSTANCE_ID)); - data.setDataLong(0, rs.getLong(InstanceTable.COLUMN_HEARTBEAT_TIME)); - return data; + Instance instance = new Instance(id); + instance.setInstanceId(rs.getInt(InstanceTable.COLUMN_INSTANCE_ID)); + instance.setHeartBeatTime(rs.getLong(InstanceTable.COLUMN_HEARTBEAT_TIME)); + return instance; } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); @@ -61,18 +66,18 @@ public class InstanceHeartBeatH2DAO extends H2DAO implements IInstanceHeartBeatD return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(Instance data) { throw new UnexpectedException("There is no need to merge stream data with database data."); } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(Instance data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(InstanceTable.COLUMN_HEARTBEAT_TIME, data.getDataLong(0)); + source.put(InstanceTable.COLUMN_HEARTBEAT_TIME, data.getHeartBeatTime()); String sql = SqlBuilder.buildBatchUpdateSql(InstanceTable.TABLE, source.keySet(), InstanceTable.COLUMN_INSTANCE_ID); entity.setSql(sql); List params = new ArrayList<>(source.values()); - params.add(data.getDataString(0)); + params.add(data.getId()); entity.setParams(params.toArray(new Object[0])); return entity; } diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryMetricH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryMetricH2PersistenceDAO.java new file mode 100644 index 000000000..0b28d6ba0 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryMetricH2PersistenceDAO.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.storage.h2.dao; + +import java.util.HashMap; +import java.util.Map; +import org.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetric; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; + +/** + * @author peng-yongsheng, clevertension + */ +public class MemoryMetricH2PersistenceDAO extends H2DAO implements IMemoryMetricPersistenceDAO { + + public MemoryMetricH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public MemoryMetric get(String id) { + return null; + } + + @Override public H2SqlEntity prepareBatchInsert(MemoryMetric data) { + H2SqlEntity entity = new H2SqlEntity(); + Map source = new HashMap<>(); + source.put(MemoryMetricTable.COLUMN_ID, data.getId()); + source.put(MemoryMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(MemoryMetricTable.COLUMN_IS_HEAP, data.getIsHeap()); + source.put(MemoryMetricTable.COLUMN_INIT, data.getInit()); + source.put(MemoryMetricTable.COLUMN_MAX, data.getMax()); + source.put(MemoryMetricTable.COLUMN_USED, data.getUsed()); + source.put(MemoryMetricTable.COLUMN_COMMITTED, data.getCommitted()); + source.put(MemoryMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + + 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(MemoryMetric data) { + return null; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryMetricH2UIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryMetricH2UIDAO.java index 0b45f0153..841cb6681 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryMetricH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryMetricH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -28,19 +28,25 @@ import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -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.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author clevertension */ -public class MemoryMetricH2DAO extends H2DAO implements IMemoryMetricDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceH2DAO.class); +public class MemoryMetricH2UIDAO extends H2DAO implements IMemoryMetricUIDAO { + + private final Logger logger = LoggerFactory.getLogger(MemoryMetricH2UIDAO.class); private static final String GET_MEMORY_METRIC_SQL = "select * from {0} where {1} =?"; + public MemoryMetricH2UIDAO(H2Client client) { + super(client); + } + @Override public JsonObject getMetric(int instanceId, long timeBucket, boolean isHeap) { H2Client client = getClient(); String id = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + isHeap; diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryPoolMetricH2PersistenceDAO.java similarity index 51% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryPoolMetricH2PersistenceDAO.java index c97c9f549..c5fe14eeb 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/dao/MemoryPoolMetricH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryPoolMetricH2PersistenceDAO.java @@ -16,37 +16,42 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memorypool.dao; +package org.skywalking.apm.collector.storage.h2.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.MemoryPoolMetricTable; -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.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetric; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetricTable; /** * @author peng-yongsheng, clevertension */ -public class MemoryPoolMetricH2DAO extends H2DAO implements IMemoryPoolMetricDAO, IPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { +public class MemoryPoolMetricH2PersistenceDAO extends H2DAO implements IMemoryPoolMetricPersistenceDAO { + + public MemoryPoolMetricH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public MemoryPoolMetric get(String id) { return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(MemoryPoolMetric data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(MemoryPoolMetricTable.COLUMN_ID, data.getDataString(0)); - source.put(MemoryPoolMetricTable.COLUMN_INSTANCE_ID, data.getDataInteger(0)); - source.put(MemoryPoolMetricTable.COLUMN_POOL_TYPE, data.getDataInteger(1)); - source.put(MemoryPoolMetricTable.COLUMN_INIT, data.getDataLong(0)); - source.put(MemoryPoolMetricTable.COLUMN_MAX, data.getDataLong(1)); - source.put(MemoryPoolMetricTable.COLUMN_USED, data.getDataLong(2)); - source.put(MemoryPoolMetricTable.COLUMN_COMMITTED, data.getDataLong(3)); - source.put(MemoryPoolMetricTable.COLUMN_TIME_BUCKET, data.getDataLong(4)); + source.put(MemoryPoolMetricTable.COLUMN_ID, data.getId()); + source.put(MemoryPoolMetricTable.COLUMN_INSTANCE_ID, data.getInstanceId()); + source.put(MemoryPoolMetricTable.COLUMN_POOL_TYPE, data.getPoolType()); + source.put(MemoryPoolMetricTable.COLUMN_INIT, data.getInit()); + source.put(MemoryPoolMetricTable.COLUMN_MAX, data.getMax()); + source.put(MemoryPoolMetricTable.COLUMN_USED, data.getUsed()); + source.put(MemoryPoolMetricTable.COLUMN_COMMITTED, data.getCommitted()); + source.put(MemoryPoolMetricTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchInsertSql(MemoryPoolMetricTable.TABLE, source.keySet()); entity.setSql(sql); @@ -54,7 +59,7 @@ public class MemoryPoolMetricH2DAO extends H2DAO implements IMemoryPoolMetricDAO return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(MemoryPoolMetric data) { return null; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryPoolMetricH2UIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryPoolMetricH2UIDAO.java index b759c2c3b..22cb0228f 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/MemoryPoolMetricH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/MemoryPoolMetricH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -28,19 +28,25 @@ import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetricTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author clevertension */ -public class MemoryPoolMetricH2DAO extends H2DAO implements IMemoryPoolMetricDAO { - private final Logger logger = LoggerFactory.getLogger(InstanceH2DAO.class); +public class MemoryPoolMetricH2UIDAO extends H2DAO implements IMemoryPoolMetricUIDAO { + + private final Logger logger = LoggerFactory.getLogger(MemoryPoolMetricH2UIDAO.class); private static final String GET_MEMORY_POOL_METRIC_SQL = "select * from {0} where {1} = ?"; + public MemoryPoolMetricH2UIDAO(H2Client client) { + super(client); + } + @Override public JsonObject getMetric(int instanceId, long timeBucket, int poolType) { H2Client client = getClient(); String id = timeBucket + Const.ID_SPLIT + instanceId + Const.ID_SPLIT + poolType; diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/NodeComponentH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeComponentH2PersistenceDAO.java similarity index 56% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/NodeComponentH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeComponentH2PersistenceDAO.java index eff769b28..50f059840 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/dao/NodeComponentH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeComponentH2PersistenceDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.component.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,37 +26,38 @@ 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.node.NodeComponentTable; -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.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.INodeComponentPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.node.NodeComponent; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class NodeComponentH2DAO extends H2DAO implements INodeComponentDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(NodeComponentH2DAO.class); +public class NodeComponentH2PersistenceDAO extends H2DAO implements INodeComponentPersistenceDAO { + private final Logger logger = LoggerFactory.getLogger(NodeComponentH2PersistenceDAO.class); private static final String GET_SQL = "select * from {0} where {1} = ?"; + public NodeComponentH2PersistenceDAO(H2Client client) { + super(client); + } + @Override - public Data get(String id, DataDefine dataDefine) { + public NodeComponent get(String id) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SQL, NodeComponentTable.TABLE, NodeComponentTable.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(NodeComponentTable.COLUMN_COMPONENT_ID)); - data.setDataString(1, rs.getString(NodeComponentTable.COLUMN_COMPONENT_NAME)); - data.setDataInteger(1, rs.getInt(NodeComponentTable.COLUMN_PEER_ID)); - data.setDataString(2, rs.getString(NodeComponentTable.COLUMN_PEER)); - data.setDataLong(0, rs.getLong(NodeComponentTable.COLUMN_TIME_BUCKET)); - return data; + NodeComponent nodeComponent = new NodeComponent(id); + nodeComponent.setComponentId(rs.getInt(NodeComponentTable.COLUMN_COMPONENT_ID)); + nodeComponent.setPeerId(rs.getInt(NodeComponentTable.COLUMN_PEER_ID)); + nodeComponent.setTimeBucket(rs.getLong(NodeComponentTable.COLUMN_TIME_BUCKET)); + return nodeComponent; } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); @@ -65,15 +66,13 @@ public class NodeComponentH2DAO extends H2DAO implements INodeComponentDAO, IPer } @Override - public H2SqlEntity prepareBatchInsert(Data data) { + public H2SqlEntity prepareBatchInsert(NodeComponent data) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(NodeComponentTable.COLUMN_ID, data.getDataString(0)); - 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)); + source.put(NodeComponentTable.COLUMN_ID, data.getId()); + source.put(NodeComponentTable.COLUMN_COMPONENT_ID, data.getComponentId()); + source.put(NodeComponentTable.COLUMN_PEER_ID, data.getPeerId()); + source.put(NodeComponentTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchInsertSql(NodeComponentTable.TABLE, source.keySet()); entity.setSql(sql); @@ -82,19 +81,16 @@ public class NodeComponentH2DAO extends H2DAO implements INodeComponentDAO, IPer } @Override - public H2SqlEntity prepareBatchUpdate(Data data) { + public H2SqlEntity prepareBatchUpdate(NodeComponent data) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - 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)); - String id = data.getDataString(0); + source.put(NodeComponentTable.COLUMN_COMPONENT_ID, data.getComponentId()); + source.put(NodeComponentTable.COLUMN_PEER_ID, data.getPeerId()); + source.put(NodeComponentTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchUpdateSql(NodeComponentTable.TABLE, source.keySet(), NodeComponentTable.COLUMN_ID); entity.setSql(sql); List values = new ArrayList<>(source.values()); - values.add(id); + values.add(data.getId()); entity.setParams(values.toArray(new Object[0])); return entity; } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeComponentH2UIDAO.java similarity index 58% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeComponentH2UIDAO.java index 2aabff5b7..caa4d521c 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeComponentH2UIDAO.java @@ -16,29 +16,32 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.sql.ResultSet; import java.sql.SQLException; -import org.skywalking.apm.collector.cache.ApplicationCache; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.node.NodeComponentTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; -import org.skywalking.apm.network.trace.component.ComponentsDefine; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.INodeComponentUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class NodeComponentH2DAO extends H2DAO implements INodeComponentDAO { - private final Logger logger = LoggerFactory.getLogger(NodeComponentH2DAO.class); - private static final String AGGREGATE_COMPONENT_SQL = "select {0}, {1}, {2} from {3} where {4} >= ? and {4} <= ? group by {0}, {1}, {2} limit 100"; +public class NodeComponentH2UIDAO extends H2DAO implements INodeComponentUIDAO { + + private final Logger logger = LoggerFactory.getLogger(NodeComponentH2UIDAO.class); + private static final String AGGREGATE_COMPONENT_SQL = "select {0}, {1} from {2} where {3} >= ? and {3} <= ? group by {0}, {1} limit 100"; + + public NodeComponentH2UIDAO(H2Client client) { + super(client); + } @Override public JsonArray load(long startTime, long endTime) { JsonArray nodeComponentArray = new JsonArray(); @@ -50,34 +53,21 @@ public class NodeComponentH2DAO extends H2DAO implements INodeComponentDAO { H2Client client = getClient(); JsonArray nodeComponentArray = new JsonArray(); - String sql = SqlBuilder.buildSql(AGGREGATE_COMPONENT_SQL, NodeComponentTable.COLUMN_COMPONENT_ID, - NodeComponentTable.COLUMN_PEER, NodeComponentTable.COLUMN_PEER_ID, + String sql = SqlBuilder.buildSql(AGGREGATE_COMPONENT_SQL, NodeComponentTable.COLUMN_COMPONENT_ID, NodeComponentTable.COLUMN_PEER_ID, NodeComponentTable.TABLE, NodeComponentTable.COLUMN_TIME_BUCKET); Object[] params = new Object[] {startTime, endTime}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { int peerId = rs.getInt(NodeComponentTable.COLUMN_PEER_ID); int componentId = rs.getInt(NodeComponentTable.COLUMN_COMPONENT_ID); - String componentName = ComponentsDefine.getInstance().getComponentName(componentId); - if (peerId != 0) { - String peer = ApplicationCache.get(peerId); - nodeComponentArray.add(buildNodeComponent(peer, componentName)); - } - String peer = rs.getString(NodeComponentTable.COLUMN_PEER); - if (StringUtils.isNotEmpty(peer)) { - nodeComponentArray.add(buildNodeComponent(peer, componentName)); - } + JsonObject nodeComponentObj = new JsonObject(); + nodeComponentObj.addProperty(NodeComponentTable.COLUMN_COMPONENT_ID, componentId); + nodeComponentObj.addProperty(NodeComponentTable.COLUMN_PEER_ID, peerId); + nodeComponentArray.add(nodeComponentObj); } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); } return nodeComponentArray; } - - private JsonObject buildNodeComponent(String peer, String componentName) { - JsonObject nodeComponentObj = new JsonObject(); - nodeComponentObj.addProperty("componentName", componentName); - nodeComponentObj.addProperty("peer", peer); - return nodeComponentObj; - } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/NodeMappingH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeMappingH2PersistenceDAO.java similarity index 51% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/NodeMappingH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeMappingH2PersistenceDAO.java index 1e25502c1..7d170c4a8 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/dao/NodeMappingH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeMappingH2PersistenceDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.mapping.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; @@ -24,38 +24,40 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.skywalking.apm.collector.agentstream.worker.node.component.dao.NodeComponentH2DAO; 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.node.NodeMappingTable; -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.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.INodeMappingPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.node.NodeMapping; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class NodeMappingH2DAO extends H2DAO implements INodeMappingDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(NodeComponentH2DAO.class); +public class NodeMappingH2PersistenceDAO extends H2DAO implements INodeMappingPersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(NodeMappingH2PersistenceDAO.class); private static final String GET_SQL = "select * from {0} where {1} = ?"; - @Override public Data get(String id, DataDefine dataDefine) { + public NodeMappingH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public NodeMapping get(String id) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SQL, NodeMappingTable.TABLE, NodeMappingTable.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(NodeMappingTable.COLUMN_APPLICATION_ID)); - data.setDataInteger(1, rs.getInt(NodeMappingTable.COLUMN_ADDRESS_ID)); - data.setDataString(1, rs.getString(NodeMappingTable.COLUMN_ADDRESS)); - data.setDataLong(0, rs.getLong(NodeMappingTable.COLUMN_TIME_BUCKET)); - return data; + NodeMapping nodeMapping = new NodeMapping(id); + nodeMapping.setApplicationId(rs.getInt(NodeMappingTable.COLUMN_APPLICATION_ID)); + nodeMapping.setAddressId(rs.getInt(NodeMappingTable.COLUMN_ADDRESS_ID)); + nodeMapping.setTimeBucket(rs.getLong(NodeMappingTable.COLUMN_TIME_BUCKET)); + return nodeMapping; } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); @@ -63,14 +65,13 @@ public class NodeMappingH2DAO extends H2DAO implements INodeMappingDAO, IPersist return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(NodeMapping nodeMapping) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(NodeMappingTable.COLUMN_ID, data.getDataString(0)); - source.put(NodeMappingTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(NodeMappingTable.COLUMN_ADDRESS_ID, data.getDataInteger(1)); - source.put(NodeMappingTable.COLUMN_ADDRESS, data.getDataString(1)); - source.put(NodeMappingTable.COLUMN_TIME_BUCKET, data.getDataLong(0)); + source.put(NodeMappingTable.COLUMN_ID, nodeMapping.getId()); + source.put(NodeMappingTable.COLUMN_APPLICATION_ID, nodeMapping.getApplicationId()); + source.put(NodeMappingTable.COLUMN_ADDRESS_ID, nodeMapping.getAddressId()); + source.put(NodeMappingTable.COLUMN_TIME_BUCKET, nodeMapping.getTimeBucket()); String sql = SqlBuilder.buildBatchInsertSql(NodeMappingTable.TABLE, source.keySet()); entity.setSql(sql); @@ -78,18 +79,16 @@ public class NodeMappingH2DAO extends H2DAO implements INodeMappingDAO, IPersist return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(NodeMapping nodeMapping) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(NodeMappingTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(NodeMappingTable.COLUMN_ADDRESS_ID, data.getDataInteger(1)); - source.put(NodeMappingTable.COLUMN_ADDRESS, data.getDataString(1)); - source.put(NodeMappingTable.COLUMN_TIME_BUCKET, data.getDataLong(0)); - String id = data.getDataString(0); + source.put(NodeMappingTable.COLUMN_APPLICATION_ID, nodeMapping.getApplicationId()); + source.put(NodeMappingTable.COLUMN_ADDRESS_ID, nodeMapping.getAddressId()); + source.put(NodeMappingTable.COLUMN_TIME_BUCKET, nodeMapping.getTimeBucket()); String sql = SqlBuilder.buildBatchUpdateSql(NodeMappingTable.TABLE, source.keySet(), NodeMappingTable.COLUMN_ID); entity.setSql(sql); List values = new ArrayList<>(source.values()); - values.add(id); + values.add(nodeMapping.getId()); entity.setParams(values.toArray(new Object[0])); return entity; } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeMappingH2UIDAO.java similarity index 57% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeMappingH2UIDAO.java index 53b330b50..d38b6ccdd 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeMappingH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeMappingH2UIDAO.java @@ -16,56 +16,48 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.sql.ResultSet; import java.sql.SQLException; -import org.skywalking.apm.collector.cache.ApplicationCache; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.node.NodeMappingTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.INodeMappingUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class NodeMappingH2DAO extends H2DAO implements INodeMappingDAO { - private final Logger logger = LoggerFactory.getLogger(NodeMappingH2DAO.class); - private static final String NODE_MAPPING_SQL = "select {0}, {1}, {2} from {3} where {4} >= ? and {4} <= ? group by {0}, {1}, {2} limit 100"; +public class NodeMappingH2UIDAO extends H2DAO implements INodeMappingUIDAO { + + private final Logger logger = LoggerFactory.getLogger(NodeMappingH2UIDAO.class); + private static final String NODE_MAPPING_SQL = "select {0}, {1} from {2} where {3} >= ? and {3} <= ? group by {0}, {1} limit 100"; + + public NodeMappingH2UIDAO(H2Client client) { + super(client); + } @Override public JsonArray load(long startTime, long endTime) { H2Client client = getClient(); JsonArray nodeMappingArray = new JsonArray(); String sql = SqlBuilder.buildSql(NODE_MAPPING_SQL, NodeMappingTable.COLUMN_APPLICATION_ID, - NodeMappingTable.COLUMN_ADDRESS_ID, NodeMappingTable.COLUMN_ADDRESS, - NodeMappingTable.TABLE, NodeMappingTable.COLUMN_TIME_BUCKET); + NodeMappingTable.COLUMN_ADDRESS_ID, NodeMappingTable.TABLE, NodeMappingTable.COLUMN_TIME_BUCKET); Object[] params = new Object[] {startTime, endTime}; try (ResultSet rs = client.executeQuery(sql, params)) { while (rs.next()) { int applicationId = rs.getInt(NodeMappingTable.COLUMN_APPLICATION_ID); - String applicationCode = ApplicationCache.get(applicationId); int addressId = rs.getInt(NodeMappingTable.COLUMN_ADDRESS_ID); - if (addressId != 0) { - String address = ApplicationCache.get(addressId); - JsonObject nodeMappingObj = new JsonObject(); - nodeMappingObj.addProperty("applicationCode", applicationCode); - nodeMappingObj.addProperty("address", address); - nodeMappingArray.add(nodeMappingObj); - } - String address = rs.getString(NodeMappingTable.COLUMN_ADDRESS); - if (StringUtils.isNotEmpty(address)) { - JsonObject nodeMappingObj = new JsonObject(); - nodeMappingObj.addProperty("applicationCode", applicationCode); - nodeMappingObj.addProperty("address", address); - nodeMappingArray.add(nodeMappingObj); - } + JsonObject nodeMappingObj = new JsonObject(); + nodeMappingObj.addProperty(NodeMappingTable.COLUMN_APPLICATION_ID, applicationId); + nodeMappingObj.addProperty(NodeMappingTable.COLUMN_ADDRESS_ID, addressId); + nodeMappingArray.add(nodeMappingObj); } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeReferenceH2PersistenceDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeReferenceH2PersistenceDAO.java new file mode 100644 index 000000000..d690aebb3 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeReferenceH2PersistenceDAO.java @@ -0,0 +1,113 @@ +/* + * 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.storage.h2.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.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.INodeReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.noderef.NodeReference; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng, clevertension + */ +public class NodeReferenceH2PersistenceDAO extends H2DAO implements INodeReferencePersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(NodeReferenceH2PersistenceDAO.class); + private static final String GET_SQL = "select * from {0} where {1} = ?"; + + public NodeReferenceH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public NodeReference get(String id) { + 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()) { + NodeReference nodeReference = new NodeReference(id); + nodeReference.setFrontApplicationId(rs.getInt(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID)); + nodeReference.setBehindApplicationId(rs.getInt(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID)); + nodeReference.setS1Lte(rs.getInt(NodeReferenceTable.COLUMN_S1_LTE)); + nodeReference.setS3Lte(rs.getInt(NodeReferenceTable.COLUMN_S3_LTE)); + nodeReference.setS5Lte(rs.getInt(NodeReferenceTable.COLUMN_S5_LTE)); + nodeReference.setS5Gt(rs.getInt(NodeReferenceTable.COLUMN_S5_GT)); + nodeReference.setSummary(rs.getInt(NodeReferenceTable.COLUMN_SUMMARY)); + nodeReference.setError(rs.getInt(NodeReferenceTable.COLUMN_ERROR)); + nodeReference.setTimeBucket(rs.getLong(NodeReferenceTable.COLUMN_TIME_BUCKET)); + return nodeReference; + } + } catch (SQLException | H2ClientException e) { + logger.error(e.getMessage(), e); + } + return null; + } + + @Override public H2SqlEntity prepareBatchInsert(NodeReference data) { + Map source = new HashMap<>(); + H2SqlEntity entity = new H2SqlEntity(); + source.put(NodeReferenceTable.COLUMN_ID, data.getId()); + source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getFrontApplicationId()); + source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getBehindApplicationId()); + source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(NodeReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(NodeReferenceTable.COLUMN_ERROR, data.getError()); + source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + 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(NodeReference data) { + Map source = new HashMap<>(); + H2SqlEntity entity = new H2SqlEntity(); + source.put(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, data.getFrontApplicationId()); + source.put(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, data.getBehindApplicationId()); + source.put(NodeReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(NodeReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(NodeReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(NodeReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(NodeReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(NodeReferenceTable.COLUMN_ERROR, data.getError()); + source.put(NodeReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); + String sql = SqlBuilder.buildBatchUpdateSql(NodeReferenceTable.TABLE, source.keySet(), NodeReferenceTable.COLUMN_ID); + entity.setSql(sql); + List values = new ArrayList<>(source.values()); + values.add(data.getId()); + entity.setParams(values.toArray(new Object[0])); + return entity; + } +} diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeReferenceH2UIDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeReferenceH2UIDAO.java new file mode 100644 index 000000000..98b8ddf56 --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/NodeReferenceH2UIDAO.java @@ -0,0 +1,78 @@ +/* + * 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.storage.h2.dao; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.sql.ResultSet; +import java.sql.SQLException; +import org.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.client.h2.H2ClientException; +import org.skywalking.apm.collector.core.util.ColumnNameUtils; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.INodeReferenceUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng, clevertension + */ +public class NodeReferenceH2UIDAO extends H2DAO implements INodeReferenceUIDAO { + + private final Logger logger = LoggerFactory.getLogger(NodeReferenceH2UIDAO.class); + private static final String NODE_REFERENCE_SQL = "select {8}, {9}, sum({0}) as {0}, sum({1}) as {1}, sum({2}) as {2}, " + + "sum({3}) as {3}, sum({4}) as {4}, sum({5}) as {5} from {6} where {7} >= ? and {7} <= ? group by {8}, {9} limit 100"; + + public NodeReferenceH2UIDAO(H2Client client) { + super(client); + } + + @Override public JsonArray load(long startTime, long endTime) { + H2Client client = getClient(); + JsonArray nodeRefResSumArray = new JsonArray(); + String sql = SqlBuilder.buildSql(NODE_REFERENCE_SQL, NodeReferenceTable.COLUMN_S1_LTE, + NodeReferenceTable.COLUMN_S3_LTE, NodeReferenceTable.COLUMN_S5_LTE, + NodeReferenceTable.COLUMN_S5_GT, NodeReferenceTable.COLUMN_SUMMARY, + NodeReferenceTable.COLUMN_ERROR, NodeReferenceTable.TABLE, NodeReferenceTable.COLUMN_TIME_BUCKET, + NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID); + + Object[] params = new Object[] {startTime, endTime}; + try (ResultSet rs = client.executeQuery(sql, params)) { + while (rs.next()) { + int frontApplicationId = rs.getInt(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID); + int behindApplicationId = rs.getInt(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID); + JsonObject nodeRefResSumObj = new JsonObject(); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID), frontApplicationId); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID), behindApplicationId); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S1_LTE), rs.getDouble(NodeReferenceTable.COLUMN_S1_LTE)); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S3_LTE), rs.getDouble(NodeReferenceTable.COLUMN_S3_LTE)); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S5_LTE), rs.getDouble(NodeReferenceTable.COLUMN_S5_LTE)); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_S5_GT), rs.getDouble(NodeReferenceTable.COLUMN_S5_GT)); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_ERROR), rs.getDouble(NodeReferenceTable.COLUMN_ERROR)); + nodeRefResSumObj.addProperty(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_SUMMARY), rs.getDouble(NodeReferenceTable.COLUMN_SUMMARY)); + nodeRefResSumArray.add(nodeRefResSumObj); + } + } catch (SQLException | H2ClientException e) { + logger.error(e.getMessage(), e); + } + return nodeRefResSumArray; + } +} diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/SegmentCostH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentCostH2PersistenceDAO.java similarity index 50% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/SegmentCostH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentCostH2PersistenceDAO.java index 82c0a1009..eae890307 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/dao/SegmentCostH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentCostH2PersistenceDAO.java @@ -16,43 +16,48 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.cost.dao; +package org.skywalking.apm.collector.storage.h2.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.segment.SegmentCostTable; -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.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.ISegmentCostPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.segment.SegmentCost; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class SegmentCostH2DAO extends H2DAO implements ISegmentCostDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentCostH2DAO.class); +public class SegmentCostH2PersistenceDAO extends H2DAO implements ISegmentCostPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + private final Logger logger = LoggerFactory.getLogger(SegmentCostH2PersistenceDAO.class); + + public SegmentCostH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public SegmentCost get(String id) { return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { - logger.debug("segment cost prepareBatchInsert, id: {}", data.getDataString(0)); + @Override public H2SqlEntity prepareBatchInsert(SegmentCost data) { + logger.debug("segment cost prepareBatchInsert, getId: {}", data.getId()); H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(SegmentCostTable.COLUMN_ID, data.getDataString(0)); - source.put(SegmentCostTable.COLUMN_SEGMENT_ID, data.getDataString(1)); - source.put(SegmentCostTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(SegmentCostTable.COLUMN_SERVICE_NAME, data.getDataString(2)); - source.put(SegmentCostTable.COLUMN_COST, data.getDataLong(0)); - source.put(SegmentCostTable.COLUMN_START_TIME, data.getDataLong(1)); - source.put(SegmentCostTable.COLUMN_END_TIME, data.getDataLong(2)); - source.put(SegmentCostTable.COLUMN_IS_ERROR, data.getDataBoolean(0)); - source.put(SegmentCostTable.COLUMN_TIME_BUCKET, data.getDataLong(3)); + source.put(SegmentCostTable.COLUMN_ID, data.getId()); + source.put(SegmentCostTable.COLUMN_SEGMENT_ID, data.getSegmentId()); + source.put(SegmentCostTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(SegmentCostTable.COLUMN_SERVICE_NAME, data.getServiceName()); + source.put(SegmentCostTable.COLUMN_COST, data.getCost()); + source.put(SegmentCostTable.COLUMN_START_TIME, data.getStartTime()); + source.put(SegmentCostTable.COLUMN_END_TIME, data.getEndTime()); + source.put(SegmentCostTable.COLUMN_IS_ERROR, data.getIsError()); + source.put(SegmentCostTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); logger.debug("segment cost source: {}", source.toString()); String sql = SqlBuilder.buildBatchInsertSql(SegmentCostTable.TABLE, source.keySet()); @@ -61,7 +66,7 @@ public class SegmentCostH2DAO extends H2DAO implements ISegmentCostDAO, IPersist return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(SegmentCost data) { return null; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentCostH2UIDAO.java similarity index 87% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentCostH2UIDAO.java index 32f5a4317..d1833e1df 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentCostH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentCostH2UIDAO.java @@ -16,35 +16,38 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; - import org.elasticsearch.search.sort.SortOrder; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.CollectionUtils; import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - /** * @author peng-yongsheng, clevertension */ -public class SegmentCostH2DAO extends H2DAO implements ISegmentCostDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentCostH2DAO.class); +public class SegmentCostH2UIDAO extends H2DAO implements ISegmentCostUIDAO { + + private final Logger logger = LoggerFactory.getLogger(SegmentCostH2UIDAO.class); private static final String GET_SEGMENT_COST_SQL = "select * from {0} where {1} >= ? and {1} <= ?"; + + public SegmentCostH2UIDAO(H2Client client) { + super(client); + } + @Override public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName, Error error, int applicationId, List segmentIds, int limit, int from, Sort sort) { H2Client client = getClient(); @@ -121,7 +124,6 @@ public class SegmentCostH2DAO extends H2DAO implements ISegmentCostDAO { JsonObject topSegPaging = new JsonObject(); - JsonArray topSegArray = new JsonArray(); topSegPaging.add("data", topSegArray); int cnt = 0; @@ -134,13 +136,6 @@ public class SegmentCostH2DAO extends H2DAO implements ISegmentCostDAO { topSegmentJson.addProperty(SegmentCostTable.COLUMN_SEGMENT_ID, segmentId); topSegmentJson.addProperty(SegmentCostTable.COLUMN_START_TIME, rs.getLong(SegmentCostTable.COLUMN_START_TIME)); topSegmentJson.addProperty(SegmentCostTable.COLUMN_END_TIME, rs.getLong(SegmentCostTable.COLUMN_END_TIME)); - - IGlobalTraceDAO globalTraceDAO = (IGlobalTraceDAO) DAOContainer.INSTANCE.get(IGlobalTraceDAO.class.getName()); - List globalTraces = globalTraceDAO.getGlobalTraceId(segmentId); - if (CollectionUtils.isNotEmpty(globalTraces)) { - topSegmentJson.addProperty(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, globalTraces.get(0)); - } - topSegmentJson.addProperty(SegmentCostTable.COLUMN_APPLICATION_ID, rs.getInt(SegmentCostTable.COLUMN_APPLICATION_ID)); topSegmentJson.addProperty(SegmentCostTable.COLUMN_SERVICE_NAME, rs.getString(SegmentCostTable.COLUMN_SERVICE_NAME)); topSegmentJson.addProperty(SegmentCostTable.COLUMN_COST, rs.getLong(SegmentCostTable.COLUMN_COST)); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java similarity index 58% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java index 51dc2d9dc..4f84b1c61 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/dao/SegmentH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentH2PersistenceDAO.java @@ -16,36 +16,40 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.origin.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.util.HashMap; import java.util.Map; -import org.skywalking.apm.collector.agentstream.worker.segment.cost.dao.SegmentCostH2DAO; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.storage.define.segment.SegmentTable; -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.skywalking.apm.collector.client.h2.H2Client; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.ISegmentPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.segment.Segment; +import org.skywalking.apm.collector.storage.table.segment.SegmentTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class SegmentH2DAO extends H2DAO implements ISegmentDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentCostH2DAO.class); +public class SegmentH2PersistenceDAO extends H2DAO implements ISegmentPersistenceDAO { - @Override public Data get(String id, DataDefine dataDefine) { + private final Logger logger = LoggerFactory.getLogger(SegmentH2PersistenceDAO.class); + + public SegmentH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public Segment get(String id) { return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(Segment data) { Map source = new HashMap<>(); H2SqlEntity entity = new H2SqlEntity(); - source.put(SegmentTable.COLUMN_ID, data.getDataString(0)); - source.put(SegmentTable.COLUMN_DATA_BINARY, data.getDataBytes(0)); + source.put(SegmentTable.COLUMN_ID, data.getId()); + source.put(SegmentTable.COLUMN_DATA_BINARY, data.getDataBinary()); logger.debug("segment source: {}", source.toString()); String sql = SqlBuilder.buildBatchInsertSql(SegmentTable.TABLE, source.keySet()); @@ -54,7 +58,7 @@ public class SegmentH2DAO extends H2DAO implements ISegmentDAO, IPersistenceDAO< return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(Segment data) { return null; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentH2UIDAO.java similarity index 81% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentH2UIDAO.java index d37e581c2..69da56f9a 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/SegmentH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/SegmentH2UIDAO.java @@ -16,16 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.protobuf.InvalidProtocolBufferException; import java.sql.ResultSet; import java.sql.SQLException; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.storage.define.segment.SegmentTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.segment.SegmentTable; import org.skywalking.apm.network.proto.TraceSegmentObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,10 +34,14 @@ import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class SegmentH2DAO extends H2DAO implements ISegmentDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentH2DAO.class); +public class SegmentH2UIDAO extends H2DAO implements ISegmentUIDAO { + private final Logger logger = LoggerFactory.getLogger(SegmentH2UIDAO.class); private static final String GET_SEGMENT_SQL = "select {0} from {1} where {2} = ?"; + public SegmentH2UIDAO(H2Client client) { + super(client); + } + @Override public TraceSegmentObject load(String segmentId) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SEGMENT_SQL, SegmentTable.COLUMN_DATA_BINARY, diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceEntryH2PersistenceDAO.java similarity index 62% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceEntryH2PersistenceDAO.java index dc9bf950b..d74abfda5 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/dao/ServiceEntryH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceEntryH2PersistenceDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.service.entry.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,36 +26,40 @@ 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.service.ServiceEntryTable; -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.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IServiceEntryPersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.service.ServiceEntry; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(ServiceEntryH2DAO.class); +public class ServiceEntryH2PersistenceDAO extends H2DAO implements IServiceEntryPersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(ServiceEntryH2PersistenceDAO.class); private static final String GET_SERVICE_ENTRY_SQL = "select * from {0} where {1} = ?"; - @Override public Data get(String id, DataDefine dataDefine) { + public ServiceEntryH2PersistenceDAO(H2Client client) { + super(client); + } + + @Override public ServiceEntry get(String id) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SERVICE_ENTRY_SQL, ServiceEntryTable.TABLE, ServiceEntryTable.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(ServiceEntryTable.COLUMN_APPLICATION_ID)); - data.setDataInteger(1, rs.getInt(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID)); - data.setDataString(1, rs.getString(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME)); - data.setDataLong(0, rs.getLong(ServiceEntryTable.COLUMN_REGISTER_TIME)); - data.setDataLong(1, rs.getLong(ServiceEntryTable.COLUMN_NEWEST_TIME)); - return data; + ServiceEntry serviceEntry = new ServiceEntry(id); + serviceEntry.setApplicationId(rs.getInt(ServiceEntryTable.COLUMN_APPLICATION_ID)); + serviceEntry.setEntryServiceId(rs.getInt(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID)); + serviceEntry.setEntryServiceName(rs.getString(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME)); + serviceEntry.setRegisterTime(rs.getLong(ServiceEntryTable.COLUMN_REGISTER_TIME)); + serviceEntry.setNewestTime(rs.getLong(ServiceEntryTable.COLUMN_NEWEST_TIME)); + return serviceEntry; } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); @@ -63,34 +67,33 @@ public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO, IPersi return null; } - @Override public H2SqlEntity prepareBatchInsert(Data data) { + @Override public H2SqlEntity prepareBatchInsert(ServiceEntry data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(ServiceEntryTable.COLUMN_ID, data.getDataString(0)); - source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getDataLong(0)); - source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getDataLong(1)); + source.put(ServiceEntryTable.COLUMN_ID, data.getId()); + source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getEntryServiceName()); + source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getRegisterTime()); + source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getNewestTime()); String sql = SqlBuilder.buildBatchInsertSql(ServiceEntryTable.TABLE, source.keySet()); entity.setSql(sql); entity.setParams(source.values().toArray(new Object[0])); return entity; } - @Override public H2SqlEntity prepareBatchUpdate(Data data) { + @Override public H2SqlEntity prepareBatchUpdate(ServiceEntry data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getDataInteger(0)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getDataLong(0)); - source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getDataLong(1)); - String id = data.getDataString(0); + source.put(ServiceEntryTable.COLUMN_APPLICATION_ID, data.getApplicationId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, data.getEntryServiceName()); + source.put(ServiceEntryTable.COLUMN_REGISTER_TIME, data.getRegisterTime()); + source.put(ServiceEntryTable.COLUMN_NEWEST_TIME, data.getNewestTime()); String sql = SqlBuilder.buildBatchUpdateSql(ServiceEntryTable.TABLE, source.keySet(), ServiceEntryTable.COLUMN_ID); entity.setSql(sql); List values = new ArrayList<>(source.values()); - values.add(id); + values.add(data.getId()); entity.setParams(values.toArray(new Object[0])); return entity; } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceEntryH2UIDAO.java similarity index 86% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceEntryH2UIDAO.java index cdc3b7ae8..da2d44e51 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceEntryH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceEntryH2UIDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -24,24 +24,29 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import org.skywalking.apm.collector.cache.ApplicationCache; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.ColumnNameUtils; import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IServiceEntryUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO { - private final Logger logger = LoggerFactory.getLogger(SegmentH2DAO.class); +public class ServiceEntryH2UIDAO extends H2DAO implements IServiceEntryUIDAO { + + private final Logger logger = LoggerFactory.getLogger(ServiceEntryH2UIDAO.class); private static final String GET_SERVICE_ENTRY_SQL = "select * from {0} where {1} >= ? and {2} <= ?"; + public ServiceEntryH2UIDAO(H2Client client) { + super(client); + } + @Override public JsonObject load(int applicationId, String entryServiceName, long startTime, long endTime, int from, int size) { H2Client client = getClient(); @@ -76,14 +81,12 @@ public class ServiceEntryH2DAO extends H2DAO implements IServiceEntryDAO { while (rs.next()) { int appId = rs.getInt(ServiceEntryTable.COLUMN_APPLICATION_ID); int entryServiceId = rs.getInt(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID); - String applicationCode = ApplicationCache.get(appId); String entryServiceName1 = rs.getString(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME); JsonObject row = new JsonObject(); row.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID), entryServiceId); row.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME), entryServiceName1); row.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_APPLICATION_ID), appId); - row.addProperty("applicationCode", applicationCode); serviceArray.add(row); index++; } diff --git a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2CacheDAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceNameH2CacheDAO.java similarity index 87% rename from apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2CacheDAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceNameH2CacheDAO.java index 30b160a44..7c9a14d39 100644 --- a/apm-collector/apm-collector-cache/src/main/java/org/skywalking/apm/collector/cache/dao/ServiceNameH2CacheDAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceNameH2CacheDAO.java @@ -16,16 +16,17 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.cache.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.register.ServiceNameTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IServiceNameCacheDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.ServiceNameTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +40,10 @@ public class ServiceNameH2CacheDAO extends H2DAO implements IServiceNameCacheDAO private static final String GET_SERVICE_NAME_SQL = "select {0},{1} from {2} where {3} = ?"; private static final String GET_SERVICE_ID_SQL = "select {0} from {1} where {2} = ? and {3} = ? limit 1"; + public ServiceNameH2CacheDAO(H2Client client) { + super(client); + } + @Override public String getServiceName(int serviceId) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SERVICE_NAME_SQL, ServiceNameTable.COLUMN_APPLICATION_ID, ServiceNameTable.COLUMN_SERVICE_NAME, diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceNameH2RegisterDAO.java similarity index 74% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceNameH2RegisterDAO.java index ef36d208e..d79383497 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/dao/ServiceNameH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceNameH2RegisterDAO.java @@ -16,24 +16,30 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.servicename.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.util.HashMap; 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.storage.define.register.ServiceNameDataDefine; -import org.skywalking.apm.collector.storage.define.register.ServiceNameTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IServiceNameRegisterDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.register.ServiceName; +import org.skywalking.apm.collector.storage.table.register.ServiceNameTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO { - private final Logger logger = LoggerFactory.getLogger(ServiceNameH2DAO.class); +public class ServiceNameH2RegisterDAO extends H2DAO implements IServiceNameRegisterDAO { + + private final Logger logger = LoggerFactory.getLogger(ServiceNameH2RegisterDAO.class); + + public ServiceNameH2RegisterDAO(H2Client client) { + super(client); + } @Override public int getMaxServiceId() { @@ -46,8 +52,8 @@ public class ServiceNameH2DAO extends H2DAO implements IServiceNameDAO { } @Override - public void save(ServiceNameDataDefine.ServiceName serviceName) { - logger.debug("save service name register info, application id: {}, service name: {}", serviceName.getApplicationId(), serviceName.getServiceName()); + public void save(ServiceName serviceName) { + logger.debug("save service name register info, application getId: {}, service name: {}", serviceName.getId(), serviceName.getServiceName()); H2Client client = getClient(); Map source = new HashMap<>(); source.put(ServiceNameTable.COLUMN_ID, serviceName.getId()); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceReferenceH2PersistenceDAO.java similarity index 50% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceReferenceH2PersistenceDAO.java index fecd14745..9b18bb5aa 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/dao/ServiceReferenceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceReferenceH2PersistenceDAO.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.serviceref.dao; +package org.skywalking.apm.collector.storage.h2.dao; import java.sql.ResultSet; import java.sql.SQLException; @@ -26,46 +26,47 @@ 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.serviceref.ServiceReferenceTable; -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.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IServiceReferencePersistenceDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReference; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO, IPersistenceDAO { - private final Logger logger = LoggerFactory.getLogger(ServiceReferenceH2DAO.class); +public class ServiceReferenceH2PersistenceDAO extends H2DAO implements IServiceReferencePersistenceDAO { + + private final Logger logger = LoggerFactory.getLogger(ServiceReferenceH2PersistenceDAO.class); private static final String GET_SQL = "select * from {0} where {1} = ?"; + public ServiceReferenceH2PersistenceDAO(H2Client client) { + super(client); + } + @Override - public Data get(String id, DataDefine dataDefine) { + public ServiceReference get(String id) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SQL, ServiceReferenceTable.TABLE, ServiceReferenceTable.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(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID)); - data.setDataString(1, rs.getString(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME)); - data.setDataInteger(1, rs.getInt(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)); - data.setDataString(2, rs.getString(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME)); - data.setDataInteger(2, rs.getInt(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)); - data.setDataString(3, rs.getString(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME)); - data.setDataLong(0, rs.getLong(ServiceReferenceTable.COLUMN_S1_LTE)); - data.setDataLong(1, rs.getLong(ServiceReferenceTable.COLUMN_S3_LTE)); - data.setDataLong(2, rs.getLong(ServiceReferenceTable.COLUMN_S5_LTE)); - data.setDataLong(3, rs.getLong(ServiceReferenceTable.COLUMN_S5_GT)); - data.setDataLong(4, rs.getLong(ServiceReferenceTable.COLUMN_SUMMARY)); - data.setDataLong(5, rs.getLong(ServiceReferenceTable.COLUMN_ERROR)); - data.setDataLong(6, rs.getLong(ServiceReferenceTable.COLUMN_COST_SUMMARY)); - data.setDataLong(7, rs.getLong(ServiceReferenceTable.COLUMN_TIME_BUCKET)); - return data; + ServiceReference serviceReference = new ServiceReference(id); + serviceReference.setEntryServiceId(rs.getInt(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID)); + serviceReference.setFrontServiceId(rs.getInt(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)); + serviceReference.setBehindServiceId(rs.getInt(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)); + serviceReference.setS1Lte(rs.getLong(ServiceReferenceTable.COLUMN_S1_LTE)); + serviceReference.setS3Lte(rs.getLong(ServiceReferenceTable.COLUMN_S3_LTE)); + serviceReference.setS5Lte(rs.getLong(ServiceReferenceTable.COLUMN_S5_LTE)); + serviceReference.setS5Gt(rs.getLong(ServiceReferenceTable.COLUMN_S5_GT)); + serviceReference.setSummary(rs.getLong(ServiceReferenceTable.COLUMN_SUMMARY)); + serviceReference.setError(rs.getLong(ServiceReferenceTable.COLUMN_ERROR)); + serviceReference.setCostSummary(rs.getLong(ServiceReferenceTable.COLUMN_COST_SUMMARY)); + serviceReference.setTimeBucket(rs.getLong(ServiceReferenceTable.COLUMN_TIME_BUCKET)); + return serviceReference; } } catch (SQLException | H2ClientException e) { logger.error(e.getMessage(), e); @@ -74,24 +75,21 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO } @Override - public H2SqlEntity prepareBatchInsert(Data data) { + public H2SqlEntity prepareBatchInsert(ServiceReference data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(ServiceReferenceTable.COLUMN_ID, data.getDataString(0)); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(0)); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, data.getDataString(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getDataInteger(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, data.getDataString(3)); - source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getDataLong(0)); - source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getDataLong(1)); - source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getDataLong(2)); - source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getDataLong(3)); - source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getDataLong(4)); - source.put(ServiceReferenceTable.COLUMN_ERROR, data.getDataLong(5)); - source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getDataLong(6)); - source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(7)); + source.put(ServiceReferenceTable.COLUMN_ID, data.getId()); + source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getFrontServiceId()); + source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getBehindServiceId()); + source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(ServiceReferenceTable.COLUMN_ERROR, data.getError()); + source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getCostSummary()); + source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); String sql = SqlBuilder.buildBatchInsertSql(ServiceReferenceTable.TABLE, source.keySet()); entity.setSql(sql); @@ -100,29 +98,25 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO } @Override - public H2SqlEntity prepareBatchUpdate(Data data) { + public H2SqlEntity prepareBatchUpdate(ServiceReference data) { H2SqlEntity entity = new H2SqlEntity(); Map source = new HashMap<>(); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getDataInteger(0)); - source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, data.getDataString(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getDataInteger(1)); - source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, data.getDataString(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getDataInteger(2)); - source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, data.getDataString(3)); - source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getDataLong(0)); - source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getDataLong(1)); - source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getDataLong(2)); - source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getDataLong(3)); - source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getDataLong(4)); - source.put(ServiceReferenceTable.COLUMN_ERROR, data.getDataLong(5)); - source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getDataLong(6)); - source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getDataLong(7)); + source.put(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, data.getEntryServiceId()); + source.put(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, data.getFrontServiceId()); + source.put(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, data.getBehindServiceId()); + source.put(ServiceReferenceTable.COLUMN_S1_LTE, data.getS1Lte()); + source.put(ServiceReferenceTable.COLUMN_S3_LTE, data.getS3Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_LTE, data.getS5Lte()); + source.put(ServiceReferenceTable.COLUMN_S5_GT, data.getS5Gt()); + source.put(ServiceReferenceTable.COLUMN_SUMMARY, data.getSummary()); + source.put(ServiceReferenceTable.COLUMN_ERROR, data.getError()); + source.put(ServiceReferenceTable.COLUMN_COST_SUMMARY, data.getCostSummary()); + source.put(ServiceReferenceTable.COLUMN_TIME_BUCKET, data.getTimeBucket()); - String id = data.getDataString(0); String sql = SqlBuilder.buildBatchUpdateSql(ServiceReferenceTable.TABLE, source.keySet(), ServiceReferenceTable.COLUMN_ID); entity.setSql(sql); List values = new ArrayList<>(source.values()); - values.add(id); + values.add(data.getId()); entity.setParams(values.toArray(new Object[0])); return entity; } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceReferenceH2UIDAO.java similarity index 83% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceReferenceH2UIDAO.java index 543ccce9c..32b974e29 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/ServiceReferenceH2DAO.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/dao/ServiceReferenceH2UIDAO.java @@ -16,34 +16,40 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.ui.dao; +package org.skywalking.apm.collector.storage.h2.dao; import com.google.gson.JsonObject; import java.sql.ResultSet; import java.sql.SQLException; import java.util.LinkedHashMap; import java.util.Map; -import org.skywalking.apm.collector.cache.ServiceNameCache; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.client.h2.H2ClientException; import org.skywalking.apm.collector.core.util.ColumnNameUtils; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable; -import org.skywalking.apm.collector.storage.h2.SqlBuilder; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; +import org.skywalking.apm.collector.storage.base.sql.SqlBuilder; +import org.skywalking.apm.collector.storage.dao.IServiceReferenceUIDAO; +import org.skywalking.apm.collector.storage.h2.base.dao.H2DAO; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng, clevertension */ -public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO { - private final Logger logger = LoggerFactory.getLogger(ServiceReferenceH2DAO.class); +public class ServiceReferenceH2UIDAO extends H2DAO implements IServiceReferenceUIDAO { + + private final Logger logger = LoggerFactory.getLogger(ServiceReferenceH2UIDAO.class); + + public ServiceReferenceH2UIDAO(H2Client client) { + super(client); + } private static final String GET_SRV_REF_LOAD1 = "select {3}, {4}, sum({5}) as {5}, sum({6}) as {6}, sum({7}) as {7}" + ",sum({8}) as {8}, sum({9}) as {9}, sum({10}) as {10}, sum({11}) as {11} from {0} where {1} >= ? and {1} <= ? and {2} = ? group by {3}, {4}"; - @Override public Map load(int entryServiceId, long startTime, long endTime) { + @Override + public Map load(int entryServiceId, long startTime, long endTime) { H2Client client = getClient(); String sql = SqlBuilder.buildSql(GET_SRV_REF_LOAD1, ServiceReferenceTable.TABLE, ServiceReferenceTable.COLUMN_TIME_BUCKET, ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, @@ -83,14 +89,9 @@ public class ServiceReferenceH2DAO extends H2DAO implements IServiceReferenceDAO long summary = rs.getLong(ServiceReferenceTable.COLUMN_SUMMARY); long costSum = rs.getLong(ServiceReferenceTable.COLUMN_COST_SUMMARY); - String frontServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(frontServiceId)); - String behindServiceName = ServiceNameCache.getSplitServiceName(ServiceNameCache.get(behindServiceId)); - JsonObject serviceReference = new JsonObject(); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID), frontServiceId); - serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME), frontServiceName); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID), behindServiceId); - serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME), behindServiceName); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S1_LTE), s1LteSum); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S3_LTE), s3LteSum); serviceReference.addProperty(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_S5_LTE), s5LteSum); diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java similarity index 73% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java index 85405495a..be21e2231 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/application/ApplicationH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ApplicationH2TableDefine.java @@ -16,12 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.application; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.define.register.ApplicationTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.register.ApplicationTable; /** * @author peng-yongsheng @@ -33,7 +32,7 @@ public class ApplicationH2TableDefine extends H2TableDefine { } @Override public void initialize() { - addColumn(new H2ColumnDefine(GlobalTraceTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); + addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_APPLICATION_CODE, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ApplicationTable.COLUMN_APPLICATION_ID, H2ColumnDefine.Type.Int.name())); } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/CpuMetricH2TableDefine.java similarity index 83% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/CpuMetricH2TableDefine.java index 8aeca7b55..c74657f5a 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/cpu/define/CpuMetricH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/CpuMetricH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.cpu.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.jvm.CpuMetricTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.jvm.CpuMetricTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java similarity index 84% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java index d38789912..905dec70a 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/gc/define/GCMetricH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/GCMetricH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.gc.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.jvm.GCMetricTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.jvm.GCMetricTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/define/GlobalTraceH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/GlobalTraceH2TableDefine.java similarity index 82% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/define/GlobalTraceH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/GlobalTraceH2TableDefine.java index 70ead9d44..e2cd07f85 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/global/define/GlobalTraceH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/GlobalTraceH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.global.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.global.GlobalTraceTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/InstPerformanceH2TableDefine.java similarity index 84% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/InstPerformanceH2TableDefine.java index daf3bded0..c1c6b8dd3 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/instance/performance/define/InstPerformanceH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/InstPerformanceH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.instance.performance.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.instance.InstPerformanceTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.instance.InstPerformanceTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java similarity index 85% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java index 70b9224f4..e1c1da651 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/instance/InstanceH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/InstanceH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.instance; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.register.InstanceTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.register.InstanceTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/define/MemoryMetricH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/MemoryMetricH2TableDefine.java similarity index 80% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/define/MemoryMetricH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/MemoryMetricH2TableDefine.java index b03bd692c..451b72f64 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memory/define/MemoryMetricH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/MemoryMetricH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memory.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.jvm.MemoryMetricTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.jvm.MemoryMetricTable; /** * @author peng-yongsheng @@ -33,7 +33,7 @@ public class MemoryMetricH2TableDefine extends H2TableDefine { @Override public void initialize() { addColumn(new H2ColumnDefine(MemoryMetricTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); - addColumn(new H2ColumnDefine(MemoryMetricTable.COLUMN_APPLICATION_INSTANCE_ID, H2ColumnDefine.Type.Int.name())); + addColumn(new H2ColumnDefine(MemoryMetricTable.COLUMN_INSTANCE_ID, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(MemoryMetricTable.COLUMN_IS_HEAP, H2ColumnDefine.Type.Boolean.name())); addColumn(new H2ColumnDefine(MemoryMetricTable.COLUMN_INIT, H2ColumnDefine.Type.Bigint.name())); addColumn(new H2ColumnDefine(MemoryMetricTable.COLUMN_MAX, H2ColumnDefine.Type.Bigint.name())); diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/MemoryPoolMetricH2TableDefine.java similarity index 86% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/MemoryPoolMetricH2TableDefine.java index 1ada2297c..657f8e587 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/worker/memorypool/define/MemoryPoolMetricH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/MemoryPoolMetricH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentjvm.worker.memorypool.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.jvm.MemoryPoolMetricTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.jvm.MemoryPoolMetricTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/define/NodeComponentH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeComponentH2TableDefine.java similarity index 72% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/define/NodeComponentH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeComponentH2TableDefine.java index cc6bc9399..4e2f31b58 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/component/define/NodeComponentH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeComponentH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.component.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.node.NodeComponentTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; /** * @author peng-yongsheng @@ -34,9 +34,7 @@ public class NodeComponentH2TableDefine extends H2TableDefine { @Override public void initialize() { addColumn(new H2ColumnDefine(NodeComponentTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeComponentTable.COLUMN_COMPONENT_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(NodeComponentTable.COLUMN_COMPONENT_NAME, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeComponentTable.COLUMN_PEER_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(NodeComponentTable.COLUMN_PEER, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeComponentTable.COLUMN_TIME_BUCKET, H2ColumnDefine.Type.Bigint.name())); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/define/NodeMappingH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeMappingH2TableDefine.java similarity index 77% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/define/NodeMappingH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeMappingH2TableDefine.java index 0622deded..bfef22f8f 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/node/mapping/define/NodeMappingH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeMappingH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.node.mapping.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.node.NodeMappingTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; /** * @author peng-yongsheng @@ -35,7 +35,6 @@ public class NodeMappingH2TableDefine extends H2TableDefine { addColumn(new H2ColumnDefine(NodeMappingTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeMappingTable.COLUMN_APPLICATION_ID, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(NodeMappingTable.COLUMN_ADDRESS_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(NodeMappingTable.COLUMN_ADDRESS, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeMappingTable.COLUMN_TIME_BUCKET, H2ColumnDefine.Type.Bigint.name())); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/define/NodeReferenceH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeReferenceH2TableDefine.java similarity index 83% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/define/NodeReferenceH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeReferenceH2TableDefine.java index 8c4186fda..8f407c5ad 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/noderef/define/NodeReferenceH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/NodeReferenceH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.noderef.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; /** * @author peng-yongsheng @@ -35,7 +35,6 @@ public class NodeReferenceH2TableDefine extends H2TableDefine { addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_BEHIND_PEER, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_S1_LTE, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_S3_LTE, H2ColumnDefine.Type.Int.name())); addColumn(new H2ColumnDefine(NodeReferenceTable.COLUMN_S5_LTE, H2ColumnDefine.Type.Int.name())); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/define/SegmentCostH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/SegmentCostH2TableDefine.java similarity index 86% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/define/SegmentCostH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/SegmentCostH2TableDefine.java index 811be3222..901fc1a5f 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/cost/define/SegmentCostH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/SegmentCostH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.cost.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.segment.SegmentCostTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/define/SegmentH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/SegmentH2TableDefine.java similarity index 79% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/define/SegmentH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/SegmentH2TableDefine.java index dfbfe2942..50001f547 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/segment/origin/define/SegmentH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/SegmentH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.segment.origin.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.segment.SegmentTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.segment.SegmentTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceEntryH2TableDefine.java similarity index 84% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceEntryH2TableDefine.java index 2ff731367..bb66eead9 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/service/entry/define/ServiceEntryH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceEntryH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.service.entry.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.service.ServiceEntryTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceNameH2TableDefine.java similarity index 82% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceNameH2TableDefine.java index fa4343d7c..26a9e75a6 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/worker/servicename/ServiceNameH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceNameH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentregister.worker.servicename; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.register.ServiceNameTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.register.ServiceNameTable; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceH2TableDefine.java b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceReferenceH2TableDefine.java similarity index 77% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceH2TableDefine.java rename to apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceReferenceH2TableDefine.java index e5ee62eed..97b873d34 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/serviceref/define/ServiceReferenceH2TableDefine.java +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/skywalking/apm/collector/storage/h2/define/ServiceReferenceH2TableDefine.java @@ -16,11 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.serviceref.define; +package org.skywalking.apm.collector.storage.h2.define; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable; -import org.skywalking.apm.collector.storage.h2.define.H2ColumnDefine; -import org.skywalking.apm.collector.storage.h2.define.H2TableDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2ColumnDefine; +import org.skywalking.apm.collector.storage.h2.base.define.H2TableDefine; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; /** * @author peng-yongsheng @@ -34,11 +34,8 @@ public class ServiceReferenceH2TableDefine extends H2TableDefine { @Override public void initialize() { addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_ID, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, H2ColumnDefine.Type.Int.name())); - addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, H2ColumnDefine.Type.Varchar.name())); addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_S1_LTE, H2ColumnDefine.Type.Bigint.name())); addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_S3_LTE, H2ColumnDefine.Type.Bigint.name())); addColumn(new H2ColumnDefine(ServiceReferenceTable.COLUMN_S5_LTE, H2ColumnDefine.Type.Bigint.name())); diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define new file mode 100644 index 000000000..da36dc97f --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define @@ -0,0 +1,16 @@ +org.skywalking.apm.collector.storage.h2.define.ApplicationH2TableDefine +org.skywalking.apm.collector.storage.h2.define.InstanceH2TableDefine +org.skywalking.apm.collector.storage.h2.define.ServiceNameH2TableDefine +org.skywalking.apm.collector.storage.h2.define.CpuMetricH2TableDefine +org.skywalking.apm.collector.storage.h2.define.GCMetricH2TableDefine +org.skywalking.apm.collector.storage.h2.define.MemoryMetricH2TableDefine +org.skywalking.apm.collector.storage.h2.define.MemoryPoolMetricH2TableDefine +org.skywalking.apm.collector.storage.h2.define.GlobalTraceH2TableDefine +org.skywalking.apm.collector.storage.h2.define.InstPerformanceH2TableDefine +org.skywalking.apm.collector.storage.h2.define.NodeComponentH2TableDefine +org.skywalking.apm.collector.storage.h2.define.NodeMappingH2TableDefine +org.skywalking.apm.collector.storage.h2.define.NodeReferenceH2TableDefine +org.skywalking.apm.collector.storage.h2.define.SegmentCostH2TableDefine +org.skywalking.apm.collector.storage.h2.define.SegmentH2TableDefine +org.skywalking.apm.collector.storage.h2.define.ServiceEntryH2TableDefine +org.skywalking.apm.collector.storage.h2.define.ServiceReferenceH2TableDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..63c6a27ab --- /dev/null +++ b/apm-collector/apm-collector-storage/collector-storage-h2-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.storage.h2.StorageModuleH2Provider \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/pom.xml b/apm-collector/apm-collector-storage/pom.xml index 94f620778..a44bded60 100644 --- a/apm-collector/apm-collector-storage/pom.xml +++ b/apm-collector/apm-collector-storage/pom.xml @@ -1,22 +1,4 @@ - - @@ -28,7 +10,12 @@ 4.0.0 apm-collector-storage - jar + pom + + collector-storage-define + collector-storage-es-provider + collector-storage-h2-provider + @@ -38,13 +25,13 @@ org.skywalking - apm-collector-cluster + client-component ${project.version} org.skywalking - apm-collector-remote + collector-remote-define ${project.version} - + \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java deleted file mode 100644 index 49685f8ce..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.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.storage; - -import java.util.List; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.cluster.ClusterDataListener; -import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.framework.UnexpectedException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleRegistration; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.storage.StorageException; -import org.skywalking.apm.collector.core.storage.StorageInstaller; - -/** - * @author peng-yongsheng - */ -public abstract class StorageModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - - @Override protected void initializeOtherContext() { - try { - StorageModuleContext context = (StorageModuleContext)CollectorContextHelper.INSTANCE.getContext(StorageModuleGroupDefine.GROUP_NAME); - Client client = createClient(); - client.initialize(); - context.setClient(client); - injectClientIntoDAO(client); - - storageInstaller().install(client); - } catch (ClientException | StorageException | DefineException e) { - throw new UnexpectedException(e.getMessage()); - } - } - - @Override public final List handlerList() { - return null; - } - - @Override protected final Server server() { - return null; - } - - @Override protected final ModuleRegistration registration() { - return null; - } - - @Override public final ClusterDataListener listener() { - return null; - } - - public abstract StorageInstaller storageInstaller(); - - public abstract void injectClientIntoDAO(Client client) throws DefineException; -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleException.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleException.java deleted file mode 100644 index de954ffe0..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleException.java +++ /dev/null @@ -1,34 +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.storage; - -import org.skywalking.apm.collector.core.module.ModuleException; - -/** - * @author peng-yongsheng - */ -public class StorageModuleException extends ModuleException { - public StorageModuleException(String message) { - super(message); - } - - public StorageModuleException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java deleted file mode 100644 index 627c96cfe..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.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.storage; - -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 StorageModuleGroupDefine implements ModuleGroupDefine { - - public static final String GROUP_NAME = "storage"; - private final StorageModuleInstaller installer; - - public StorageModuleGroupDefine() { - installer = new StorageModuleInstaller(); - } - - @Override public String name() { - return GROUP_NAME; - } - - @Override public Context groupContext() { - return new StorageModuleContext(GROUP_NAME); - } - - @Override public ModuleInstaller moduleInstaller() { - return installer; - } - - @Override public GroupConfigParser groupConfigParser() { - return null; - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java deleted file mode 100644 index e74e68871..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java +++ /dev/null @@ -1,46 +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.storage; - -import java.util.List; -import org.skywalking.apm.collector.core.CollectorException; -import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.module.SingleModuleInstaller; - -/** - * @author peng-yongsheng - */ -public class StorageModuleInstaller extends SingleModuleInstaller { - - @Override public String groupName() { - return StorageModuleGroupDefine.GROUP_NAME; - } - - @Override public Context moduleContext() { - return new StorageModuleContext(groupName()); - } - - @Override public List dependenceModules() { - return null; - } - - @Override public void onAfterInstall() throws CollectorException { - - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/DataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/DataDefine.java deleted file mode 100644 index 2d93f9804..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/DataDefine.java +++ /dev/null @@ -1,112 +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.storage.define; - -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.remote.grpc.proto.RemoteData; - -/** - * @author peng-yongsheng - */ -public abstract class DataDefine { - private Attribute[] attributes; - private int stringCapacity; - private int longCapacity; - private int doubleCapacity; - private int integerCapacity; - private int booleanCapacity; - private int byteCapacity; - - public DataDefine() { - initial(); - } - - private void initial() { - attributes = new Attribute[initialCapacity()]; - attributeDefine(); - for (Attribute attribute : attributes) { - if (AttributeType.STRING.equals(attribute.getType())) { - stringCapacity++; - } else if (AttributeType.LONG.equals(attribute.getType())) { - longCapacity++; - } else if (AttributeType.DOUBLE.equals(attribute.getType())) { - doubleCapacity++; - } else if (AttributeType.INTEGER.equals(attribute.getType())) { - integerCapacity++; - } else if (AttributeType.BOOLEAN.equals(attribute.getType())) { - booleanCapacity++; - } else if (AttributeType.BYTE.equals(attribute.getType())) { - byteCapacity++; - } - } - } - - public final void addAttribute(int position, Attribute attribute) { - attributes[position] = attribute; - } - - protected abstract int initialCapacity(); - - protected abstract void attributeDefine(); - - public final Data build(String id) { - return new Data(id, stringCapacity, longCapacity, doubleCapacity, integerCapacity, booleanCapacity, byteCapacity); - } - - public void mergeData(Data newData, Data oldData) { - int stringPosition = 0; - int longPosition = 0; - int doublePosition = 0; - int integerPosition = 0; - int booleanPosition = 0; - int bytePosition = 0; - for (int i = 0; i < initialCapacity(); i++) { - Attribute attribute = attributes[i]; - if (AttributeType.STRING.equals(attribute.getType())) { - String stringData = attribute.getOperation().operate(newData.getDataString(stringPosition), oldData.getDataString(stringPosition)); - newData.setDataString(stringPosition, stringData); - stringPosition++; - } else if (AttributeType.LONG.equals(attribute.getType())) { - Long longData = attribute.getOperation().operate(newData.getDataLong(longPosition), oldData.getDataLong(longPosition)); - newData.setDataLong(longPosition, longData); - longPosition++; - } else if (AttributeType.DOUBLE.equals(attribute.getType())) { - Double doubleData = attribute.getOperation().operate(newData.getDataDouble(doublePosition), oldData.getDataDouble(doublePosition)); - newData.setDataDouble(doublePosition, doubleData); - doublePosition++; - } else if (AttributeType.INTEGER.equals(attribute.getType())) { - Integer integerData = attribute.getOperation().operate(newData.getDataInteger(integerPosition), oldData.getDataInteger(integerPosition)); - newData.setDataInteger(integerPosition, integerData); - integerPosition++; - } else if (AttributeType.BOOLEAN.equals(attribute.getType())) { - Boolean booleanData = attribute.getOperation().operate(newData.getDataBoolean(booleanPosition), oldData.getDataBoolean(booleanPosition)); - newData.setDataBoolean(booleanPosition, booleanData); - booleanPosition++; - } else if (AttributeType.BYTE.equals(attribute.getType())) { - byte[] byteData = attribute.getOperation().operate(newData.getDataBytes(bytePosition), oldData.getDataBytes(integerPosition)); - newData.setDataBytes(bytePosition, byteData); - bytePosition++; - } - } - } - - public abstract Object deserialize(RemoteData remoteData); - - public abstract RemoteData serialize(Object object); -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/global/GlobalTraceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/global/GlobalTraceDataDefine.java deleted file mode 100644 index f592b3822..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/global/GlobalTraceDataDefine.java +++ /dev/null @@ -1,109 +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.storage.define.global; - -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; - -/** - * @author peng-yongsheng - */ -public class GlobalTraceDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 4; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(GlobalTraceTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(GlobalTraceTable.COLUMN_SEGMENT_ID, AttributeType.STRING, new CoverOperation())); - addAttribute(2, new Attribute(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, AttributeType.STRING, new CoverOperation())); - addAttribute(3, new Attribute(GlobalTraceTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - return null; - } - - @Override public RemoteData serialize(Object object) { - return null; - } - - public static class GlobalTrace implements Transform { - private String id; - private String segmentId; - private String globalTraceId; - private long timeBucket; - - public GlobalTrace() { - } - - @Override public Data toData() { - GlobalTraceDataDefine define = new GlobalTraceDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataString(1, this.segmentId); - data.setDataString(2, this.globalTraceId); - data.setDataLong(0, this.timeBucket); - return data; - } - - @Override public Object toSelf(Data data) { - return null; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getSegmentId() { - return segmentId; - } - - public void setSegmentId(String segmentId) { - this.segmentId = segmentId; - } - - public String getGlobalTraceId() { - return globalTraceId; - } - - public void setGlobalTraceId(String globalTraceId) { - this.globalTraceId = globalTraceId; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceDataDefine.java deleted file mode 100644 index 987f13ecc..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/instance/InstPerformanceDataDefine.java +++ /dev/null @@ -1,152 +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.storage.define.instance; - -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.core.stream.Transform; -import org.skywalking.apm.collector.core.stream.operate.AddOperation; -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; - -/** - * @author peng-yongsheng - */ -public class InstPerformanceDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 6; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(InstPerformanceTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(InstPerformanceTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(InstPerformanceTable.COLUMN_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(InstPerformanceTable.COLUMN_CALLS, AttributeType.INTEGER, new AddOperation())); - addAttribute(4, new Attribute(InstPerformanceTable.COLUMN_COST_TOTAL, AttributeType.LONG, new AddOperation())); - addAttribute(5, new Attribute(InstPerformanceTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - Data data = build(remoteData.getDataStrings(0)); - data.setDataInteger(0, remoteData.getDataIntegers(0)); - data.setDataInteger(1, remoteData.getDataIntegers(1)); - data.setDataInteger(2, remoteData.getDataIntegers(2)); - data.setDataLong(0, remoteData.getDataLongs(0)); - data.setDataLong(1, remoteData.getDataLongs(1)); - return data; - } - - @Override public RemoteData serialize(Object object) { - Data data = (Data)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(data.getDataString(0)); - builder.addDataIntegers(data.getDataInteger(0)); - builder.addDataIntegers(data.getDataInteger(1)); - builder.addDataIntegers(data.getDataInteger(2)); - builder.addDataLongs(data.getDataLong(0)); - builder.addDataLongs(data.getDataLong(1)); - return builder.build(); - } - - public static class InstPerformance implements Transform { - private String id; - private int applicationId; - private int instanceId; - private int calls; - private long costTotal; - private long timeBucket; - - public InstPerformance() { - } - - @Override public Data toData() { - InstPerformanceDataDefine define = new InstPerformanceDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.applicationId); - data.setDataInteger(1, this.instanceId); - data.setDataInteger(2, this.calls); - data.setDataLong(0, this.costTotal); - data.setDataLong(1, this.timeBucket); - return data; - } - - @Override public InstPerformance toSelf(Data data) { - this.id = data.getDataString(0); - this.applicationId = data.getDataInteger(0); - this.instanceId = data.getDataInteger(1); - this.calls = data.getDataInteger(2); - this.costTotal = data.getDataLong(0); - this.timeBucket = data.getDataLong(1); - return this; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getInstanceId() { - return instanceId; - } - - public void setInstanceId(int instanceId) { - this.instanceId = instanceId; - } - - public int getCalls() { - return calls; - } - - public void setCalls(int calls) { - this.calls = calls; - } - - public long getCostTotal() { - return costTotal; - } - - public void setCostTotal(long costTotal) { - this.costTotal = costTotal; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public int getApplicationId() { - return applicationId; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricDataDefine.java deleted file mode 100644 index 5e791c49a..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/CpuMetricDataDefine.java +++ /dev/null @@ -1,122 +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.storage.define.jvm; - -import org.skywalking.apm.collector.core.framework.UnexpectedException; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.core.stream.Transform; -import org.skywalking.apm.collector.core.stream.operate.AddOperation; -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; - -/** - * @author peng-yongsheng - */ -public class CpuMetricDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 4; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(CpuMetricTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(CpuMetricTable.COLUMN_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(CpuMetricTable.COLUMN_USAGE_PERCENT, AttributeType.DOUBLE, new AddOperation())); - addAttribute(3, new Attribute(CpuMetricTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - throw new UnexpectedException("cpu metric data did not need send to remote worker."); - } - - @Override public RemoteData serialize(Object object) { - throw new UnexpectedException("cpu metric data did not need send to remote worker."); - } - - public static class CpuMetric implements Transform { - private String id; - private int instanceId; - private double usagePercent; - private long timeBucket; - - public CpuMetric(String id, int instanceId, double usagePercent, long timeBucket) { - this.id = id; - this.instanceId = instanceId; - this.usagePercent = usagePercent; - this.timeBucket = timeBucket; - } - - public CpuMetric() { - } - - @Override public Data toData() { - CpuMetricDataDefine define = new CpuMetricDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.instanceId); - data.setDataDouble(0, this.usagePercent); - data.setDataLong(0, this.timeBucket); - return data; - } - - @Override public CpuMetric toSelf(Data data) { - this.id = data.getDataString(0); - this.instanceId = data.getDataInteger(0); - this.usagePercent = data.getDataDouble(0); - this.timeBucket = data.getDataLong(0); - return this; - } - - public void setId(String id) { - this.id = id; - } - - public void setInstanceId(int instanceId) { - this.instanceId = instanceId; - } - - public void setUsagePercent(double usagePercent) { - this.usagePercent = usagePercent; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public String getId() { - return id; - } - - public int getInstanceId() { - return instanceId; - } - - public double getUsagePercent() { - return usagePercent; - } - - public long getTimeBucket() { - return timeBucket; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricDataDefine.java deleted file mode 100644 index 8021a6d0c..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/GCMetricDataDefine.java +++ /dev/null @@ -1,147 +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.storage.define.jvm; - -import org.skywalking.apm.collector.core.framework.UnexpectedException; -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; - -/** - * @author peng-yongsheng - */ -public class GCMetricDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 6; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(GCMetricTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(GCMetricTable.COLUMN_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(GCMetricTable.COLUMN_PHRASE, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(GCMetricTable.COLUMN_COUNT, AttributeType.LONG, new CoverOperation())); - addAttribute(4, new Attribute(GCMetricTable.COLUMN_TIME, AttributeType.LONG, new CoverOperation())); - addAttribute(5, new Attribute(GCMetricTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - throw new UnexpectedException("gc metric data did not need send to remote worker."); - } - - @Override public RemoteData serialize(Object object) { - throw new UnexpectedException("gc metric data did not need send to remote worker."); - } - - public static class GCMetric implements Transform { - private String id; - private int instanceId; - private int phrase; - private long count; - private long time; - private long timeBucket; - - public GCMetric(String id, int instanceId, int phrase, long count, long time, long timeBucket) { - this.id = id; - this.instanceId = instanceId; - this.phrase = phrase; - this.count = count; - this.time = time; - this.timeBucket = timeBucket; - } - - public GCMetric() { - } - - @Override public Data toData() { - GCMetricDataDefine define = new GCMetricDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.instanceId); - data.setDataInteger(1, this.phrase); - data.setDataLong(0, this.count); - data.setDataLong(1, this.time); - data.setDataLong(2, this.timeBucket); - return data; - } - - @Override public GCMetric toSelf(Data data) { - this.id = data.getDataString(0); - this.instanceId = data.getDataInteger(0); - this.phrase = data.getDataInteger(1); - this.count = data.getDataLong(0); - this.time = data.getDataLong(1); - this.timeBucket = data.getDataLong(2); - return this; - } - - public void setId(String id) { - this.id = id; - } - - public void setInstanceId(int instanceId) { - this.instanceId = instanceId; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public String getId() { - return id; - } - - public int getInstanceId() { - return instanceId; - } - - public long getTimeBucket() { - return timeBucket; - } - - public int getPhrase() { - return phrase; - } - - public long getCount() { - return count; - } - - public long getTime() { - return time; - } - - public void setPhrase(int phrase) { - this.phrase = phrase; - } - - public void setCount(long count) { - this.count = count; - } - - public void setTime(long time) { - this.time = time; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryMetricDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryMetricDataDefine.java deleted file mode 100644 index 4ecd8ed51..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryMetricDataDefine.java +++ /dev/null @@ -1,154 +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.storage.define.jvm; - -import org.skywalking.apm.collector.core.framework.UnexpectedException; -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; - -/** - * @author peng-yongsheng - */ -public class MemoryMetricDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 8; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(MemoryMetricTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(MemoryMetricTable.COLUMN_APPLICATION_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(MemoryMetricTable.COLUMN_IS_HEAP, AttributeType.BOOLEAN, new CoverOperation())); - addAttribute(3, new Attribute(MemoryMetricTable.COLUMN_INIT, AttributeType.LONG, new CoverOperation())); - addAttribute(4, new Attribute(MemoryMetricTable.COLUMN_MAX, AttributeType.LONG, new CoverOperation())); - addAttribute(5, new Attribute(MemoryMetricTable.COLUMN_USED, AttributeType.LONG, new CoverOperation())); - addAttribute(6, new Attribute(MemoryMetricTable.COLUMN_COMMITTED, AttributeType.LONG, new CoverOperation())); - addAttribute(7, new Attribute(MemoryMetricTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - throw new UnexpectedException("memory metric data did not need send to remote worker."); - } - - @Override public RemoteData serialize(Object object) { - throw new UnexpectedException("memory metric data did not need send to remote worker."); - } - - public static class MemoryMetric implements Transform { - private String id; - private int applicationInstanceId; - private boolean isHeap; - private long init; - private long max; - private long used; - private long committed; - private long timeBucket; - - public MemoryMetric(String id, int applicationInstanceId, boolean isHeap, long init, long max, long used, - long committed, long timeBucket) { - this.id = id; - this.applicationInstanceId = applicationInstanceId; - this.isHeap = isHeap; - this.init = init; - this.max = max; - this.used = used; - this.committed = committed; - this.timeBucket = timeBucket; - } - - public MemoryMetric() { - } - - @Override public Data toData() { - MemoryMetricDataDefine define = new MemoryMetricDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.applicationInstanceId); - data.setDataBoolean(0, this.isHeap); - data.setDataLong(0, this.init); - data.setDataLong(1, this.max); - data.setDataLong(2, this.used); - data.setDataLong(3, this.committed); - data.setDataLong(4, this.timeBucket); - return data; - } - - @Override public MemoryMetric toSelf(Data data) { - this.id = data.getDataString(0); - this.applicationInstanceId = data.getDataInteger(0); - this.isHeap = data.getDataBoolean(0); - this.init = data.getDataLong(0); - this.max = data.getDataLong(1); - this.used = data.getDataLong(2); - this.committed = data.getDataLong(3); - this.timeBucket = data.getDataLong(4); - return this; - } - - public void setId(String id) { - this.id = id; - } - - public void setApplicationInstanceId(int applicationInstanceId) { - this.applicationInstanceId = applicationInstanceId; - } - - public void setHeap(boolean heap) { - isHeap = heap; - } - - public void setInit(long init) { - this.init = init; - } - - public void setMax(long max) { - this.max = max; - } - - public void setUsed(long used) { - this.used = used; - } - - public void setCommitted(long committed) { - this.committed = committed; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public String getId() { - return id; - } - - public int getApplicationInstanceId() { - return applicationInstanceId; - } - - public long getTimeBucket() { - return timeBucket; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricDataDefine.java deleted file mode 100644 index 69e78a131..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/jvm/MemoryPoolMetricDataDefine.java +++ /dev/null @@ -1,154 +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.storage.define.jvm; - -import org.skywalking.apm.collector.core.framework.UnexpectedException; -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; - -/** - * @author peng-yongsheng - */ -public class MemoryPoolMetricDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 8; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(MemoryPoolMetricTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(MemoryPoolMetricTable.COLUMN_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(MemoryPoolMetricTable.COLUMN_POOL_TYPE, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(MemoryPoolMetricTable.COLUMN_INIT, AttributeType.LONG, new CoverOperation())); - addAttribute(4, new Attribute(MemoryPoolMetricTable.COLUMN_MAX, AttributeType.LONG, new CoverOperation())); - addAttribute(5, new Attribute(MemoryPoolMetricTable.COLUMN_USED, AttributeType.LONG, new CoverOperation())); - addAttribute(6, new Attribute(MemoryPoolMetricTable.COLUMN_COMMITTED, AttributeType.LONG, new CoverOperation())); - addAttribute(7, new Attribute(MemoryPoolMetricTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - throw new UnexpectedException("memory pool metric data did not need send to remote worker."); - } - - @Override public RemoteData serialize(Object object) { - throw new UnexpectedException("memory pool metric data did not need send to remote worker."); - } - - public static class MemoryPoolMetric implements Transform { - private String id; - private int instanceId; - private int poolType; - private long init; - private long max; - private long used; - private long committed; - private long timeBucket; - - public MemoryPoolMetric(String id, int instanceId, int poolType, long init, long max, - long used, long committed, long timeBucket) { - this.id = id; - this.instanceId = instanceId; - this.poolType = poolType; - this.init = init; - this.max = max; - this.used = used; - this.committed = committed; - this.timeBucket = timeBucket; - } - - public MemoryPoolMetric() { - } - - @Override public Data toData() { - MemoryPoolMetricDataDefine define = new MemoryPoolMetricDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.instanceId); - data.setDataInteger(1, this.poolType); - data.setDataLong(0, this.init); - data.setDataLong(1, this.max); - data.setDataLong(2, this.used); - data.setDataLong(3, this.committed); - data.setDataLong(4, this.timeBucket); - return data; - } - - @Override public MemoryPoolMetric toSelf(Data data) { - this.id = data.getDataString(0); - this.instanceId = data.getDataInteger(0); - this.poolType = data.getDataInteger(1); - this.init = data.getDataLong(0); - this.max = data.getDataLong(1); - this.used = data.getDataLong(2); - this.committed = data.getDataLong(3); - this.timeBucket = data.getDataLong(4); - return this; - } - - public void setId(String id) { - this.id = id; - } - - public void setInstanceId(int instanceId) { - this.instanceId = instanceId; - } - - public void setPoolType(int poolType) { - this.poolType = poolType; - } - - public void setInit(long init) { - this.init = init; - } - - public void setMax(long max) { - this.max = max; - } - - public void setUsed(long used) { - this.used = used; - } - - public void setCommitted(long committed) { - this.committed = committed; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public String getId() { - return id; - } - - public int getInstanceId() { - return instanceId; - } - - public long getTimeBucket() { - return timeBucket; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeComponentDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeComponentDataDefine.java deleted file mode 100644 index a30ab47cd..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeComponentDataDefine.java +++ /dev/null @@ -1,151 +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.storage.define.node; - -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; - -/** - * @author peng-yongsheng - */ -public class NodeComponentDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 6; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(NodeComponentTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(NodeComponentTable.COLUMN_COMPONENT_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(NodeComponentTable.COLUMN_COMPONENT_NAME, AttributeType.STRING, new CoverOperation())); - addAttribute(3, new Attribute(NodeComponentTable.COLUMN_PEER_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(4, new Attribute(NodeComponentTable.COLUMN_PEER, AttributeType.STRING, new CoverOperation())); - addAttribute(5, new Attribute(NodeComponentTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - Data data = build(remoteData.getDataStrings(0)); - data.setDataInteger(0, remoteData.getDataIntegers(0)); - data.setDataString(1, remoteData.getDataStrings(1)); - data.setDataInteger(1, remoteData.getDataIntegers(1)); - data.setDataString(2, remoteData.getDataStrings(2)); - data.setDataLong(0, remoteData.getDataLongs(0)); - return data; - } - - @Override public RemoteData serialize(Object object) { - Data data = (Data)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(data.getDataString(0)); - builder.addDataIntegers(data.getDataInteger(0)); - builder.addDataStrings(data.getDataString(1)); - builder.addDataIntegers(data.getDataInteger(1)); - builder.addDataStrings(data.getDataString(2)); - builder.addDataLongs(data.getDataLong(0)); - return builder.build(); - } - - public static class NodeComponent implements Transform { - private String id; - private Integer componentId; - private String componentName; - private Integer peerId; - private String peer; - private long timeBucket; - - public NodeComponent() { - } - - @Override public Data toData() { - NodeComponentDataDefine define = new NodeComponentDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.componentId); - data.setDataString(1, this.componentName); - data.setDataInteger(1, this.peerId); - data.setDataString(2, this.peer); - data.setDataLong(0, this.timeBucket); - return data; - } - - @Override public NodeComponent toSelf(Data data) { - this.id = data.getDataString(0); - this.componentId = data.getDataInteger(0); - this.componentName = data.getDataString(1); - this.peerId = data.getDataInteger(1); - this.peer = data.getDataString(2); - this.timeBucket = data.getDataLong(0); - return this; - } - - public String getId() { - return id; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setId(String id) { - this.id = id; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public Integer getComponentId() { - return componentId; - } - - public void setComponentId(Integer componentId) { - this.componentId = componentId; - } - - public String getComponentName() { - return componentName; - } - - public void setComponentName(String componentName) { - this.componentName = componentName; - } - - public Integer getPeerId() { - return peerId; - } - - public void setPeerId(Integer peerId) { - this.peerId = peerId; - } - - public String getPeer() { - return peer; - } - - public void setPeer(String peer) { - this.peer = peer; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeMappingDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeMappingDataDefine.java deleted file mode 100644 index 76108464b..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/node/NodeMappingDataDefine.java +++ /dev/null @@ -1,137 +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.storage.define.node; - -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; - -/** - * @author peng-yongsheng - */ -public class NodeMappingDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 5; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(NodeMappingTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(NodeMappingTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(NodeMappingTable.COLUMN_ADDRESS_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(NodeMappingTable.COLUMN_ADDRESS, AttributeType.STRING, new CoverOperation())); - addAttribute(4, new Attribute(NodeMappingTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - Data data = build(remoteData.getDataStrings(0)); - data.setDataInteger(0, remoteData.getDataIntegers(0)); - data.setDataInteger(1, remoteData.getDataIntegers(1)); - data.setDataString(1, remoteData.getDataStrings(1)); - data.setDataLong(0, remoteData.getDataLongs(0)); - return data; - } - - @Override public RemoteData serialize(Object object) { - Data data = (Data)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(data.getDataString(0)); - builder.addDataIntegers(data.getDataInteger(0)); - builder.addDataIntegers(data.getDataInteger(1)); - builder.addDataStrings(data.getDataString(1)); - builder.addDataLongs(data.getDataLong(0)); - return builder.build(); - } - - public static class NodeMapping implements Transform { - private String id; - private int applicationId; - private int addressId; - private String address; - private long timeBucket; - - public NodeMapping() { - } - - @Override public Data toData() { - NodeMappingDataDefine define = new NodeMappingDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.applicationId); - data.setDataInteger(1, this.addressId); - data.setDataString(1, this.address); - data.setDataLong(0, this.timeBucket); - return data; - } - - @Override public NodeMapping toSelf(Data data) { - this.id = data.getDataString(0); - this.applicationId = data.getDataInteger(0); - this.addressId = data.getDataInteger(1); - this.address = data.getDataString(1); - this.timeBucket = data.getDataLong(0); - return this; - } - - public String getId() { - return id; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setId(String id) { - this.id = id; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public int getApplicationId() { - return applicationId; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - - public int getAddressId() { - return addressId; - } - - public void setAddressId(int addressId) { - this.addressId = addressId; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java deleted file mode 100644 index 4c67a0dab..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java +++ /dev/null @@ -1,210 +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.storage.define.noderef; - -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.core.stream.Transform; -import org.skywalking.apm.collector.core.stream.operate.AddOperation; -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; - -/** - * @author peng-yongsheng - */ -public class NodeReferenceDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 11; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(NodeReferenceTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, AttributeType.INTEGER, new NonOperation())); - addAttribute(2, new Attribute(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, AttributeType.INTEGER, new NonOperation())); - addAttribute(3, new Attribute(NodeReferenceTable.COLUMN_BEHIND_PEER, AttributeType.STRING, new NonOperation())); - addAttribute(4, new Attribute(NodeReferenceTable.COLUMN_S1_LTE, AttributeType.INTEGER, new AddOperation())); - addAttribute(5, new Attribute(NodeReferenceTable.COLUMN_S3_LTE, AttributeType.INTEGER, new AddOperation())); - addAttribute(6, new Attribute(NodeReferenceTable.COLUMN_S5_LTE, AttributeType.INTEGER, new AddOperation())); - addAttribute(7, new Attribute(NodeReferenceTable.COLUMN_S5_GT, AttributeType.INTEGER, new AddOperation())); - addAttribute(8, new Attribute(NodeReferenceTable.COLUMN_SUMMARY, AttributeType.INTEGER, new AddOperation())); - addAttribute(9, new Attribute(NodeReferenceTable.COLUMN_ERROR, AttributeType.INTEGER, new AddOperation())); - addAttribute(10, new Attribute(NodeReferenceTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new NonOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - Data data = build(remoteData.getDataStrings(0)); - data.setDataInteger(0, remoteData.getDataIntegers(0)); - data.setDataInteger(1, remoteData.getDataIntegers(1)); - data.setDataString(1, remoteData.getDataStrings(1)); - data.setDataInteger(2, remoteData.getDataIntegers(2)); - data.setDataInteger(3, remoteData.getDataIntegers(3)); - data.setDataInteger(4, remoteData.getDataIntegers(4)); - data.setDataInteger(5, remoteData.getDataIntegers(5)); - data.setDataInteger(6, remoteData.getDataIntegers(6)); - data.setDataInteger(7, remoteData.getDataIntegers(7)); - data.setDataLong(0, remoteData.getDataLongs(0)); - return data; - } - - @Override public RemoteData serialize(Object object) { - Data data = (Data)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(data.getDataString(0)); - builder.addDataIntegers(data.getDataInteger(0)); - builder.addDataIntegers(data.getDataInteger(1)); - builder.addDataStrings(data.getDataString(1)); - builder.addDataIntegers(data.getDataInteger(2)); - builder.addDataIntegers(data.getDataInteger(3)); - builder.addDataIntegers(data.getDataInteger(4)); - builder.addDataIntegers(data.getDataInteger(5)); - builder.addDataIntegers(data.getDataInteger(6)); - builder.addDataIntegers(data.getDataInteger(7)); - builder.addDataLongs(data.getDataLong(0)); - return builder.build(); - } - - public static class NodeReference implements Transform { - private String id; - private int frontApplicationId; - private int behindApplicationId; - private String behindPeer; - private int s1LTE = 0; - private int s3LTE = 0; - private int s5LTE = 0; - private int s5GT = 0; - private int summary = 0; - private int error = 0; - private long timeBucket; - - public NodeReference() { - } - - @Override public Data toData() { - NodeReferenceDataDefine define = new NodeReferenceDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.frontApplicationId); - data.setDataInteger(1, this.behindApplicationId); - data.setDataString(1, this.behindPeer); - data.setDataInteger(2, this.s1LTE); - data.setDataInteger(3, this.s3LTE); - data.setDataInteger(4, this.s5LTE); - data.setDataInteger(5, this.s5GT); - data.setDataInteger(6, this.summary); - data.setDataInteger(7, this.error); - data.setDataLong(0, this.timeBucket); - return data; - } - - @Override public Object toSelf(Data data) { - return null; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getFrontApplicationId() { - return frontApplicationId; - } - - public void setFrontApplicationId(int frontApplicationId) { - this.frontApplicationId = frontApplicationId; - } - - public int getBehindApplicationId() { - return behindApplicationId; - } - - public void setBehindApplicationId(int behindApplicationId) { - this.behindApplicationId = behindApplicationId; - } - - public String getBehindPeer() { - return behindPeer; - } - - public void setBehindPeer(String behindPeer) { - this.behindPeer = behindPeer; - } - - public int getS1LTE() { - return s1LTE; - } - - public void setS1LTE(int s1LTE) { - this.s1LTE = s1LTE; - } - - public int getS3LTE() { - return s3LTE; - } - - public void setS3LTE(int s3LTE) { - this.s3LTE = s3LTE; - } - - public int getS5LTE() { - return s5LTE; - } - - public void setS5LTE(int s5LTE) { - this.s5LTE = s5LTE; - } - - public int getS5GT() { - return s5GT; - } - - public void setS5GT(int s5GT) { - this.s5GT = s5GT; - } - - public int getError() { - return error; - } - - public void setError(int error) { - this.error = error; - } - - public int getSummary() { - return summary; - } - - public void setSummary(int summary) { - this.summary = summary; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ApplicationDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ApplicationDataDefine.java deleted file mode 100644 index 4458fb994..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ApplicationDataDefine.java +++ /dev/null @@ -1,94 +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.storage.define.register; - -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; - -/** - * @author peng-yongsheng - */ -public class ApplicationDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 3; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(ApplicationTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(ApplicationTable.COLUMN_APPLICATION_CODE, AttributeType.STRING, new CoverOperation())); - addAttribute(2, new Attribute(ApplicationTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - String id = remoteData.getDataStrings(0); - String applicationCode = remoteData.getDataStrings(1); - int applicationId = remoteData.getDataIntegers(0); - return new Application(id, applicationCode, applicationId); - } - - @Override public RemoteData serialize(Object object) { - Application application = (Application)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(application.getId()); - builder.addDataStrings(application.getApplicationCode()); - builder.addDataIntegers(application.getApplicationId()); - return builder.build(); - } - - public static class Application { - private String id; - private String applicationCode; - private int applicationId; - - public Application(String id, String applicationCode, int applicationId) { - this.id = id; - this.applicationCode = applicationCode; - this.applicationId = applicationId; - } - - public String getId() { - return id; - } - - public String getApplicationCode() { - return applicationCode; - } - - public int getApplicationId() { - return applicationId; - } - - public void setId(String id) { - this.id = id; - } - - public void setApplicationCode(String applicationCode) { - this.applicationCode = applicationCode; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java deleted file mode 100644 index 09b5519b5..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java +++ /dev/null @@ -1,151 +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.storage.define.register; - -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; - -/** - * @author peng-yongsheng - */ -public class InstanceDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 7; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(InstanceTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(InstanceTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(InstanceTable.COLUMN_AGENT_UUID, AttributeType.STRING, new CoverOperation())); - addAttribute(3, new Attribute(InstanceTable.COLUMN_REGISTER_TIME, AttributeType.LONG, new CoverOperation())); - addAttribute(4, new Attribute(InstanceTable.COLUMN_INSTANCE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(5, new Attribute(InstanceTable.COLUMN_HEARTBEAT_TIME, AttributeType.LONG, new CoverOperation())); - addAttribute(6, new Attribute(InstanceTable.COLUMN_OS_INFO, AttributeType.STRING, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - String id = remoteData.getDataStrings(0); - int applicationId = remoteData.getDataIntegers(0); - String agentUUID = remoteData.getDataStrings(1); - int instanceId = remoteData.getDataIntegers(1); - long registerTime = remoteData.getDataLongs(0); - long heartBeatTime = remoteData.getDataLongs(1); - String osInfo = remoteData.getDataStrings(2); - return new Instance(id, applicationId, agentUUID, registerTime, instanceId, heartBeatTime, osInfo); - } - - @Override public RemoteData serialize(Object object) { - Instance instance = (Instance)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(instance.getId()); - builder.addDataIntegers(instance.getApplicationId()); - builder.addDataStrings(instance.getAgentUUID()); - builder.addDataIntegers(instance.getInstanceId()); - builder.addDataLongs(instance.getRegisterTime()); - builder.addDataLongs(instance.getHeartBeatTime()); - builder.addDataStrings(instance.getOsInfo()); - return builder.build(); - } - - public static class Instance { - private String id; - private int applicationId; - private String agentUUID; - private long registerTime; - private int instanceId; - private long heartBeatTime; - private String osInfo; - - public Instance(String id, int applicationId, String agentUUID, long registerTime, int instanceId, - long heartBeatTime, - String osInfo) { - this.id = id; - this.applicationId = applicationId; - this.agentUUID = agentUUID; - this.registerTime = registerTime; - this.instanceId = instanceId; - this.heartBeatTime = heartBeatTime; - this.osInfo = osInfo; - } - - public Instance() { - } - - public String getId() { - return id; - } - - public int getApplicationId() { - return applicationId; - } - - public String getAgentUUID() { - return agentUUID; - } - - public long getRegisterTime() { - return registerTime; - } - - public int getInstanceId() { - return instanceId; - } - - public void setId(String id) { - this.id = id; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - - public void setAgentUUID(String agentUUID) { - this.agentUUID = agentUUID; - } - - public void setRegisterTime(long registerTime) { - this.registerTime = registerTime; - } - - public void setInstanceId(int instanceId) { - this.instanceId = instanceId; - } - - public long getHeartBeatTime() { - return heartBeatTime; - } - - public void setHeartBeatTime(long heartBeatTime) { - this.heartBeatTime = heartBeatTime; - } - - public String getOsInfo() { - return osInfo; - } - - public void setOsInfo(String osInfo) { - this.osInfo = osInfo; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ServiceNameDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ServiceNameDataDefine.java deleted file mode 100644 index d9af3a3fe..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/ServiceNameDataDefine.java +++ /dev/null @@ -1,107 +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.storage.define.register; - -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; - -/** - * @author peng-yongsheng - */ -public class ServiceNameDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 4; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(ServiceNameTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(ServiceNameTable.COLUMN_SERVICE_NAME, AttributeType.STRING, new CoverOperation())); - addAttribute(2, new Attribute(ServiceNameTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(ServiceNameTable.COLUMN_SERVICE_ID, AttributeType.INTEGER, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - String id = remoteData.getDataStrings(0); - String serviceName = remoteData.getDataStrings(1); - int applicationId = remoteData.getDataIntegers(0); - int serviceId = remoteData.getDataIntegers(1); - return new ServiceName(id, serviceName, applicationId, serviceId); - } - - @Override public RemoteData serialize(Object object) { - ServiceName serviceName = (ServiceName)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(serviceName.getId()); - builder.addDataStrings(serviceName.getServiceName()); - builder.addDataIntegers(serviceName.getApplicationId()); - builder.addDataIntegers(serviceName.getServiceId()); - return builder.build(); - } - - public static class ServiceName { - private String id; - private String serviceName; - private int applicationId; - private int serviceId; - - public ServiceName(String id, String serviceName, int applicationId, int serviceId) { - this.id = id; - this.serviceName = serviceName; - this.applicationId = applicationId; - this.serviceId = serviceId; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getServiceName() { - return serviceName; - } - - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - public int getApplicationId() { - return applicationId; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - - public int getServiceId() { - return serviceId; - } - - public void setServiceId(int serviceId) { - this.serviceId = serviceId; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentCostDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentCostDataDefine.java deleted file mode 100644 index bfb386c1b..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentCostDataDefine.java +++ /dev/null @@ -1,164 +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.storage.define.segment; - -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; - -/** - * @author peng-yongsheng - */ -public class SegmentCostDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 9; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(SegmentCostTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(SegmentCostTable.COLUMN_SEGMENT_ID, AttributeType.STRING, new CoverOperation())); - addAttribute(2, new Attribute(SegmentCostTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(SegmentCostTable.COLUMN_SERVICE_NAME, AttributeType.STRING, new CoverOperation())); - addAttribute(4, new Attribute(SegmentCostTable.COLUMN_COST, AttributeType.LONG, new CoverOperation())); - addAttribute(5, new Attribute(SegmentCostTable.COLUMN_START_TIME, AttributeType.LONG, new CoverOperation())); - addAttribute(6, new Attribute(SegmentCostTable.COLUMN_END_TIME, AttributeType.LONG, new CoverOperation())); - addAttribute(7, new Attribute(SegmentCostTable.COLUMN_IS_ERROR, AttributeType.BOOLEAN, new CoverOperation())); - addAttribute(8, new Attribute(SegmentCostTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new NonOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - return null; - } - - @Override public RemoteData serialize(Object object) { - return null; - } - - public static class SegmentCost implements Transform { - private String id; - private int applicationId; - private String segmentId; - private String serviceName; - private Long cost; - private Long startTime; - private Long endTime; - private boolean isError; - private long timeBucket; - - public SegmentCost() { - } - - @Override public Data toData() { - SegmentCostDataDefine define = new SegmentCostDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataString(1, this.segmentId); - data.setDataString(2, this.serviceName); - data.setDataInteger(0, this.applicationId); - data.setDataLong(0, this.cost); - data.setDataLong(1, this.startTime); - data.setDataLong(2, this.endTime); - data.setDataBoolean(0, this.isError); - data.setDataLong(3, this.timeBucket); - return data; - } - - @Override public Object toSelf(Data data) { - return null; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getSegmentId() { - return segmentId; - } - - public void setSegmentId(String segmentId) { - this.segmentId = segmentId; - } - - public String getServiceName() { - return serviceName; - } - - public void setServiceName(String serviceName) { - this.serviceName = serviceName; - } - - public Long getCost() { - return cost; - } - - public void setCost(Long cost) { - this.cost = cost; - } - - public Long getStartTime() { - return startTime; - } - - public void setStartTime(Long startTime) { - this.startTime = startTime; - } - - public Long getEndTime() { - return endTime; - } - - public void setEndTime(Long endTime) { - this.endTime = endTime; - } - - public boolean isError() { - return isError; - } - - public void setError(boolean error) { - isError = error; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - - public int getApplicationId() { - return applicationId; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentDataDefine.java deleted file mode 100644 index 3a85df4af..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/segment/SegmentDataDefine.java +++ /dev/null @@ -1,87 +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.storage.define.segment; - -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; - -/** - * @author peng-yongsheng - */ -public class SegmentDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 2; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(SegmentTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(SegmentTable.COLUMN_DATA_BINARY, AttributeType.BYTE, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - return null; - } - - @Override public RemoteData serialize(Object object) { - return null; - } - - public static class Segment implements Transform { - private String id; - private byte[] dataBinary; - - public Segment() { - } - - @Override public Data toData() { - SegmentDataDefine define = new SegmentDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataBytes(0, this.dataBinary); - return data; - } - - @Override public Object toSelf(Data data) { - return null; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public byte[] getDataBinary() { - return dataBinary; - } - - public void setDataBinary(byte[] dataBinary) { - this.dataBinary = dataBinary; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java deleted file mode 100644 index bc6e5d22b..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/service/ServiceEntryDataDefine.java +++ /dev/null @@ -1,162 +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.storage.define.service; - -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; - -/** - * @author peng-yongsheng - */ -public class ServiceEntryDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 6; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(ServiceEntryTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(ServiceEntryTable.COLUMN_APPLICATION_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(2, new Attribute(ServiceEntryTable.COLUMN_ENTRY_SERVICE_ID, AttributeType.INTEGER, new CoverOperation())); - addAttribute(3, new Attribute(ServiceEntryTable.COLUMN_ENTRY_SERVICE_NAME, AttributeType.STRING, new CoverOperation())); - addAttribute(4, new Attribute(ServiceEntryTable.COLUMN_REGISTER_TIME, AttributeType.LONG, new NonOperation())); - addAttribute(5, new Attribute(ServiceEntryTable.COLUMN_NEWEST_TIME, AttributeType.LONG, new CoverOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - Data data = build(remoteData.getDataStrings(0)); - data.setDataInteger(0, remoteData.getDataIntegers(0)); - data.setDataInteger(1, remoteData.getDataIntegers(1)); - data.setDataString(1, remoteData.getDataStrings(1)); - data.setDataLong(0, remoteData.getDataLongs(0)); - data.setDataLong(1, remoteData.getDataLongs(1)); - return data; - } - - @Override public RemoteData serialize(Object object) { - Data data = (Data)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(data.getDataString(0)); - builder.addDataIntegers(data.getDataInteger(0)); - builder.addDataIntegers(data.getDataInteger(1)); - builder.addDataStrings(data.getDataString(1)); - builder.addDataLongs(data.getDataLong(0)); - builder.addDataLongs(data.getDataLong(1)); - return builder.build(); - } - - public static class ServiceEntry implements Transform { - private String id; - private int applicationId; - private int entryServiceId; - private String entryServiceName; - private long registerTime; - private long newestTime; - - public ServiceEntry(String id, int applicationId, int entryServiceId, String entryServiceName, - long registerTime, - long newestTime) { - this.id = id; - this.applicationId = applicationId; - this.entryServiceId = entryServiceId; - this.entryServiceName = entryServiceName; - this.registerTime = registerTime; - this.newestTime = newestTime; - } - - public ServiceEntry() { - } - - @Override public Data toData() { - ServiceEntryDataDefine define = new ServiceEntryDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.applicationId); - data.setDataInteger(1, this.entryServiceId); - data.setDataString(1, this.entryServiceName); - data.setDataLong(0, this.registerTime); - data.setDataLong(1, this.newestTime); - return data; - } - - @Override public ServiceEntry toSelf(Data data) { - this.id = data.getDataString(0); - this.applicationId = data.getDataInteger(0); - this.entryServiceId = data.getDataInteger(1); - this.entryServiceName = data.getDataString(1); - this.registerTime = data.getDataLong(0); - this.newestTime = data.getDataLong(1); - return this; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getEntryServiceId() { - return entryServiceId; - } - - public void setEntryServiceId(int entryServiceId) { - this.entryServiceId = entryServiceId; - } - - public String getEntryServiceName() { - return entryServiceName; - } - - public void setEntryServiceName(String entryServiceName) { - this.entryServiceName = entryServiceName; - } - - public int getApplicationId() { - return applicationId; - } - - public void setApplicationId(int applicationId) { - this.applicationId = applicationId; - } - - public long getRegisterTime() { - return registerTime; - } - - public void setRegisterTime(long registerTime) { - this.registerTime = registerTime; - } - - public long getNewestTime() { - return newestTime; - } - - public void setNewestTime(long newestTime) { - this.newestTime = newestTime; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java deleted file mode 100644 index 4903fb310..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java +++ /dev/null @@ -1,277 +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.storage.define.serviceref; - -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.core.stream.Transform; -import org.skywalking.apm.collector.core.stream.operate.AddOperation; -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; - -/** - * @author peng-yongsheng - */ -public class ServiceReferenceDataDefine extends DataDefine { - - @Override protected int initialCapacity() { - return 15; - } - - @Override protected void attributeDefine() { - addAttribute(0, new Attribute(ServiceReferenceTable.COLUMN_ID, AttributeType.STRING, new NonOperation())); - addAttribute(1, new Attribute(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_ID, AttributeType.INTEGER, new NonOperation())); - addAttribute(2, new Attribute(ServiceReferenceTable.COLUMN_ENTRY_SERVICE_NAME, AttributeType.STRING, new NonOperation())); - addAttribute(3, new Attribute(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID, AttributeType.INTEGER, new NonOperation())); - addAttribute(4, new Attribute(ServiceReferenceTable.COLUMN_FRONT_SERVICE_NAME, AttributeType.STRING, new NonOperation())); - addAttribute(5, new Attribute(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID, AttributeType.INTEGER, new NonOperation())); - addAttribute(6, new Attribute(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_NAME, AttributeType.STRING, new NonOperation())); - addAttribute(7, new Attribute(ServiceReferenceTable.COLUMN_S1_LTE, AttributeType.LONG, new AddOperation())); - addAttribute(8, new Attribute(ServiceReferenceTable.COLUMN_S3_LTE, AttributeType.LONG, new AddOperation())); - addAttribute(9, new Attribute(ServiceReferenceTable.COLUMN_S5_LTE, AttributeType.LONG, new AddOperation())); - addAttribute(10, new Attribute(ServiceReferenceTable.COLUMN_S5_GT, AttributeType.LONG, new AddOperation())); - addAttribute(11, new Attribute(ServiceReferenceTable.COLUMN_SUMMARY, AttributeType.LONG, new AddOperation())); - addAttribute(12, new Attribute(ServiceReferenceTable.COLUMN_ERROR, AttributeType.LONG, new AddOperation())); - addAttribute(13, new Attribute(ServiceReferenceTable.COLUMN_COST_SUMMARY, AttributeType.LONG, new AddOperation())); - addAttribute(14, new Attribute(ServiceReferenceTable.COLUMN_TIME_BUCKET, AttributeType.LONG, new NonOperation())); - } - - @Override public Object deserialize(RemoteData remoteData) { - Data data = build(remoteData.getDataStrings(0)); - data.setDataInteger(0, remoteData.getDataIntegers(0)); - data.setDataString(1, remoteData.getDataStrings(1)); - data.setDataInteger(1, remoteData.getDataIntegers(1)); - data.setDataString(2, remoteData.getDataStrings(2)); - data.setDataInteger(2, remoteData.getDataIntegers(2)); - data.setDataString(3, remoteData.getDataStrings(3)); - data.setDataLong(0, remoteData.getDataLongs(0)); - data.setDataLong(1, remoteData.getDataLongs(1)); - data.setDataLong(2, remoteData.getDataLongs(2)); - data.setDataLong(3, remoteData.getDataLongs(3)); - data.setDataLong(4, remoteData.getDataLongs(4)); - data.setDataLong(5, remoteData.getDataLongs(5)); - data.setDataLong(6, remoteData.getDataLongs(6)); - data.setDataLong(7, remoteData.getDataLongs(7)); - return data; - } - - @Override public RemoteData serialize(Object object) { - Data data = (Data)object; - RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(data.getDataString(0)); - builder.addDataIntegers(data.getDataInteger(0)); - builder.addDataStrings(data.getDataString(1)); - builder.addDataIntegers(data.getDataInteger(1)); - builder.addDataStrings(data.getDataString(2)); - builder.addDataIntegers(data.getDataInteger(2)); - builder.addDataStrings(data.getDataString(3)); - builder.addDataLongs(data.getDataLong(0)); - builder.addDataLongs(data.getDataLong(1)); - builder.addDataLongs(data.getDataLong(2)); - builder.addDataLongs(data.getDataLong(3)); - builder.addDataLongs(data.getDataLong(4)); - builder.addDataLongs(data.getDataLong(5)); - builder.addDataLongs(data.getDataLong(6)); - builder.addDataLongs(data.getDataLong(7)); - return builder.build(); - } - - public static class ServiceReference implements Transform { - private String id; - private int entryServiceId; - private String entryServiceName; - private int frontServiceId; - private String frontServiceName; - private int behindServiceId; - private String behindServiceName; - private long s1Lte; - private long s3Lte; - private long s5Lte; - private long s5Gt; - private long summary; - private long error; - private long costSummary; - private long timeBucket; - - public ServiceReference() { - } - - @Override public Data toData() { - ServiceReferenceDataDefine define = new ServiceReferenceDataDefine(); - Data data = define.build(id); - data.setDataString(0, this.id); - data.setDataInteger(0, this.entryServiceId); - data.setDataString(1, this.entryServiceName); - data.setDataInteger(1, this.frontServiceId); - data.setDataString(2, this.frontServiceName); - data.setDataInteger(2, this.behindServiceId); - data.setDataString(3, this.behindServiceName); - data.setDataLong(0, this.s1Lte); - data.setDataLong(1, this.s3Lte); - data.setDataLong(2, this.s5Lte); - data.setDataLong(3, this.s5Gt); - data.setDataLong(4, this.summary); - data.setDataLong(5, this.error); - data.setDataLong(6, this.costSummary); - data.setDataLong(7, this.timeBucket); - return data; - } - - @Override public Object toSelf(Data data) { - this.id = data.getDataString(0); - this.entryServiceId = data.getDataInteger(0); - this.entryServiceName = data.getDataString(1); - this.frontServiceId = data.getDataInteger(1); - this.frontServiceName = data.getDataString(2); - this.behindServiceId = data.getDataInteger(2); - this.behindServiceName = data.getDataString(3); - this.s1Lte = data.getDataLong(0); - this.s3Lte = data.getDataLong(1); - this.s5Lte = data.getDataLong(2); - this.s5Gt = data.getDataLong(3); - this.summary = data.getDataLong(4); - this.error = data.getDataLong(5); - this.costSummary = data.getDataLong(6); - this.timeBucket = data.getDataLong(7); - return this; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public int getEntryServiceId() { - return entryServiceId; - } - - public void setEntryServiceId(int entryServiceId) { - this.entryServiceId = entryServiceId; - } - - public String getEntryServiceName() { - return entryServiceName; - } - - public void setEntryServiceName(String entryServiceName) { - this.entryServiceName = entryServiceName; - } - - public int getFrontServiceId() { - return frontServiceId; - } - - public void setFrontServiceId(int frontServiceId) { - this.frontServiceId = frontServiceId; - } - - public String getFrontServiceName() { - return frontServiceName; - } - - public void setFrontServiceName(String frontServiceName) { - this.frontServiceName = frontServiceName; - } - - public int getBehindServiceId() { - return behindServiceId; - } - - public void setBehindServiceId(int behindServiceId) { - this.behindServiceId = behindServiceId; - } - - public String getBehindServiceName() { - return behindServiceName; - } - - public void setBehindServiceName(String behindServiceName) { - this.behindServiceName = behindServiceName; - } - - public long getS1Lte() { - return s1Lte; - } - - public void setS1Lte(long s1Lte) { - this.s1Lte = s1Lte; - } - - public long getS3Lte() { - return s3Lte; - } - - public void setS3Lte(long s3Lte) { - this.s3Lte = s3Lte; - } - - public long getS5Lte() { - return s5Lte; - } - - public void setS5Lte(long s5Lte) { - this.s5Lte = s5Lte; - } - - public long getS5Gt() { - return s5Gt; - } - - public void setS5Gt(long s5Gt) { - this.s5Gt = s5Gt; - } - - public long getSummary() { - return summary; - } - - public void setSummary(long summary) { - this.summary = summary; - } - - public long getError() { - return error; - } - - public void setError(long error) { - this.error = error; - } - - public long getCostSummary() { - return costSummary; - } - - public void setCostSummary(long costSummary) { - this.costSummary = costSummary; - } - - public long getTimeBucket() { - return timeBucket; - } - - public void setTimeBucket(long timeBucket) { - this.timeBucket = timeBucket; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/ElasticSearchStorageException.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/ElasticSearchStorageException.java deleted file mode 100644 index ca926492e..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/ElasticSearchStorageException.java +++ /dev/null @@ -1,34 +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.storage.elasticsearch; - -import org.skywalking.apm.collector.core.storage.StorageException; - -/** - * @author peng-yongsheng - */ -public class ElasticSearchStorageException extends StorageException { - public ElasticSearchStorageException(String message) { - super(message); - } - - public ElasticSearchStorageException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchConfig.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchConfig.java deleted file mode 100644 index 9b41cadbf..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchConfig.java +++ /dev/null @@ -1,30 +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.storage.elasticsearch; - -/** - * @author peng-yongsheng - */ -public class StorageElasticSearchConfig { - public static String CLUSTER_NAME; - public static Boolean CLUSTER_TRANSPORT_SNIFFER; - public static String CLUSTER_NODES; - public static Integer INDEX_SHARDS_NUMBER; - public static Integer INDEX_REPLICAS_NUMBER; -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchConfigParser.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchConfigParser.java deleted file mode 100644 index d33a2ae9c..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchConfigParser.java +++ /dev/null @@ -1,59 +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.storage.elasticsearch; - -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 StorageElasticSearchConfigParser implements ModuleConfigParser { - - private static final String CLUSTER_NAME = "cluster_name"; - private static final String CLUSTER_TRANSPORT_SNIFFER = "cluster_transport_sniffer"; - private static final String CLUSTER_NODES = "cluster_nodes"; - private static final String INDEX_SHARDS_NUMBER = "index_shards_number"; - private static final String INDEX_REPLICAS_NUMBER = "index_replicas_number"; - - @Override public void parse(Map config) throws ConfigParseException { - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CLUSTER_NAME))) { - StorageElasticSearchConfig.CLUSTER_NAME = (String)config.get(CLUSTER_NAME); - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CLUSTER_TRANSPORT_SNIFFER))) { - StorageElasticSearchConfig.CLUSTER_TRANSPORT_SNIFFER = (Boolean)config.get(CLUSTER_TRANSPORT_SNIFFER); - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CLUSTER_NODES))) { - StorageElasticSearchConfig.CLUSTER_NODES = (String)config.get(CLUSTER_NODES); - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(INDEX_SHARDS_NUMBER))) { - StorageElasticSearchConfig.INDEX_SHARDS_NUMBER = (Integer)config.get(INDEX_SHARDS_NUMBER); - } else { - StorageElasticSearchConfig.INDEX_SHARDS_NUMBER = 2; - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(INDEX_REPLICAS_NUMBER))) { - StorageElasticSearchConfig.INDEX_REPLICAS_NUMBER = (Integer)config.get(INDEX_REPLICAS_NUMBER); - } else { - StorageElasticSearchConfig.INDEX_REPLICAS_NUMBER = 0; - } - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java deleted file mode 100644 index 8ad1ed04f..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.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.storage.elasticsearch; - -import java.util.List; -import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; -import org.skywalking.apm.collector.core.storage.StorageInstaller; -import org.skywalking.apm.collector.storage.StorageModuleDefine; -import org.skywalking.apm.collector.storage.StorageModuleGroupDefine; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAODefineLoader; -import org.skywalking.apm.collector.storage.elasticsearch.define.ElasticSearchStorageInstaller; - -/** - * @author peng-yongsheng - */ -public class StorageElasticSearchModuleDefine extends StorageModuleDefine { - - public static final String MODULE_NAME = "elasticsearch"; - - @Override protected String group() { - return StorageModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return MODULE_NAME; - } - - @Override public final boolean defaultModule() { - return false; - } - - @Override protected ModuleConfigParser configParser() { - return new StorageElasticSearchConfigParser(); - } - - @Override protected Client createClient() { - return new ElasticSearchClient(StorageElasticSearchConfig.CLUSTER_NAME, StorageElasticSearchConfig.CLUSTER_TRANSPORT_SNIFFER, StorageElasticSearchConfig.CLUSTER_NODES); - } - - @Override public StorageInstaller storageInstaller() { - return new ElasticSearchStorageInstaller(); - } - - @Override public void injectClientIntoDAO(Client client) throws DefineException { - EsDAODefineLoader loader = new EsDAODefineLoader(); - List esDAOs = loader.load(); - esDAOs.forEach(esDAO -> { - esDAO.setClient((ElasticSearchClient)client); - String interFaceName = esDAO.getClass().getInterfaces()[0].getName(); - DAOContainer.INSTANCE.put(interFaceName, esDAO); - }); - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAODefineLoader.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAODefineLoader.java deleted file mode 100644 index ef8712cf8..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAODefineLoader.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.storage.elasticsearch.dao; - -import java.util.ArrayList; -import java.util.List; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class EsDAODefineLoader implements Loader> { - - private final Logger logger = LoggerFactory.getLogger(EsDAODefineLoader.class); - - @Override public List load() throws DefineException { - List esDAOs = new ArrayList<>(); - - EsDAODefinitionFile definitionFile = new EsDAODefinitionFile(); - logger.info("elasticsearch dao definition file name: {}", definitionFile.fileName()); - DefinitionLoader definitionLoader = DefinitionLoader.load(EsDAO.class, definitionFile); - for (EsDAO dao : definitionLoader) { - logger.info("loaded elasticsearch dao definition class: {}", dao.getClass().getName()); - esDAOs.add(dao); - } - return esDAOs; - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAODefinitionFile.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAODefinitionFile.java deleted file mode 100644 index cf6b088c5..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/dao/EsDAODefinitionFile.java +++ /dev/null @@ -1,31 +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.storage.elasticsearch.dao; - -import org.skywalking.apm.collector.core.framework.DefinitionFile; - -/** - * @author peng-yongsheng - */ -public class EsDAODefinitionFile extends DefinitionFile { - - @Override protected String fileName() { - return "es_dao.define"; - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.java deleted file mode 100644 index a467b9cf4..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2Config.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.storage.h2; - -/** - * @author clevertension - */ -public class StorageH2Config { - public static String URL; - public static String USER_NAME; - public static String PASSWORD; -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.java deleted file mode 100644 index c9685430e..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ConfigParser.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.storage.h2; - -import java.util.Map; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.config.SystemConfig; -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 StorageH2ConfigParser implements ModuleConfigParser { - private static final String URL = "url"; - public static final String USER_NAME = "user_name"; - public static final String PASSWORD = "password"; - - @Override public void parse(Map config) throws ConfigParseException { - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(URL))) { - StorageH2Config.URL = (String)config.get(URL); - } else { - StorageH2Config.URL = "jdbc:h2:" + SystemConfig.DATA_PATH + "/h2"; - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(USER_NAME))) { - StorageH2Config.USER_NAME = (String)config.get(USER_NAME); - } else { - StorageH2Config.USER_NAME = "sa"; - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(PASSWORD))) { - StorageH2Config.PASSWORD = (String)config.get(PASSWORD); - } - } -} \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java deleted file mode 100644 index ee1ddbf4e..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.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.storage.h2; - -import java.util.List; -import org.skywalking.apm.collector.client.h2.H2Client; -import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; -import org.skywalking.apm.collector.core.storage.StorageInstaller; -import org.skywalking.apm.collector.storage.StorageModuleDefine; -import org.skywalking.apm.collector.storage.StorageModuleGroupDefine; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.h2.dao.H2DAO; -import org.skywalking.apm.collector.storage.h2.dao.H2DAODefineLoader; -import org.skywalking.apm.collector.storage.h2.define.H2StorageInstaller; - -/** - * @author peng-yongsheng - */ -public class StorageH2ModuleDefine extends StorageModuleDefine { - - public static final String MODULE_NAME = "h2"; - - @Override protected String group() { - return StorageModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return MODULE_NAME; - } - - @Override public final boolean defaultModule() { - return true; - } - - @Override protected ModuleConfigParser configParser() { - return new StorageH2ConfigParser(); - } - - @Override protected Client createClient() { - return new H2Client(StorageH2Config.URL, StorageH2Config.USER_NAME, StorageH2Config.PASSWORD); - } - - @Override public StorageInstaller storageInstaller() { - return new H2StorageInstaller(); - } - - @Override public void injectClientIntoDAO(Client client) throws DefineException { - H2DAODefineLoader loader = new H2DAODefineLoader(); - List h2DAOs = loader.load(); - h2DAOs.forEach(h2DAO -> { - h2DAO.setClient((H2Client)client); - String interFaceName = h2DAO.getClass().getInterfaces()[0].getName(); - DAOContainer.INSTANCE.put(interFaceName, h2DAO); - }); - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAODefineLoader.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAODefineLoader.java deleted file mode 100644 index 607e30788..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAODefineLoader.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.storage.h2.dao; - -import java.util.ArrayList; -import java.util.List; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class H2DAODefineLoader implements Loader> { - - private final Logger logger = LoggerFactory.getLogger(H2DAODefineLoader.class); - - @Override public List load() throws DefineException { - List h2DAOs = new ArrayList<>(); - - H2DAODefinitionFile definitionFile = new H2DAODefinitionFile(); - logger.info("h2 dao definition file name: {}", definitionFile.fileName()); - DefinitionLoader definitionLoader = DefinitionLoader.load(H2DAO.class, definitionFile); - for (H2DAO dao : definitionLoader) { - logger.info("loaded h2 dao definition class: {}", dao.getClass().getName()); - h2DAOs.add(dao); - } - return h2DAOs; - } -} diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAODefinitionFile.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAODefinitionFile.java deleted file mode 100644 index e44b87366..000000000 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/dao/H2DAODefinitionFile.java +++ /dev/null @@ -1,31 +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.storage.h2.dao; - -import org.skywalking.apm.collector.core.framework.DefinitionFile; - -/** - * @author peng-yongsheng - */ -public class H2DAODefinitionFile extends DefinitionFile { - - @Override protected String fileName() { - return "h2_dao.define"; - } -} diff --git a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/es_dao.define deleted file mode 100644 index 1fcbc9a03..000000000 --- a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/es_dao.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.storage.elasticsearch.dao.BatchEsDAO \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/group.define deleted file mode 100644 index 8627ade6b..000000000 --- a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/group.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.storage.StorageModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/h2_dao.define deleted file mode 100644 index de143481d..000000000 --- a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/h2_dao.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.storage.h2.dao.BatchH2DAO \ No newline at end of file diff --git a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/module.define deleted file mode 100644 index a5844ab39..000000000 --- a/apm-collector/apm-collector-storage/src/main/resources/META-INF/defines/module.define +++ /dev/null @@ -1,2 +0,0 @@ -org.skywalking.apm.collector.storage.elasticsearch.StorageElasticSearchModuleDefine -org.skywalking.apm.collector.storage.h2.StorageH2ModuleDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/collector-stream-define/pom.xml b/apm-collector/apm-collector-stream/collector-stream-define/pom.xml new file mode 100644 index 000000000..c39ff0609 --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-define/pom.xml @@ -0,0 +1,32 @@ + + + + + + apm-collector-stream + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-stream-define + jar + \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleException.java b/apm-collector/apm-collector-stream/collector-stream-define/src/main/java/org/skywalking/apm/collector/stream/StreamModule.java similarity index 72% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleException.java rename to apm-collector/apm-collector-stream/collector-stream-define/src/main/java/org/skywalking/apm/collector/stream/StreamModule.java index bef4d026f..29ae5467c 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleException.java +++ b/apm-collector/apm-collector-stream/collector-stream-define/src/main/java/org/skywalking/apm/collector/stream/StreamModule.java @@ -18,18 +18,20 @@ package org.skywalking.apm.collector.stream; -import org.skywalking.apm.collector.core.module.ModuleException; +import org.skywalking.apm.collector.core.module.Module; /** * @author peng-yongsheng */ -public class StreamModuleException extends ModuleException { +public class StreamModule extends Module { - public StreamModuleException(String message) { - super(message); + public static final String NAME = "stream"; + + @Override public String name() { + return NAME; } - public StreamModuleException(String message, Throwable cause) { - super(message, cause); + @Override public Class[] services() { + return new Class[0]; } } diff --git a/apm-collector/apm-collector-stream/collector-stream-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-stream/collector-stream-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..468c08d65 --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-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.stream.StreamModule \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/collector-stream-provider/pom.xml b/apm-collector/apm-collector-stream/collector-stream-provider/pom.xml new file mode 100644 index 000000000..7d20572e8 --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + apm-collector-stream + org.skywalking + 3.2.4-2017 + + 4.0.0 + + collector-stream-provider + jar + + + + org.skywalking + collector-stream-define + ${project.version} + + + diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/StreamModuleProvider.java similarity index 51% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/StreamModuleProvider.java index df5dccac7..0e73dc8d2 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/StreamModuleProvider.java @@ -18,36 +18,35 @@ package org.skywalking.apm.collector.stream; -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; +import java.util.Properties; +import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.core.module.ModuleProvider; +import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; /** * @author peng-yongsheng */ -public class StreamModuleGroupDefine implements ModuleGroupDefine { - - public static final String GROUP_NAME = "collector_inside"; - private final StreamModuleInstaller installer; - - public StreamModuleGroupDefine() { - installer = new StreamModuleInstaller(); - } +public class StreamModuleProvider extends ModuleProvider { @Override public String name() { - return GROUP_NAME; + return "worker"; } - @Override public Context groupContext() { - return new StreamModuleContext(GROUP_NAME); + @Override public Class module() { + return StreamModule.class; } - @Override public ModuleInstaller moduleInstaller() { - return installer; + @Override public void prepare(Properties config) throws ServiceNotProvidedException { } - @Override public GroupConfigParser groupConfigParser() { - return null; + @Override public void start(Properties config) throws ServiceNotProvidedException { + } + + @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { + + } + + @Override public String[] requiredModules() { + return new String[] {}; } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/timer/PersistenceTimer.java similarity index 64% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/timer/PersistenceTimer.java index 88f668ad1..770effb76 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/worker/storage/PersistenceTimer.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/timer/PersistenceTimer.java @@ -16,55 +16,52 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.worker.storage; +package org.skywalking.apm.collector.stream.timer; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import org.skywalking.apm.collector.core.framework.Starter; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.dao.IBatchDAO; -import org.skywalking.apm.collector.stream.worker.WorkerException; -import org.skywalking.apm.collector.stream.worker.impl.FlushAndSwitch; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; +import org.skywalking.apm.collector.stream.worker.base.WorkerException; import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker; -import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorkerContainer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public class PersistenceTimer implements Starter { +public class PersistenceTimer { private final Logger logger = LoggerFactory.getLogger(PersistenceTimer.class); - public void start() { + public void start(ModuleManager moduleManager, List persistenceWorkers) { logger.info("persistence timer start"); //TODO timer value config // final long timeInterval = EsConfig.Es.Persistence.Timer.VALUE * 1000; final long timeInterval = 3; - Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> extractDataAndSave(), 1, timeInterval, TimeUnit.SECONDS); + IBatchDAO batchDAO = moduleManager.find(StorageModule.NAME).getService(IBatchDAO.class); + Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> extractDataAndSave(batchDAO, persistenceWorkers), 1, timeInterval, TimeUnit.SECONDS); } - private void extractDataAndSave() { + private void extractDataAndSave(IBatchDAO batchDAO, List persistenceWorkers) { try { - List workers = PersistenceWorkerContainer.INSTANCE.getPersistenceWorkers(); List batchAllCollection = new ArrayList<>(); - workers.forEach((PersistenceWorker worker) -> { - logger.debug("extract {} worker data and save", worker.getRole().roleName()); + persistenceWorkers.forEach((PersistenceWorker worker) -> { + logger.debug("extract {} worker data and save", worker.getClass().getName()); try { - worker.allocateJob(new FlushAndSwitch()); + worker.flushAndSwitch(); List batchCollection = worker.buildBatchCollection(); - logger.debug("extract {} worker data size: {}", worker.getRole().roleName(), batchCollection.size()); + logger.debug("extract {} worker data size: {}", worker.getClass().getName(), batchCollection.size()); batchAllCollection.addAll(batchCollection); } catch (WorkerException e) { logger.error(e.getMessage(), e); } }); - IBatchDAO dao = (IBatchDAO)DAOContainer.INSTANCE.get(IBatchDAO.class.getName()); - dao.batchPersistence(batchAllCollection); + batchDAO.batchPersistence(batchAllCollection); } catch (Throwable e) { logger.error(e.getMessage(), e); } finally { diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractLocalAsyncWorker.java similarity index 61% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractLocalAsyncWorker.java index aa90354dd..e1a6785d7 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/config/SystemConfigParser.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractLocalAsyncWorker.java @@ -16,21 +16,20 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.core.config; +package org.skywalking.apm.collector.stream.worker.base; -import org.skywalking.apm.collector.core.util.StringUtils; +import org.skywalking.apm.collector.core.module.ModuleManager; /** + * The AbstractLocalAsyncWorker implementations represent workers, + * which receive local asynchronous message. + * * @author peng-yongsheng + * @since v3.0-2017 */ -public enum SystemConfigParser { - INSTANCE; +public abstract class AbstractLocalAsyncWorker extends AbstractWorker { - private static final String DATA_PATH = "data.path"; - - public void parse() { - if (!StringUtils.isEmpty(System.getProperty(DATA_PATH))) { - SystemConfig.DATA_PATH = System.getProperty(DATA_PATH); - } + public AbstractLocalAsyncWorker(ModuleManager moduleManager) { + super(moduleManager); } } diff --git a/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractLocalAsyncWorkerProvider.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractLocalAsyncWorkerProvider.java new file mode 100644 index 000000000..c8444aecf --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractLocalAsyncWorkerProvider.java @@ -0,0 +1,50 @@ +/* + * 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.stream.worker.base; + +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.service.QueueCreatorService; + +/** + * @author peng-yongsheng + */ +public abstract class AbstractLocalAsyncWorkerProvider> extends AbstractWorkerProvider { + + public abstract int queueSize(); + + private final QueueCreatorService queueCreatorService; + + public AbstractLocalAsyncWorkerProvider(ModuleManager moduleManager, + QueueCreatorService queueCreatorService) { + super(moduleManager); + this.queueCreatorService = queueCreatorService; + } + + @Override + public final WorkerRef create(WorkerCreateListener workerCreateListener) { + WORKER_TYPE localAsyncWorker = workerInstance(getModuleManager()); + workerCreateListener.addWorker(localAsyncWorker); + + LocalAsyncWorkerRef localAsyncWorkerRef = new LocalAsyncWorkerRef<>(localAsyncWorker); + QueueEventHandler queueEventHandler = queueCreatorService.create(queueSize(), localAsyncWorkerRef); + localAsyncWorkerRef.setQueueEventHandler(queueEventHandler); + return localAsyncWorkerRef; + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractRemoteWorker.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractRemoteWorker.java similarity index 56% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractRemoteWorker.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractRemoteWorker.java index 2bf7936c2..4718a3c29 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractRemoteWorker.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractRemoteWorker.java @@ -16,7 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.remote.service.Selector; /** * The AbstractRemoteWorker implementations represent workers, @@ -27,40 +31,24 @@ package org.skywalking.apm.collector.stream.worker; * @author peng-yongsheng * @since v3.0-2017 */ -public abstract class AbstractRemoteWorker extends AbstractWorker { +public abstract class AbstractRemoteWorker extends AbstractWorker { - private RemoteWorkerRef workerRef; - - /** - * Construct an AbstractRemoteWorker with the worker role and context. - * - * @param role If multi-workers are for load balance, they should be more likely called worker instance. Meaning, - * each worker have multi instances. - * @param clusterContext See {@link ClusterWorkerContext} - */ - protected AbstractRemoteWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); + public AbstractRemoteWorker(ModuleManager moduleManager) { + super(moduleManager); } + public abstract Selector selector(); + /** * This method use for message producer to call for send message. * * @param message The persistence data or metric data. - * @throws Exception The Exception happen in {@link #onWork(Object)} + * @throws Exception The Exception happen in {@link #onWork(Object)} )} */ - final public void allocateJob(Object message) throws WorkerInvokeException { + public final void allocateJob(INPUT message) { try { onWork(message); } catch (WorkerException e) { - throw new WorkerInvokeException(e.getMessage(), e.getCause()); } } - - @Override protected final RemoteWorkerRef getSelf() { - return workerRef; - } - - @Override protected final void putSelfRef(RemoteWorkerRef workerRef) { - this.workerRef = workerRef; - } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractRemoteWorkerProvider.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractRemoteWorkerProvider.java similarity index 55% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractRemoteWorkerProvider.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractRemoteWorkerProvider.java index 877d280b0..ddb06ef47 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractRemoteWorkerProvider.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractRemoteWorkerProvider.java @@ -16,9 +16,11 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; -import org.skywalking.apm.collector.client.grpc.GRPCClient; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.remote.service.RemoteSenderService; /** * The AbstractRemoteWorkerProvider implementations represent providers, @@ -28,7 +30,17 @@ import org.skywalking.apm.collector.client.grpc.GRPCClient; * @author peng-yongsheng * @since v3.0-2017 */ -public abstract class AbstractRemoteWorkerProvider extends AbstractWorkerProvider { +public abstract class AbstractRemoteWorkerProvider> extends AbstractWorkerProvider { + + private final RemoteSenderService remoteSenderService; + private final int graphId; + + public AbstractRemoteWorkerProvider(ModuleManager moduleManager, RemoteSenderService remoteSenderService, + int graphId) { + super(moduleManager); + this.remoteSenderService = remoteSenderService; + this.graphId = graphId; + } /** * Create the worker instance into akka system, the akka system will control the cluster worker life cycle. @@ -37,16 +49,9 @@ public abstract class AbstractRemoteWorkerProvider(remoteWorker, remoteSenderService, graphId); } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractWorker.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractWorker.java similarity index 57% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractWorker.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractWorker.java index 4f142af22..48539dcc4 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractWorker.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractWorker.java @@ -16,55 +16,51 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; -import org.skywalking.apm.collector.core.framework.Executor; +import org.skywalking.apm.collector.core.graph.Next; +import org.skywalking.apm.collector.core.graph.NodeProcessor; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public abstract class AbstractWorker implements Executor { +public abstract class AbstractWorker implements NodeProcessor { private final Logger logger = LoggerFactory.getLogger(AbstractWorker.class); - private final Role role; + private final ModuleManager moduleManager; - private final ClusterWorkerContext clusterContext; - - public AbstractWorker(Role role, ClusterWorkerContext clusterContext) { - this.role = role; - this.clusterContext = clusterContext; + public AbstractWorker(ModuleManager moduleManager) { + this.moduleManager = moduleManager; } - @Override public final void execute(Object message) { - try { - onWork(message); - } catch (WorkerException e) { - logger.error(e.getMessage(), e); - } + public final ModuleManager getModuleManager() { + return moduleManager; } + private Next next; + /** * The data process logic in this method. * * @param message Cast the message object to a expect subclass. * @throws WorkerException Don't handle the exception, throw it. */ - protected abstract void onWork(Object message) throws WorkerException; + protected abstract void onWork(INPUT message) throws WorkerException; - public abstract void preStart() throws ProviderNotFoundException; - - final public ClusterWorkerContext getClusterContext() { - return clusterContext; + @Override public final void process(INPUT input, Next next) { + this.next = next; + try { + onWork(input); + } catch (WorkerException e) { + logger.error(e.getMessage(), e); + } } - final public Role getRole() { - return role; + protected final void onNext(OUTPUT message) { + next.execute(message); } - - protected abstract S getSelf(); - - protected abstract void putSelfRef(S workerRef); } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractWorkerProvider.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractWorkerProvider.java similarity index 57% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractWorkerProvider.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractWorkerProvider.java index 7868530e6..8d4d5c66b 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractWorkerProvider.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/AbstractWorkerProvider.java @@ -16,24 +16,24 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; + +import org.skywalking.apm.collector.core.module.ModuleManager; /** * @author peng-yongsheng */ -public abstract class AbstractWorkerProvider implements Provider { +public abstract class AbstractWorkerProvider> implements Provider { - private ClusterWorkerContext clusterContext; + private final ModuleManager moduleManager; - public abstract Role role(); - - public abstract T workerInstance(ClusterWorkerContext clusterContext); - - final public void setClusterContext(ClusterWorkerContext clusterContext) { - this.clusterContext = clusterContext; + public AbstractWorkerProvider(ModuleManager moduleManager) { + this.moduleManager = moduleManager; } - final protected ClusterWorkerContext getClusterContext() { - return clusterContext; + public final ModuleManager getModuleManager() { + return moduleManager; } + + public abstract WORKER_TYPE workerInstance(ModuleManager moduleManager); } diff --git a/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/LocalAsyncWorkerRef.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/LocalAsyncWorkerRef.java new file mode 100644 index 000000000..28d1aebeb --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/LocalAsyncWorkerRef.java @@ -0,0 +1,52 @@ +/* + * 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.stream.worker.base; + +import org.skywalking.apm.collector.core.CollectorException; +import org.skywalking.apm.collector.core.graph.NodeProcessor; +import org.skywalking.apm.collector.queue.base.QueueEventHandler; +import org.skywalking.apm.collector.queue.base.QueueExecutor; + +/** + * @author peng-yongsheng + */ +public class LocalAsyncWorkerRef extends WorkerRef implements QueueExecutor { + + private QueueEventHandler queueEventHandler; + + LocalAsyncWorkerRef(NodeProcessor destinationHandler) { + super(destinationHandler); + } + + public void setQueueEventHandler(QueueEventHandler queueEventHandler) { + this.queueEventHandler = queueEventHandler; + } + + @Override public void execute(INPUT input) throws CollectorException { + out(input); + } + + @Override protected void in(INPUT input) { + queueEventHandler.tell(input); + } + + @Override protected void out(INPUT input) { + super.out(input); + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Provider.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/Provider.java similarity index 83% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Provider.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/Provider.java index c2a2fa76c..c7269f9e4 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Provider.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/Provider.java @@ -16,12 +16,12 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; /** * @author peng-yongsheng */ public interface Provider { - WorkerRef create() throws ProviderNotFoundException; + WorkerRef create(WorkerCreateListener workerCreateListener) throws ProviderNotFoundException; } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ProviderNotFoundException.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/ProviderNotFoundException.java similarity index 93% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ProviderNotFoundException.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/ProviderNotFoundException.java index d2ffb44e2..1cc271d71 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ProviderNotFoundException.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/ProviderNotFoundException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; public class ProviderNotFoundException extends Exception { public ProviderNotFoundException(String message) { diff --git a/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/RemoteWorkerRef.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/RemoteWorkerRef.java new file mode 100644 index 000000000..6e41d3217 --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/RemoteWorkerRef.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.stream.worker.base; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.remote.service.RemoteSenderService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class RemoteWorkerRef extends WorkerRef { + + private final Logger logger = LoggerFactory.getLogger(RemoteWorkerRef.class); + + private final AbstractRemoteWorker remoteWorker; + private final RemoteSenderService remoteSenderService; + private final int graphId; + + public RemoteWorkerRef(AbstractRemoteWorker remoteWorker, RemoteSenderService remoteSenderService, + int graphId) { + super(remoteWorker); + this.remoteWorker = remoteWorker; + this.remoteSenderService = remoteSenderService; + this.graphId = graphId; + } + + @Override protected void in(INPUT message) { + try { + RemoteSenderService.Mode mode = remoteSenderService.send(this.graphId, this.remoteWorker.id(), message, this.remoteWorker.selector()); + if (mode.equals(RemoteSenderService.Mode.Local)) { + out(message); + } + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } + } + + @Override protected void out(INPUT input) { + super.out(input); + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/UsedRoleNameException.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/UsedRoleNameException.java similarity index 93% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/UsedRoleNameException.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/UsedRoleNameException.java index b77d276bd..ce7842f20 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/UsedRoleNameException.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/UsedRoleNameException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; public class UsedRoleNameException extends Exception { public UsedRoleNameException(String message) { diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorkerContainer.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerCreateListener.java similarity index 64% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorkerContainer.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerCreateListener.java index 9dd5e4330..5107b10d0 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorkerContainer.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerCreateListener.java @@ -16,21 +16,27 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker.impl; +package org.skywalking.apm.collector.stream.worker.base; import java.util.ArrayList; import java.util.List; +import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker; /** * @author peng-yongsheng */ -public enum PersistenceWorkerContainer { - INSTANCE; +public class WorkerCreateListener { - private List persistenceWorkers = new ArrayList<>(); + private final List persistenceWorkers; - public void addWorker(PersistenceWorker worker) { - persistenceWorkers.add(worker); + public WorkerCreateListener() { + this.persistenceWorkers = new ArrayList<>(); + } + + public void addWorker(AbstractWorker worker) { + if (worker instanceof PersistenceWorker) { + persistenceWorkers.add((PersistenceWorker)worker); + } } public List getPersistenceWorkers() { diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerException.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerException.java similarity index 85% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerException.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerException.java index dd0de109f..5e596c6a1 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerException.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerException.java @@ -16,7 +16,9 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; + +import org.skywalking.apm.collector.core.CollectorException; /** * Defines a general exception a worker can throw when it @@ -25,7 +27,7 @@ package org.skywalking.apm.collector.stream.worker; * @author peng-yongsheng * @since v3.1-2017 */ -public class WorkerException extends Exception { +public class WorkerException extends CollectorException { public WorkerException(String message) { super(message); diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerInvokeException.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerInvokeException.java similarity index 95% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerInvokeException.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerInvokeException.java index cb43be394..5338828c4 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerInvokeException.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerInvokeException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; /** * This exception is raised when worker fails to process job during "call" or "ask" diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerNotFoundException.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerNotFoundException.java similarity index 93% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerNotFoundException.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerNotFoundException.java index 14ee398ca..b9e656aff 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerNotFoundException.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerNotFoundException.java @@ -16,7 +16,7 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.collector.stream.worker.base; public class WorkerNotFoundException extends WorkerException { public WorkerNotFoundException(String message) { diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCModuleRegistration.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerRef.java similarity index 67% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCModuleRegistration.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerRef.java index ef742a3b0..0766af55e 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCModuleRegistration.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/base/WorkerRef.java @@ -16,16 +16,16 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.grpc; +package org.skywalking.apm.collector.stream.worker.base; -import org.skywalking.apm.collector.core.module.ModuleRegistration; +import org.skywalking.apm.collector.core.graph.NodeProcessor; +import org.skywalking.apm.collector.core.graph.WayToNode; /** * @author peng-yongsheng */ -public class AgentStreamGRPCModuleRegistration extends ModuleRegistration { - - @Override public Value buildValue() { - return new Value(AgentStreamGRPCConfig.HOST, AgentStreamGRPCConfig.PORT, null); +public abstract class WorkerRef extends WayToNode { + WorkerRef(NodeProcessor destinationHandler) { + super(destinationHandler); } } diff --git a/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/AggregationWorker.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/AggregationWorker.java new file mode 100644 index 000000000..2da917796 --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/AggregationWorker.java @@ -0,0 +1,82 @@ +/* + * 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.stream.worker.impl; + +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorker; +import org.skywalking.apm.collector.stream.worker.base.WorkerException; +import org.skywalking.apm.collector.stream.worker.impl.data.DataCache; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public abstract class AggregationWorker extends AbstractLocalAsyncWorker { + + private final Logger logger = LoggerFactory.getLogger(AggregationWorker.class); + + private DataCache dataCache; + private int messageNum; + + public AggregationWorker(ModuleManager moduleManager) { + super(moduleManager); + this.dataCache = new DataCache(); + } + + @Override protected final void onWork(INPUT message) throws WorkerException { + messageNum++; + aggregate(message); + + if (messageNum >= 100) { + sendToNext(); + messageNum = 0; + } + if (message.isEndOfBatch()) { + sendToNext(); + } + } + + private void sendToNext() throws WorkerException { + dataCache.switchPointer(); + while (dataCache.getLast().isWriting()) { + try { + Thread.sleep(10); + } catch (InterruptedException e) { + throw new WorkerException(e.getMessage(), e); + } + } + dataCache.getLast().asMap().forEach((String id, Data data) -> { + logger.debug(data.toString()); + onNext((OUTPUT)data); + }); + dataCache.finishReadingLast(); + } + + private void aggregate(INPUT message) { + dataCache.writing(); + if (dataCache.containsKey(message.getId())) { + message.mergeData(dataCache.get(message.getId())); + } else { + dataCache.put(message.getId(), message); + } + dataCache.finishWriting(); + } +} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/FlushAndSwitch.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/FlushAndSwitch.java similarity index 100% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/FlushAndSwitch.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/FlushAndSwitch.java diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java similarity index 62% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java index 4c0c7ddfe..c6e8063cd 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java @@ -21,17 +21,14 @@ package org.skywalking.apm.collector.stream.worker.impl; import java.util.LinkedList; import java.util.List; import java.util.Map; -import org.skywalking.apm.collector.core.queue.EndOfBatchCommand; -import org.skywalking.apm.collector.core.stream.Data; +import org.skywalking.apm.collector.core.data.Data; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.dao.IBatchDAO; -import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker; -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.impl.dao.IPersistenceDAO; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.base.dao.IBatchDAO; +import org.skywalking.apm.collector.storage.base.dao.IPersistenceDAO; +import org.skywalking.apm.collector.stream.worker.base.AbstractLocalAsyncWorker; +import org.skywalking.apm.collector.stream.worker.base.WorkerException; import org.skywalking.apm.collector.stream.worker.impl.data.DataCache; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,47 +36,43 @@ import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ -public abstract class PersistenceWorker extends AbstractLocalAsyncWorker { +public abstract class PersistenceWorker extends AbstractLocalAsyncWorker { private final Logger logger = LoggerFactory.getLogger(PersistenceWorker.class); - private DataCache dataCache; + private final DataCache dataCache; + private final IBatchDAO batchDAO; - public PersistenceWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - dataCache = new DataCache(); + public PersistenceWorker(ModuleManager moduleManager) { + super(moduleManager); + this.dataCache = new DataCache(); + this.batchDAO = moduleManager.find(StorageModule.NAME).getService(IBatchDAO.class); } - @Override public void preStart() throws ProviderNotFoundException { - super.preStart(); + public final void flushAndSwitch() { + try { + if (dataCache.trySwitchPointer()) { + dataCache.switchPointer(); + } + } finally { + dataCache.trySwitchPointerFinally(); + } } - @Override protected final void onWork(Object message) throws WorkerException { - if (message instanceof FlushAndSwitch) { + @Override protected final void onWork(INPUT message) throws WorkerException { + if (dataCache.currentCollectionSize() >= 5000) { try { if (dataCache.trySwitchPointer()) { dataCache.switchPointer(); + + List collection = buildBatchCollection(); + batchDAO.batchPersistence(collection); } } finally { dataCache.trySwitchPointerFinally(); } - } else if (message instanceof EndOfBatchCommand) { - } else { - if (dataCache.currentCollectionSize() >= 5000) { - try { - if (dataCache.trySwitchPointer()) { - dataCache.switchPointer(); - - List collection = buildBatchCollection(); - IBatchDAO dao = (IBatchDAO)DAOContainer.INSTANCE.get(IBatchDAO.class.getName()); - dao.batchPersistence(collection); - } - } finally { - dataCache.trySwitchPointerFinally(); - } - } - aggregate(message); } + aggregate(message); } public final List buildBatchCollection() throws WorkerException { @@ -107,9 +100,9 @@ public abstract class PersistenceWorker extends AbstractLocalAsyncWorker { List updateBatchCollection = new LinkedList<>(); dataMap.forEach((id, data) -> { if (needMergeDBData()) { - Data dbData = persistenceDAO().get(id, getRole().dataDefine()); + Data dbData = persistenceDAO().get(id); if (ObjectUtils.isNotEmpty(dbData)) { - getRole().dataDefine().mergeData(data, dbData); + dbData.mergeData(data); try { updateBatchCollection.add(persistenceDAO().prepareBatchUpdate(data)); } catch (Throwable t) { @@ -137,12 +130,12 @@ public abstract class PersistenceWorker extends AbstractLocalAsyncWorker { private void aggregate(Object message) { dataCache.writing(); - Data data = (Data)message; + Data newData = (Data)message; - if (dataCache.containsKey(data.id())) { - getRole().dataDefine().mergeData(dataCache.get(data.id()), data); + if (dataCache.containsKey(newData.getId())) { + dataCache.get(newData.getId()).mergeData(newData); } else { - dataCache.put(data.id(), data); + dataCache.put(newData.getId(), newData); } dataCache.finishWriting(); diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCache.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCache.java similarity index 96% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCache.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCache.java index 05b70e26b..b8877b084 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCache.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCache.java @@ -18,7 +18,7 @@ package org.skywalking.apm.collector.stream.worker.impl.data; -import org.skywalking.apm.collector.core.stream.Data; +import org.skywalking.apm.collector.core.data.Data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCollection.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCollection.java similarity index 97% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCollection.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCollection.java index cc6b2fcb4..eff0e468c 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCollection.java +++ b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/DataCollection.java @@ -20,7 +20,7 @@ package org.skywalking.apm.collector.stream.worker.impl.data; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.skywalking.apm.collector.core.stream.Data; +import org.skywalking.apm.collector.core.data.Data; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/Window.java b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/Window.java similarity index 100% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/Window.java rename to apm-collector/apm-collector-stream/collector-stream-provider/src/main/java/org/skywalking/apm/collector/stream/worker/impl/data/Window.java diff --git a/apm-collector/apm-collector-stream/collector-stream-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-stream/collector-stream-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..ee323473e --- /dev/null +++ b/apm-collector/apm-collector-stream/collector-stream-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.stream.StreamModuleProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/pom.xml b/apm-collector/apm-collector-stream/pom.xml index c4766bd6e..c4ab405af 100644 --- a/apm-collector/apm-collector-stream/pom.xml +++ b/apm-collector/apm-collector-stream/pom.xml @@ -28,7 +28,11 @@ 4.0.0 apm-collector-stream - jar + pom + + collector-stream-define + collector-stream-provider + @@ -38,28 +42,23 @@ org.skywalking - apm-collector-cluster + collector-queue-define ${project.version} org.skywalking - apm-collector-queue + collector-storage-define ${project.version} org.skywalking - apm-collector-server + collector-remote-define ${project.version} org.skywalking - apm-collector-remote - ${project.version} - - - org.skywalking - apm-collector-storage + collector-cache-define ${project.version} - + \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleContext.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleContext.java deleted file mode 100644 index d50439a12..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleContext.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.stream; - -import java.util.HashMap; -import java.util.Map; -import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.storage.define.DataDefine; -import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext; - -/** - * @author peng-yongsheng - */ -public class StreamModuleContext extends Context { - - private Map dataDefineMap; - private ClusterWorkerContext clusterWorkerContext; - - public StreamModuleContext(String groupName) { - super(groupName); - dataDefineMap = new HashMap<>(); - } - - public void putAllDataDefine(Map dataDefineMap) { - this.dataDefineMap.putAll(dataDefineMap); - } - - public DataDefine getDataDefine(int dataDefineId) { - return this.dataDefineMap.get(dataDefineId); - } - - public ClusterWorkerContext getClusterWorkerContext() { - return clusterWorkerContext; - } - - public void setClusterWorkerContext(ClusterWorkerContext clusterWorkerContext) { - this.clusterWorkerContext = clusterWorkerContext; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java deleted file mode 100644 index b10dc57a3..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java +++ /dev/null @@ -1,86 +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.stream; - -import java.util.LinkedList; -import java.util.List; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.SingleModuleInstaller; -import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; -import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider; -import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider; -import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext; -import org.skywalking.apm.collector.stream.worker.LocalAsyncWorkerProviderDefineLoader; -import org.skywalking.apm.collector.stream.worker.ProviderNotFoundException; -import org.skywalking.apm.collector.stream.worker.RemoteWorkerProviderDefineLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class StreamModuleInstaller extends SingleModuleInstaller { - - private final Logger logger = LoggerFactory.getLogger(StreamModuleInstaller.class); - - @Override public String groupName() { - return StreamModuleGroupDefine.GROUP_NAME; - } - - @Override public Context moduleContext() { - return new StreamModuleContext(groupName()); - } - - @Override public List dependenceModules() { - List dependenceModules = new LinkedList<>(); - dependenceModules.add(QueueModuleGroupDefine.GROUP_NAME); - return dependenceModules; - } - - @Override public void onAfterInstall() throws DefineException { - initializeWorker((StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())); - } - - private void initializeWorker(StreamModuleContext context) throws DefineException { - ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(); - context.setClusterWorkerContext(clusterWorkerContext); - - LocalAsyncWorkerProviderDefineLoader localAsyncProviderLoader = new LocalAsyncWorkerProviderDefineLoader(); - RemoteWorkerProviderDefineLoader remoteProviderLoader = new RemoteWorkerProviderDefineLoader(); - try { - List localAsyncProviders = localAsyncProviderLoader.load(); - for (AbstractLocalAsyncWorkerProvider provider : localAsyncProviders) { - provider.setClusterContext(clusterWorkerContext); - provider.create(); - clusterWorkerContext.putRole(provider.role()); - } - - List remoteProviders = remoteProviderLoader.load(); - for (AbstractRemoteWorkerProvider provider : remoteProviders) { - provider.setClusterContext(clusterWorkerContext); - clusterWorkerContext.putRole(provider.role()); - clusterWorkerContext.putProvider(provider); - } - } catch (ProviderNotFoundException e) { - logger.error(e.getMessage(), e); - } - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfig.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfig.java deleted file mode 100644 index f104ea3e5..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfig.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.stream.grpc; - -/** - * @author peng-yongsheng - */ -public class StreamGRPCConfig { - public static String HOST; - public static int PORT; -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.java deleted file mode 100644 index 01e5bab3f..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCConfigParser.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.stream.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 StreamGRPCConfigParser 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))) { - StreamGRPCConfig.HOST = "localhost"; - } else { - StreamGRPCConfig.HOST = (String)config.get(HOST); - } - - if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { - StreamGRPCConfig.PORT = 11800; - } else { - StreamGRPCConfig.PORT = (Integer)config.get(PORT); - } - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java deleted file mode 100644 index e599a3b37..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java +++ /dev/null @@ -1,100 +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.stream.grpc; - -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.client.grpc.GRPCClient; -import org.skywalking.apm.collector.cluster.ClusterModuleDefine; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.cluster.ClusterDataListener; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.stream.StreamModuleContext; -import org.skywalking.apm.collector.stream.StreamModuleGroupDefine; -import org.skywalking.apm.collector.stream.worker.RemoteWorkerRef; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class StreamGRPCDataListener extends ClusterDataListener { - - private final Logger logger = LoggerFactory.getLogger(StreamGRPCDataListener.class); - - public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + StreamModuleGroupDefine.GROUP_NAME + "." + StreamGRPCModuleDefine.MODULE_NAME; - - @Override public String path() { - return PATH; - } - - private Map clients = new HashMap<>(); - private Map> remoteWorkerRefMap = new HashMap<>(); - - @Override public void serverJoinNotify(String serverAddress) { - String selfAddress = StreamGRPCConfig.HOST + ":" + StreamGRPCConfig.PORT; - StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME); - - if (!clients.containsKey(serverAddress)) { - logger.info("new address: {}, create this address remote worker reference", serverAddress); - String[] hostPort = serverAddress.split(":"); - GRPCClient client = new GRPCClient(hostPort[0], Integer.valueOf(hostPort[1])); - try { - client.initialize(); - } catch (ClientException e) { - e.printStackTrace(); - } - clients.put(serverAddress, client); - - if (selfAddress.equals(serverAddress)) { - context.getClusterWorkerContext().getProviders().forEach(provider -> { - logger.info("create remote worker self reference, role: {}", provider.role().roleName()); - provider.create(); - }); - } else { - context.getClusterWorkerContext().getProviders().forEach(provider -> { - logger.info("create remote worker reference, role: {}", provider.role().roleName()); - RemoteWorkerRef remoteWorkerRef = provider.create(client); - if (!remoteWorkerRefMap.containsKey(serverAddress)) { - remoteWorkerRefMap.put(serverAddress, new LinkedList<>()); - } - remoteWorkerRefMap.get(serverAddress).add(remoteWorkerRef); - }); - } - } else { - logger.info("address: {} had remote worker reference, ignore", serverAddress); - } - } - - @Override public void serverQuitNotify(String serverAddress) { - StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME); - - if (clients.containsKey(serverAddress)) { - clients.get(serverAddress).shutdown(); - clients.remove(serverAddress); - } - if (remoteWorkerRefMap.containsKey(serverAddress)) { - for (RemoteWorkerRef remoteWorkerRef : remoteWorkerRefMap.get(serverAddress)) { - context.getClusterWorkerContext().remove(remoteWorkerRef); - } - } - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java deleted file mode 100644 index ba89bab29..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.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.stream.grpc; - -import java.util.ArrayList; -import java.util.List; -import org.skywalking.apm.collector.core.client.Client; -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; -import org.skywalking.apm.collector.stream.StreamModuleDefine; -import org.skywalking.apm.collector.stream.StreamModuleGroupDefine; -import org.skywalking.apm.collector.stream.grpc.handler.RemoteCommonServiceHandler; - -/** - * @author peng-yongsheng - */ -public class StreamGRPCModuleDefine extends StreamModuleDefine { - - public static final String MODULE_NAME = "grpc"; - - @Override public String name() { - return MODULE_NAME; - } - - @Override protected String group() { - return StreamModuleGroupDefine.GROUP_NAME; - } - - @Override protected ModuleConfigParser configParser() { - return new StreamGRPCConfigParser(); - } - - @Override protected Client createClient() { - return null; - } - - @Override protected Server server() { - return new GRPCServer(StreamGRPCConfig.HOST, StreamGRPCConfig.PORT); - } - - @Override protected ModuleRegistration registration() { - return new StreamGRPCModuleRegistration(); - } - - @Override public ClusterDataListener listener() { - return new StreamGRPCDataListener(); - } - - @Override public List handlerList() { - List handlers = new ArrayList<>(); - handlers.add(new RemoteCommonServiceHandler()); - return handlers; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractLocalAsyncWorker.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractLocalAsyncWorker.java deleted file mode 100644 index 48c01a32d..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractLocalAsyncWorker.java +++ /dev/null @@ -1,72 +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.stream.worker; - -import org.skywalking.apm.collector.core.queue.QueueExecutor; - -/** - * The AbstractLocalAsyncWorker implementations represent workers, - * which receive local asynchronous message. - * - * @author peng-yongsheng - * @since v3.0-2017 - */ -public abstract class AbstractLocalAsyncWorker extends AbstractWorker implements QueueExecutor { - - private LocalAsyncWorkerRef workerRef; - - /** - * Construct an AbstractLocalAsyncWorker with the worker role and context. - * - * @param role The responsibility of worker in cluster, more than one workers can have same responsibility which use - * to provide load balancing ability. - * @param clusterContext See {@link ClusterWorkerContext} - */ - public AbstractLocalAsyncWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - } - - /** - * The asynchronous worker always use to persistence data into db, this is the end of the streaming, - * so usually no need to create the next worker instance at the time of this worker instance create. - * - * @throws ProviderNotFoundException When worker provider not found, it will be throw this exception. - */ - @Override - public void preStart() throws ProviderNotFoundException { - } - - @Override protected final LocalAsyncWorkerRef getSelf() { - return workerRef; - } - - @Override protected final void putSelfRef(LocalAsyncWorkerRef workerRef) { - this.workerRef = workerRef; - } - - /** - * Receive message - * - * @param message The persistence data or metric data. - * @throws WorkerException The Exception happen in {@link #onWork(Object)} - */ - final public void allocateJob(Object message) throws WorkerException { - onWork(message); - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractLocalAsyncWorkerProvider.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractLocalAsyncWorkerProvider.java deleted file mode 100644 index 6fb19621d..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/AbstractLocalAsyncWorkerProvider.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.stream.worker; - -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.queue.QueueCreator; -import org.skywalking.apm.collector.core.queue.QueueEventHandler; -import org.skywalking.apm.collector.core.queue.QueueExecutor; -import org.skywalking.apm.collector.queue.QueueModuleContext; -import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; -import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorker; -import org.skywalking.apm.collector.stream.worker.impl.PersistenceWorkerContainer; - -/** - * @author peng-yongsheng - */ -public abstract class AbstractLocalAsyncWorkerProvider extends AbstractWorkerProvider { - - public abstract int queueSize(); - - @Override final public WorkerRef create() throws ProviderNotFoundException { - T localAsyncWorker = workerInstance(getClusterContext()); - localAsyncWorker.preStart(); - - if (localAsyncWorker instanceof PersistenceWorker) { - PersistenceWorkerContainer.INSTANCE.addWorker((PersistenceWorker)localAsyncWorker); - } - - QueueCreator queueCreator = ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(QueueModuleGroupDefine.GROUP_NAME)).getQueueCreator(); - QueueEventHandler queueEventHandler = queueCreator.create(queueSize(), localAsyncWorker); - - LocalAsyncWorkerRef workerRef = new LocalAsyncWorkerRef(role(), queueEventHandler); - getClusterContext().put(workerRef); - localAsyncWorker.putSelfRef(workerRef); - return workerRef; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ClusterWorkerRefCounter.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ClusterWorkerRefCounter.java deleted file mode 100644 index 43ef9db7e..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/ClusterWorkerRefCounter.java +++ /dev/null @@ -1,40 +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.stream.worker; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * @author peng-yongsheng - */ -public enum ClusterWorkerRefCounter { - INSTANCE; - - private Map counter = new ConcurrentHashMap<>(); - - public int incrementAndGet(Role role) { - if (!counter.containsKey(role.roleName())) { - AtomicInteger atomic = new AtomicInteger(0); - counter.putIfAbsent(role.roleName(), atomic); - } - return counter.get(role.roleName()).incrementAndGet(); - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Context.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Context.java deleted file mode 100644 index ee33e549f..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/Context.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.stream.worker; - -/** - * @author peng-yongsheng - */ -public interface Context extends LookUp { - - void putProvider(AbstractRemoteWorkerProvider provider); - - WorkerRefs lookup(Role role) throws WorkerNotFoundException; - - RemoteWorkerRef lookupInSide(String roleName) throws WorkerNotFoundException; - - void put(WorkerRef workerRef); - - void remove(WorkerRef workerRef); -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalAsyncWorkerProviderDefineLoader.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalAsyncWorkerProviderDefineLoader.java deleted file mode 100644 index 4ae46ecb6..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalAsyncWorkerProviderDefineLoader.java +++ /dev/null @@ -1,49 +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.stream.worker; - -import java.util.ArrayList; -import java.util.List; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class LocalAsyncWorkerProviderDefineLoader implements Loader> { - - private final Logger logger = LoggerFactory.getLogger(LocalAsyncWorkerProviderDefineLoader.class); - - @Override public List load() throws DefineException { - List providers = new ArrayList<>(); - LocalWorkerProviderDefinitionFile definitionFile = new LocalWorkerProviderDefinitionFile(); - logger.info("local async worker provider definition file name: {}", definitionFile.fileName()); - - DefinitionLoader definitionLoader = DefinitionLoader.load(AbstractLocalAsyncWorkerProvider.class, definitionFile); - - for (AbstractLocalAsyncWorkerProvider provider : definitionLoader) { - logger.info("loaded local async worker provider definition class: {}", provider.getClass().getName()); - providers.add(provider); - } - return providers; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalWorkerProviderDefinitionFile.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalWorkerProviderDefinitionFile.java deleted file mode 100644 index 14f07f4a6..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalWorkerProviderDefinitionFile.java +++ /dev/null @@ -1,30 +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.stream.worker; - -import org.skywalking.apm.collector.core.framework.DefinitionFile; - -/** - * @author peng-yongsheng - */ -public class LocalWorkerProviderDefinitionFile extends DefinitionFile { - @Override protected String fileName() { - return "local_worker_provider.define"; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerProviderDefineLoader.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerProviderDefineLoader.java deleted file mode 100644 index 527456eac..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerProviderDefineLoader.java +++ /dev/null @@ -1,49 +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.stream.worker; - -import java.util.ArrayList; -import java.util.List; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Loader; -import org.skywalking.apm.collector.core.util.DefinitionLoader; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class RemoteWorkerProviderDefineLoader implements Loader> { - - private final Logger logger = LoggerFactory.getLogger(RemoteWorkerProviderDefineLoader.class); - - @Override public List load() throws DefineException { - List providers = new ArrayList<>(); - RemoteWorkerProviderDefinitionFile definitionFile = new RemoteWorkerProviderDefinitionFile(); - logger.info("remote worker provider definition file name: {}", definitionFile.fileName()); - - DefinitionLoader definitionLoader = DefinitionLoader.load(AbstractRemoteWorkerProvider.class, definitionFile); - - for (AbstractRemoteWorkerProvider provider : definitionLoader) { - logger.info("loaded remote worker provider definition class: {}", provider.getClass().getName()); - providers.add(provider); - } - return providers; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerProviderDefinitionFile.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerProviderDefinitionFile.java deleted file mode 100644 index 96d403ba1..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerProviderDefinitionFile.java +++ /dev/null @@ -1,30 +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.stream.worker; - -import org.skywalking.apm.collector.core.framework.DefinitionFile; - -/** - * @author peng-yongsheng - */ -public class RemoteWorkerProviderDefinitionFile extends DefinitionFile { - @Override protected String fileName() { - return "remote_worker_provider.define"; - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerContext.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerContext.java deleted file mode 100644 index ba1fd305c..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerContext.java +++ /dev/null @@ -1,91 +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.stream.worker; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public abstract class WorkerContext implements Context { - - private final Logger logger = LoggerFactory.getLogger(WorkerContext.class); - - private Map remoteWorkerRefs; - private Map> roleWorkers; - private Map roles; - - WorkerContext() { - this.roleWorkers = new HashMap<>(); - this.roles = new HashMap<>(); - this.remoteWorkerRefs = new HashMap<>(); - } - - private Map> getRoleWorkers() { - return this.roleWorkers; - } - - @Override final public WorkerRefs lookup(Role role) throws WorkerNotFoundException { - if (getRoleWorkers().containsKey(role.roleName())) { - return new WorkerRefs(getRoleWorkers().get(role.roleName()), role.workerSelector()); - } else { - throw new WorkerNotFoundException("role=" + role.roleName() + ", no available worker."); - } - } - - @Override final public RemoteWorkerRef lookupInSide(String roleName) throws WorkerNotFoundException { - if (remoteWorkerRefs.containsKey(roleName)) { - return remoteWorkerRefs.get(roleName); - } else { - throw new WorkerNotFoundException("role=" + roleName + ", no available worker."); - } - } - - public final void putRole(Role role) { - roles.put(role.roleName(), role); - } - - public final Role getRole(String roleName) { - return roles.get(roleName); - } - - @Override final public void put(WorkerRef workerRef) { - logger.debug("put worker reference into context, role name: {}", workerRef.getRole().roleName()); - if (!getRoleWorkers().containsKey(workerRef.getRole().roleName())) { - getRoleWorkers().putIfAbsent(workerRef.getRole().roleName(), new ArrayList<>()); - } - getRoleWorkers().get(workerRef.getRole().roleName()).add(workerRef); - - if (workerRef instanceof RemoteWorkerRef) { - RemoteWorkerRef remoteWorkerRef = (RemoteWorkerRef)workerRef; - if (!remoteWorkerRef.isAcrossJVM()) { - remoteWorkerRefs.put(workerRef.getRole().roleName(), remoteWorkerRef); - } - } - } - - @Override final public void remove(WorkerRef workerRef) { - getRoleWorkers().remove(workerRef.getRole().roleName()); - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java deleted file mode 100644 index 0f35a230d..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.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.stream.worker; - -import java.util.List; -import org.skywalking.apm.collector.stream.worker.selector.WorkerSelector; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class WorkerRefs { - - private final Logger logger = LoggerFactory.getLogger(WorkerRefs.class); - - private List workerRefs; - private WorkerSelector workerSelector; - private Role role; - - protected WorkerRefs(List workerRefs, WorkerSelector workerSelector) { - this.workerRefs = workerRefs; - this.workerSelector = workerSelector; - } - - protected WorkerRefs(List workerRefs, WorkerSelector workerSelector, Role role) { - this.workerRefs = workerRefs; - this.workerSelector = workerSelector; - this.role = role; - } - - public void tell(Object message) throws WorkerInvokeException { - logger.debug("WorkerSelector instance of {}", workerSelector.getClass()); - workerRefs.forEach(workerRef -> { - if (workerRef instanceof RemoteWorkerRef) { - logger.debug("message hashcode: {}, select workers: {}", message.hashCode(), workerRef.toString()); - } - }); - workerSelector.select(workerRefs, message).tell(message); - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/AggregationWorker.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/AggregationWorker.java deleted file mode 100644 index 21c480f10..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/AggregationWorker.java +++ /dev/null @@ -1,100 +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.stream.worker.impl; - -import org.skywalking.apm.collector.core.queue.EndOfBatchCommand; -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorker; -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.WorkerInvokeException; -import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException; -import org.skywalking.apm.collector.stream.worker.WorkerRefs; -import org.skywalking.apm.collector.stream.worker.impl.data.DataCache; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public abstract class AggregationWorker extends AbstractLocalAsyncWorker { - - private final Logger logger = LoggerFactory.getLogger(AggregationWorker.class); - - private DataCache dataCache; - private int messageNum; - - public AggregationWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - dataCache = new DataCache(); - } - - @Override public void preStart() throws ProviderNotFoundException { - super.preStart(); - } - - @Override protected final void onWork(Object message) throws WorkerException { - if (message instanceof EndOfBatchCommand) { - sendToNext(); - } else { - messageNum++; - aggregate(message); - - if (messageNum >= 100) { - sendToNext(); - messageNum = 0; - } - } - } - - protected abstract WorkerRefs nextWorkRef(String id) throws WorkerNotFoundException; - - private void sendToNext() throws WorkerException { - dataCache.switchPointer(); - while (dataCache.getLast().isWriting()) { - try { - Thread.sleep(10); - } catch (InterruptedException e) { - throw new WorkerException(e.getMessage(), e); - } - } - dataCache.getLast().asMap().forEach((id, data) -> { - try { - logger.debug(data.toString()); - nextWorkRef(id).tell(data); - } catch (WorkerNotFoundException | WorkerInvokeException e) { - logger.error(e.getMessage(), e); - } - }); - dataCache.finishReadingLast(); - } - - protected final void aggregate(Object message) { - Data data = (Data)message; - dataCache.writing(); - if (dataCache.containsKey(data.id())) { - getRole().dataDefine().mergeData(dataCache.get(data.id()), data); - } else { - dataCache.put(data.id(), data); - } - dataCache.finishWriting(); - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/GRPCRemoteWorker.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/GRPCRemoteWorker.java deleted file mode 100644 index d87e15d6a..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/GRPCRemoteWorker.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.stream.worker.impl; - -import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorker; -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; - -/** - * @author peng-yongsheng - */ -public class GRPCRemoteWorker extends AbstractRemoteWorker { - - protected GRPCRemoteWorker(Role role, ClusterWorkerContext clusterContext) { - super(role, clusterContext); - } - - @Override public void preStart() throws ProviderNotFoundException { - - } - - @Override protected final void onWork(Object message) throws WorkerException { - - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/dao/IPersistenceDAO.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/dao/IPersistenceDAO.java deleted file mode 100644 index 8818ed410..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/dao/IPersistenceDAO.java +++ /dev/null @@ -1,33 +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.stream.worker.impl.dao; - -import org.skywalking.apm.collector.core.stream.Data; -import org.skywalking.apm.collector.storage.define.DataDefine; - -/** - * @author peng-yongsheng - */ -public interface IPersistenceDAO { - Data get(String id, DataDefine dataDefine); - - I prepareBatchInsert(Data data); - - U prepareBatchUpdate(Data data); -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/HashCodeSelector.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/HashCodeSelector.java deleted file mode 100644 index 6231b7be2..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/HashCodeSelector.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.stream.worker.selector; - -import java.util.List; -import org.skywalking.apm.collector.core.stream.AbstractHashMessage; -import org.skywalking.apm.collector.stream.worker.AbstractWorker; -import org.skywalking.apm.collector.stream.worker.WorkerRef; - -/** - * The HashCodeSelector is a simple implementation of {@link WorkerSelector}. It choose {@link WorkerRef} - * by message {@link AbstractHashMessage} key's hashcode, so it can use to send the same hashcode message to same {@link - * WorkerRef}. Usually, use to database operate which avoid dirty data. - * - * @author peng-yongsheng - * @since v3.0-2017 - */ -public class HashCodeSelector implements WorkerSelector { - - /** - * Use message hashcode to select {@link WorkerRef}. - * - * @param members given {@link WorkerRef} list, which size is greater than 0; - * @param message the {@link AbstractWorker} is going to send. - * @return the selected {@link WorkerRef} - */ - @Override - public WorkerRef select(List members, Object message) { - if (message instanceof AbstractHashMessage) { - AbstractHashMessage hashMessage = (AbstractHashMessage)message; - int size = members.size(); - int selectIndex = Math.abs(hashMessage.getHashCode()) % size; - return members.get(selectIndex); - } else { - throw new IllegalArgumentException("the message send into HashCodeSelector must implementation of AbstractHashMessage, the message object class is: " + message.getClass().getName()); - } - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/RollingSelector.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/RollingSelector.java deleted file mode 100644 index d13036caf..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/RollingSelector.java +++ /dev/null @@ -1,50 +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.stream.worker.selector; - -import java.util.List; -import org.skywalking.apm.collector.stream.worker.AbstractWorker; -import org.skywalking.apm.collector.stream.worker.WorkerRef; - -/** - * The RollingSelector is a simple implementation of {@link WorkerSelector}. - * It choose {@link WorkerRef} nearly random, by round-robin. - * - * @author peng-yongsheng - * @since v3.0-2017 - */ -public class RollingSelector implements WorkerSelector { - - private int index = 0; - - /** - * Use round-robin to select {@link WorkerRef}. - * - * @param members given {@link WorkerRef} list, which size is greater than 0; - * @param message message the {@link AbstractWorker} is going to send. - * @return the selected {@link WorkerRef} - */ - @Override - public WorkerRef select(List members, Object message) { - int size = members.size(); - index++; - int selectIndex = Math.abs(index) % size; - return members.get(selectIndex); - } -} diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/WorkerSelector.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/WorkerSelector.java deleted file mode 100644 index d8d8389ad..000000000 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/selector/WorkerSelector.java +++ /dev/null @@ -1,44 +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.stream.worker.selector; - -import java.util.List; -import org.skywalking.apm.collector.stream.worker.AbstractWorker; -import org.skywalking.apm.collector.stream.worker.WorkerRef; - -/** - * The WorkerSelector should be implemented by any class whose instances - * are intended to provide select a {@link WorkerRef} from a {@link WorkerRef} list. - *

- * Actually, the WorkerRef is designed to provide a routing ability in the collector cluster - * - * @author peng-yongsheng - * @since v3.0-2017 - */ -public interface WorkerSelector { - - /** - * select a {@link WorkerRef} from a {@link WorkerRef} list. - * - * @param members given {@link WorkerRef} list, which size is greater than 0; - * @param message the {@link AbstractWorker} is going to send. - * @return the selected {@link WorkerRef} - */ - T select(List members, Object message); -} diff --git a/apm-collector/apm-collector-stream/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-stream/src/main/resources/META-INF/defines/group.define deleted file mode 100644 index dfcb24058..000000000 --- a/apm-collector/apm-collector-stream/src/main/resources/META-INF/defines/group.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.stream.StreamModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-stream/src/main/resources/META-INF/defines/module.define deleted file mode 100644 index b58f3f133..000000000 --- a/apm-collector/apm-collector-stream/src/main/resources/META-INF/defines/module.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.stream.grpc.StreamGRPCModuleDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-stream/src/test/java/org/skywalking/apm/collector/stream/worker/util/TimeBucketUtilsTestCase.java b/apm-collector/apm-collector-stream/src/test/java/org/skywalking/apm/collector/stream/worker/util/TimeBucketUtilsTestCase.java deleted file mode 100644 index 0e1075d33..000000000 --- a/apm-collector/apm-collector-stream/src/test/java/org/skywalking/apm/collector/stream/worker/util/TimeBucketUtilsTestCase.java +++ /dev/null @@ -1,63 +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.stream.worker.util; - -import java.util.Calendar; -import java.util.TimeZone; -import org.junit.Assert; -import org.junit.Test; -import org.skywalking.apm.collector.core.util.TimeBucketUtils; - -/** - * @author peng-yongsheng - */ -public class TimeBucketUtilsTestCase { - - @Test - public void testUTCLocation() { - TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - long timeBucket = 201703310915L; - long changedTimeBucket = TimeBucketUtils.INSTANCE.changeToUTCTimeBucket(timeBucket); - Assert.assertEquals(201703310115L, changedTimeBucket); - } - - @Test - public void testUTC8Location() { - TimeZone.setDefault(TimeZone.getTimeZone("GMT+08:00")); - long timeBucket = 201703310915L; - long changedTimeBucket = TimeBucketUtils.INSTANCE.changeToUTCTimeBucket(timeBucket); - Assert.assertEquals(201703310915L, changedTimeBucket); - } - - @Test - public void testGetSecondTimeBucket() { - TimeZone.setDefault(TimeZone.getTimeZone("GMT+08:00")); - long timeBucket = TimeBucketUtils.INSTANCE.getSecondTimeBucket(1490922929258L); - Assert.assertEquals(20170331091529L, timeBucket); - } - - @Test - public void test() { - Calendar calendar = Calendar.getInstance(); - calendar.setTimeInMillis(1490922929258L); - calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - 3); - calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - 2); - calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - 2); - } -} diff --git a/apm-collector/apm-collector-core/src/main/resources/logback.xml b/apm-collector/apm-collector-ui/collector-ui-define/pom.xml similarity index 60% rename from apm-collector/apm-collector-core/src/main/resources/logback.xml rename to apm-collector/apm-collector-ui/collector-ui-define/pom.xml index 00f153430..8d960eb01 100644 --- a/apm-collector/apm-collector-core/src/main/resources/logback.xml +++ b/apm-collector/apm-collector-ui/collector-ui-define/pom.xml @@ -17,17 +17,17 @@ ~ Project repository: https://github.com/OpenSkywalking/skywalking --> - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{70} - %msg%n - - + + + apm-collector-ui + org.skywalking + 3.2.4-2017 + + 4.0.0 - - + collector-ui-define + jar - - - - \ No newline at end of file + diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java b/apm-collector/apm-collector-ui/collector-ui-define/src/main/java/org/skywalking/apm/collector/ui/UIModule.java similarity index 73% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java rename to apm-collector/apm-collector-ui/collector-ui-define/src/main/java/org/skywalking/apm/collector/ui/UIModule.java index 033470beb..ff50629ab 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleException.java +++ b/apm-collector/apm-collector-ui/collector-ui-define/src/main/java/org/skywalking/apm/collector/ui/UIModule.java @@ -18,17 +18,20 @@ package org.skywalking.apm.collector.ui; -import org.skywalking.apm.collector.core.module.ModuleException; +import org.skywalking.apm.collector.core.module.Module; /** * @author peng-yongsheng */ -public class UIModuleException extends ModuleException { - public UIModuleException(String message) { - super(message); +public class UIModule extends Module { + + public static final String NAME = "ui"; + + @Override public String name() { + return NAME; } - public UIModuleException(String message, Throwable cause) { - super(message, cause); + @Override public Class[] services() { + return new Class[0]; } } diff --git a/apm-collector/apm-collector-ui/collector-ui-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-ui/collector-ui-define/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..26b274ec7 --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-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.ui.UIModule \ No newline at end of file diff --git a/apm-collector/apm-collector-agentstream/pom.xml b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/pom.xml similarity index 75% rename from apm-collector/apm-collector-agentstream/pom.xml rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/pom.xml index 6052f5994..168eff851 100644 --- a/apm-collector/apm-collector-agentstream/pom.xml +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/pom.xml @@ -21,50 +21,45 @@ 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-ui org.skywalking 3.2.4-2017 4.0.0 - apm-collector-agentstream + collector-ui-jetty-provider jar org.skywalking - apm-collector-stream + collector-ui-define ${project.version} org.skywalking - apm-collector-cluster + collector-cluster-define ${project.version} org.skywalking - apm-collector-server + collector-jetty-manager-define ${project.version} org.skywalking - apm-collector-storage + collector-naming-define ${project.version} org.skywalking - apm-collector-agentjvm + collector-storage-define ${project.version} org.skywalking - apm-collector-agentregister - ${project.version} - - - org.skywalking - apm-collector-cache + collector-cache-define ${project.version} - + \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java new file mode 100644 index 000000000..59212d93f --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java @@ -0,0 +1,116 @@ +/* + * 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.ui.jetty; + +import java.util.Properties; +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.ui.UIModule; +import org.skywalking.apm.collector.ui.jetty.handler.SegmentTopGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.SpanGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.TraceDagGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.TraceStackGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.instancehealth.InstanceHealthGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetOneTimeBucketHandler; +import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetRangeTimeBucketHandler; +import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceOsInfoGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.naming.UIJettyNamingHandler; +import org.skywalking.apm.collector.ui.jetty.handler.naming.UIJettyNamingListener; +import org.skywalking.apm.collector.ui.jetty.handler.servicetree.EntryServiceGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetByIdHandler; +import org.skywalking.apm.collector.ui.jetty.handler.time.AllInstanceLastTimeGetHandler; +import org.skywalking.apm.collector.ui.jetty.handler.time.OneInstanceLastTimeGetHandler; + +/** + * @author peng-yongsheng + */ +public class UIModuleJettyProvider 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 module() { + return UIModule.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(UIModule.NAME, this.name(), new UIModuleJettyRegistration(host, port, contextPath)); + + UIJettyNamingListener namingListener = new UIJettyNamingListener(); + ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class); + moduleListenerService.addListener(namingListener); + + NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class); + namingHandlerRegisterService.register(new UIJettyNamingHandler(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, JettyManagerModule.NAME, NamingModule.NAME, CacheModule.NAME, StorageModule.NAME}; + } + + private void addHandlers(Server jettyServer) { + jettyServer.addHandler(new ApplicationsGetHandler(getManager())); + jettyServer.addHandler(new InstanceHealthGetHandler(getManager())); + jettyServer.addHandler(new InstanceMetricGetOneTimeBucketHandler(getManager())); + jettyServer.addHandler(new InstanceMetricGetRangeTimeBucketHandler(getManager())); + jettyServer.addHandler(new InstanceOsInfoGetHandler(getManager())); + jettyServer.addHandler(new EntryServiceGetHandler(getManager())); + jettyServer.addHandler(new ServiceTreeGetByIdHandler(getManager())); + jettyServer.addHandler(new AllInstanceLastTimeGetHandler(getManager())); + jettyServer.addHandler(new OneInstanceLastTimeGetHandler(getManager())); + jettyServer.addHandler(new SegmentTopGetHandler(getManager())); + jettyServer.addHandler(new SpanGetHandler(getManager())); + jettyServer.addHandler(new TraceDagGetHandler(getManager())); + jettyServer.addHandler(new TraceStackGetHandler(getManager())); + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyRegistration.java similarity index 64% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyRegistration.java index 1541ab41a..7fe4187c4 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleRegistration.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyRegistration.java @@ -18,14 +18,24 @@ package org.skywalking.apm.collector.ui.jetty; -import org.skywalking.apm.collector.core.module.ModuleRegistration; +import org.skywalking.apm.collector.cluster.ModuleRegistration; /** * @author peng-yongsheng */ -public class UIJettyModuleRegistration extends ModuleRegistration { +public class UIModuleJettyRegistration extends ModuleRegistration { + + private final String host; + private final int port; + private final String contextPath; + + public UIModuleJettyRegistration(String host, int port, String contextPath) { + this.host = host; + this.port = port; + this.contextPath = contextPath; + } @Override public Value buildValue() { - return new Value(UIJettyConfig.HOST, UIJettyConfig.PORT, UIJettyConfig.CONTEXT_PATH); + return new Value(host, port, contextPath); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SegmentTopGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SegmentTopGetHandler.java similarity index 85% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SegmentTopGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SegmentTopGetHandler.java index 79c9c0d65..08648d3e8 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SegmentTopGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SegmentTopGetHandler.java @@ -20,10 +20,11 @@ package org.skywalking.apm.collector.ui.jetty.handler; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.core.util.StringUtils; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; -import org.skywalking.apm.collector.ui.dao.ISegmentCostDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; import org.skywalking.apm.collector.ui.service.SegmentTopService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,7 +40,11 @@ public class SegmentTopGetHandler extends JettyHandler { return "/segment/top"; } - private SegmentTopService service = new SegmentTopService(); + private final SegmentTopService service; + + public SegmentTopGetHandler(ModuleManager moduleManager) { + this.service = new SegmentTopService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { if (!req.getParameterMap().containsKey("startTime") || !req.getParameterMap().containsKey("endTime") || !req.getParameterMap().containsKey("from") || !req.getParameterMap().containsKey("limit")) { @@ -104,25 +109,25 @@ public class SegmentTopGetHandler extends JettyHandler { throw new ArgumentsParseException("the request parameter applicationId must be a int"); } - ISegmentCostDAO.Error error; + ISegmentCostUIDAO.Error error; String errorStr = req.getParameter("error"); if (StringUtils.isNotEmpty(errorStr)) { if ("true".equals(errorStr)) { - error = ISegmentCostDAO.Error.True; + error = ISegmentCostUIDAO.Error.True; } else if ("false".equals(errorStr)) { - error = ISegmentCostDAO.Error.False; + error = ISegmentCostUIDAO.Error.False; } else { - error = ISegmentCostDAO.Error.All; + error = ISegmentCostUIDAO.Error.All; } } else { - error = ISegmentCostDAO.Error.All; + error = ISegmentCostUIDAO.Error.All; } - ISegmentCostDAO.Sort sort = ISegmentCostDAO.Sort.Cost; + ISegmentCostUIDAO.Sort sort = ISegmentCostUIDAO.Sort.Cost; if (req.getParameterMap().containsKey("sort")) { String sortStr = req.getParameter("sort"); - if (sortStr.toLowerCase().equals(ISegmentCostDAO.Sort.Time.name().toLowerCase())) { - sort = ISegmentCostDAO.Sort.Time; + if (sortStr.toLowerCase().equals(ISegmentCostUIDAO.Sort.Time.name().toLowerCase())) { + sort = ISegmentCostUIDAO.Sort.Time; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SpanGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SpanGetHandler.java similarity index 90% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SpanGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SpanGetHandler.java index 9bdfdac2c..3d66cd4df 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SpanGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/SpanGetHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.SpanService; @@ -37,7 +38,11 @@ public class SpanGetHandler extends JettyHandler { return "/span/spanId"; } - private SpanService service = new SpanService(); + private final SpanService service; + + public SpanGetHandler(ModuleManager moduleManager) { + this.service = new SpanService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String segmentId = req.getParameter("segmentId"); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java similarity index 91% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java index 9a2d50795..e56c44a46 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceDagGetHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.TraceDagService; @@ -37,7 +38,11 @@ public class TraceDagGetHandler extends JettyHandler { return "/traceDag"; } - private TraceDagService service = new TraceDagService(); + private final TraceDagService service; + + public TraceDagGetHandler(ModuleManager moduleManager) { + this.service = new TraceDagService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { if (!req.getParameterMap().containsKey("startTime") || !req.getParameterMap().containsKey("endTime")) { diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceStackGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceStackGetHandler.java similarity index 88% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceStackGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceStackGetHandler.java index 9358d6f6c..e8b98fc6e 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceStackGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/TraceStackGetHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.TraceStackService; @@ -37,7 +38,11 @@ public class TraceStackGetHandler extends JettyHandler { return "/traceStack/globalTraceId"; } - private TraceStackService service = new TraceStackService(); + private final TraceStackService service; + + public TraceStackGetHandler(ModuleManager moduleManager) { + this.service = new TraceStackService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String globalTraceId = req.getParameter("globalTraceId"); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java similarity index 88% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java index 7377213a1..5a400451c 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler.application; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.ApplicationService; @@ -37,7 +38,11 @@ public class ApplicationsGetHandler extends JettyHandler { return "/applications"; } - private ApplicationService service = new ApplicationService(); + private final ApplicationService applicationService; + + public ApplicationsGetHandler(ModuleManager moduleManager) { + this.applicationService = new ApplicationService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { if (!req.getParameterMap().containsKey("startTime") || !req.getParameterMap().containsKey("endTime")) { @@ -62,7 +67,7 @@ public class ApplicationsGetHandler extends JettyHandler { throw new ArgumentsParseException("end time must be long"); } - return service.getApplications(startTime, endTime); + return applicationService.getApplications(startTime, endTime); } @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java similarity index 92% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java index 31ad765ac..1d547dc8d 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancehealth/InstanceHealthGetHandler.java @@ -22,6 +22,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.InstanceHealthService; @@ -39,7 +40,11 @@ public class InstanceHealthGetHandler extends JettyHandler { return "/instance/health/applicationId"; } - private InstanceHealthService service = new InstanceHealthService(); + private final InstanceHealthService service; + + public InstanceHealthGetHandler(ModuleManager moduleManager) { + this.service = new InstanceHealthService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String timeBucketStr = req.getParameter("timeBucket"); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java similarity index 91% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java index bf3a833e8..db3136ade 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetOneTimeBucketHandler.java @@ -22,6 +22,7 @@ import com.google.gson.JsonElement; import java.util.LinkedHashSet; import java.util.Set; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.InstanceJVMService; @@ -39,7 +40,11 @@ public class InstanceMetricGetOneTimeBucketHandler extends JettyHandler { return "/instance/jvm/instanceId/oneBucket"; } - private InstanceJVMService service = new InstanceJVMService(); + private final InstanceJVMService service; + + public InstanceMetricGetOneTimeBucketHandler(ModuleManager moduleManager) { + this.service = new InstanceJVMService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String timeBucketStr = req.getParameter("timeBucket"); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java similarity index 92% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java index e81400acb..543b1803f 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceMetricGetRangeTimeBucketHandler.java @@ -22,6 +22,7 @@ import com.google.gson.JsonElement; import java.util.LinkedHashSet; import java.util.Set; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.InstanceJVMService; @@ -39,7 +40,11 @@ public class InstanceMetricGetRangeTimeBucketHandler extends JettyHandler { return "/instance/jvm/instanceId/rangeBucket"; } - private InstanceJVMService service = new InstanceJVMService(); + private final InstanceJVMService service; + + public InstanceMetricGetRangeTimeBucketHandler(ModuleManager moduleManager) { + this.service = new InstanceJVMService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String startTimeBucketStr = req.getParameter("startTimeBucket"); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java similarity index 89% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java index 65f3ab603..cadd8d593 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/instancemetric/InstanceOsInfoGetHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler.instancemetric; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.InstanceJVMService; @@ -37,7 +38,11 @@ public class InstanceOsInfoGetHandler extends JettyHandler { return "/instance/os/instanceId"; } - private InstanceJVMService service = new InstanceJVMService(); + private final InstanceJVMService service; + + public InstanceOsInfoGetHandler(ModuleManager moduleManager) { + this.service = new InstanceJVMService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String instanceIdStr = req.getParameter("instanceId"); diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/naming/UIJettyNamingHandler.java similarity index 73% rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/naming/UIJettyNamingHandler.java index 32a9c74c1..7c9c40f6a 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/naming/UIJettyNamingHandler.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.ui.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.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; -import org.skywalking.apm.collector.ui.jetty.UIJettyDataListener; /** * @author peng-yongsheng */ -public class UIJettyServerHandler extends JettyHandler { +public class UIJettyNamingHandler extends JettyHandler { + + private final UIJettyNamingListener namingListener; + + public UIJettyNamingHandler(UIJettyNamingListener namingListener) { + this.namingListener = namingListener; + } @Override public String pathSpec() { return "/ui/jetty"; } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); - Set servers = reader.read(UIJettyDataListener.PATH); + Set servers = namingListener.getAddresses(); JsonArray serverArray = new JsonArray(); servers.forEach(serverArray::add); return serverArray; diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/naming/UIJettyNamingListener.java similarity index 65% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/naming/UIJettyNamingListener.java index fed873fcf..4ba20cc7c 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/naming/UIJettyNamingListener.java @@ -16,18 +16,18 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.agentstream.grpc; +package org.skywalking.apm.collector.ui.jetty.handler.naming; -import org.skywalking.apm.collector.agentstream.AgentStreamModuleGroupDefine; -import org.skywalking.apm.collector.cluster.ClusterModuleDefine; -import org.skywalking.apm.collector.core.cluster.ClusterDataListener; +import org.skywalking.apm.collector.cluster.ClusterModuleListener; +import org.skywalking.apm.collector.ui.UIModule; +import org.skywalking.apm.collector.ui.jetty.UIModuleJettyProvider; /** * @author peng-yongsheng */ -public class AgentStreamGRPCDataListener extends ClusterDataListener { +public class UIJettyNamingListener extends ClusterModuleListener { - public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + AgentStreamModuleGroupDefine.GROUP_NAME + "." + AgentStreamGRPCModuleDefine.MODULE_NAME; + public static final String PATH = "/" + UIModule.NAME + "/" + UIModuleJettyProvider.NAME; @Override public String path() { return PATH; diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java similarity index 94% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java index cd36b4711..92e3ce48f 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/EntryServiceGetHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler.servicetree; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.ServiceTreeService; @@ -37,7 +38,11 @@ public class EntryServiceGetHandler extends JettyHandler { return "/service/entry"; } - private ServiceTreeService service = new ServiceTreeService(); + private final ServiceTreeService service; + + public EntryServiceGetHandler(ModuleManager moduleManager) { + this.service = new ServiceTreeService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { if (!req.getParameterMap().containsKey("applicationId") || !req.getParameterMap().containsKey("entryServiceName") diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java similarity index 92% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java index f68cc9802..26eb335ba 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/servicetree/ServiceTreeGetByIdHandler.java @@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty.handler.servicetree; import com.google.gson.JsonElement; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.ServiceTreeService; @@ -37,7 +38,11 @@ public class ServiceTreeGetByIdHandler extends JettyHandler { return "/service/tree/entryServiceId"; } - private ServiceTreeService service = new ServiceTreeService(); + private final ServiceTreeService service; + + public ServiceTreeGetByIdHandler(ModuleManager moduleManager) { + this.service = new ServiceTreeService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { if (!req.getParameterMap().containsKey("entryServiceId") || !req.getParameterMap().containsKey("startTime") || !req.getParameterMap().containsKey("endTime")) { diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java similarity index 90% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java index 9da2beca2..0b931c132 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/AllInstanceLastTimeGetHandler.java @@ -22,6 +22,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.Calendar; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.core.util.TimeBucketUtils; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; @@ -40,7 +41,11 @@ public class AllInstanceLastTimeGetHandler extends JettyHandler { return "/time/allInstance"; } - private TimeSynchronousService service = new TimeSynchronousService(); + private final TimeSynchronousService service; + + public AllInstanceLastTimeGetHandler(ModuleManager moduleManager) { + this.service = new TimeSynchronousService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { Long timeBucket = service.allInstanceLastTime(); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java similarity index 90% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java index fc6b6705f..601d6048e 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/time/OneInstanceLastTimeGetHandler.java @@ -21,6 +21,7 @@ package org.skywalking.apm.collector.ui.jetty.handler.time; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.ui.service.TimeSynchronousService; @@ -38,7 +39,11 @@ public class OneInstanceLastTimeGetHandler extends JettyHandler { return "/time/oneInstance"; } - private TimeSynchronousService service = new TimeSynchronousService(); + private final TimeSynchronousService service; + + public OneInstanceLastTimeGetHandler(ModuleManager moduleManager) { + this.service = new TimeSynchronousService(moduleManager); + } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { String instanceIdStr = req.getParameter("instanceId"); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java new file mode 100644 index 000000000..9fa14e701 --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java @@ -0,0 +1,53 @@ +/* + * 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.ui.service; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +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.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; + +/** + * @author peng-yongsheng + */ +public class ApplicationService { + + private final IInstanceUIDAO instanceDAO; + private final ApplicationCacheService applicationCacheService; + + public ApplicationService(ModuleManager moduleManager) { + this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + } + + public JsonArray getApplications(long startTime, long endTime) { + JsonArray applications = instanceDAO.getApplications(startTime, endTime); + + applications.forEach(jsonElement -> { + JsonObject application = jsonElement.getAsJsonObject(); + int applicationId = application.get("applicationId").getAsInt(); + String applicationCode = applicationCacheService.get(applicationId); + application.addProperty("applicationCode", applicationCode); + }); + return applications; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java similarity index 67% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java index 6ae7e753c..b4a86e9a8 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/InstanceHealthService.java @@ -21,13 +21,15 @@ package org.skywalking.apm.collector.ui.service; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.List; -import org.skywalking.apm.collector.cache.ApplicationCache; +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.TimeBucketUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.ui.dao.IGCMetricDAO; -import org.skywalking.apm.collector.ui.dao.IInstPerformanceDAO; -import org.skywalking.apm.collector.ui.dao.IInstanceDAO; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.table.register.Instance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,25 +40,34 @@ public class InstanceHealthService { private final Logger logger = LoggerFactory.getLogger(InstanceHealthService.class); + private final IGCMetricUIDAO gcMetricDAO; + private final IInstanceUIDAO instanceDAO; + private final IInstPerformanceUIDAO instPerformanceDAO; + private final ApplicationCacheService applicationCacheService; + + public InstanceHealthService(ModuleManager moduleManager) { + this.gcMetricDAO = moduleManager.find(StorageModule.NAME).getService(IGCMetricUIDAO.class); + this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); + this.instPerformanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstPerformanceUIDAO.class); + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + } + public JsonObject getInstances(long timeBucket, int applicationId) { JsonObject response = new JsonObject(); long[] timeBuckets = TimeBucketUtils.INSTANCE.getFiveSecondTimeBuckets(timeBucket); long halfHourBeforeTimeBucket = TimeBucketUtils.INSTANCE.addSecondForSecondTimeBucket(TimeBucketUtils.TimeBucketType.SECOND.name(), timeBucket, -60 * 30); - IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName()); - List instanceList = instanceDAO.getInstances(applicationId, halfHourBeforeTimeBucket); + List instanceList = instanceDAO.getInstances(applicationId, halfHourBeforeTimeBucket); JsonArray instances = new JsonArray(); response.add("instances", instances); instanceList.forEach(instance -> { - response.addProperty("applicationCode", ApplicationCache.get(applicationId)); + response.addProperty("applicationCode", applicationCacheService.get(applicationId)); response.addProperty("applicationId", applicationId); - IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName()); - IInstPerformanceDAO.InstPerformance performance = instPerformanceDAO.get(timeBuckets, instance.getInstanceId()); + IInstPerformanceUIDAO.InstPerformance performance = instPerformanceDAO.get(timeBuckets, instance.getInstanceId()); - IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName()); JsonObject instanceJson = new JsonObject(); instanceJson.addProperty("id", instance.getInstanceId()); if (performance != null) { @@ -90,7 +101,7 @@ public class InstanceHealthService { instanceJson.addProperty("status", 1); } - IGCMetricDAO.GCCount gcCount = gcMetricDAO.getGCCount(timeBuckets, instance.getInstanceId()); + IGCMetricUIDAO.GCCount gcCount = gcMetricDAO.getGCCount(timeBuckets, instance.getInstanceId()); instanceJson.addProperty("ygc", gcCount.getYoung()); instanceJson.addProperty("ogc", gcCount.getOld()); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceJVMService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/InstanceJVMService.java similarity index 65% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceJVMService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/InstanceJVMService.java index 7f262eadb..3af9d2954 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/InstanceJVMService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/InstanceJVMService.java @@ -21,16 +21,17 @@ package org.skywalking.apm.collector.ui.service; import com.google.gson.Gson; import com.google.gson.JsonObject; import java.util.Set; -import org.skywalking.apm.collector.core.framework.UnexpectedException; +import org.skywalking.apm.collector.core.UnexpectedException; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.register.InstanceDataDefine; -import org.skywalking.apm.collector.ui.dao.ICpuMetricDAO; -import org.skywalking.apm.collector.ui.dao.IGCMetricDAO; -import org.skywalking.apm.collector.ui.dao.IInstPerformanceDAO; -import org.skywalking.apm.collector.ui.dao.IInstanceDAO; -import org.skywalking.apm.collector.ui.dao.IMemoryMetricDAO; -import org.skywalking.apm.collector.ui.dao.IMemoryPoolMetricDAO; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.ICpuMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IGCMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstPerformanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryMetricUIDAO; +import org.skywalking.apm.collector.storage.dao.IMemoryPoolMetricUIDAO; +import org.skywalking.apm.collector.storage.table.register.Instance; import org.skywalking.apm.network.proto.PoolType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,11 +43,26 @@ public class InstanceJVMService { private final Logger logger = LoggerFactory.getLogger(InstanceJVMService.class); - private Gson gson = new Gson(); + private final Gson gson = new Gson(); + + private final IInstanceUIDAO instanceDAO; + private final ICpuMetricUIDAO cpuMetricDAO; + private final IGCMetricUIDAO gcMetricDAO; + private final IMemoryMetricUIDAO memoryMetricDAO; + private final IMemoryPoolMetricUIDAO memoryPoolMetricDAO; + private final IInstPerformanceUIDAO instPerformanceDAO; + + public InstanceJVMService(ModuleManager moduleManager) { + this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); + this.cpuMetricDAO = moduleManager.find(StorageModule.NAME).getService(ICpuMetricUIDAO.class); + this.gcMetricDAO = moduleManager.find(StorageModule.NAME).getService(IGCMetricUIDAO.class); + this.memoryMetricDAO = moduleManager.find(StorageModule.NAME).getService(IMemoryMetricUIDAO.class); + this.memoryPoolMetricDAO = moduleManager.find(StorageModule.NAME).getService(IMemoryPoolMetricUIDAO.class); + this.instPerformanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstPerformanceUIDAO.class); + } public JsonObject getInstanceOsInfo(int instanceId) { - IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName()); - InstanceDataDefine.Instance instance = instanceDAO.getInstance(instanceId); + Instance instance = instanceDAO.getInstance(instanceId); if (ObjectUtils.isEmpty(instance)) { throw new UnexpectedException("instance id: " + instanceId + " not exist."); } @@ -58,37 +74,26 @@ public class InstanceJVMService { JsonObject metrics = new JsonObject(); for (String metricType : metricTypes) { if (metricType.toLowerCase().equals(MetricType.cpu.name())) { - ICpuMetricDAO cpuMetricDAO = (ICpuMetricDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName()); metrics.addProperty(MetricType.cpu.name(), cpuMetricDAO.getMetric(instanceId, timeBucket)); } else if (metricType.toLowerCase().equals(MetricType.gc.name())) { - IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName()); metrics.add(MetricType.gc.name(), gcMetricDAO.getMetric(instanceId, timeBucket)); } else if (metricType.toLowerCase().equals(MetricType.tps.name())) { - IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName()); metrics.addProperty(MetricType.tps.name(), instPerformanceDAO.getTpsMetric(instanceId, timeBucket)); } else if (metricType.toLowerCase().equals(MetricType.resptime.name())) { - IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName()); metrics.addProperty(MetricType.resptime.name(), instPerformanceDAO.getRespTimeMetric(instanceId, timeBucket)); } else if (metricType.toLowerCase().equals(MetricType.heapmemory.name())) { - IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName()); metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, timeBucket, true)); } else if (metricType.toLowerCase().equals(MetricType.nonheapmemory.name())) { - IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName()); metrics.add(MetricType.nonheapmemory.name(), memoryMetricDAO.getMetric(instanceId, timeBucket, false)); } else if (metricType.toLowerCase().equals(MetricType.permgen.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.permgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, PoolType.PERMGEN_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.metaspace.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.metaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, PoolType.METASPACE_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.newgen.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.newgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, PoolType.NEWGEN_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.oldgen.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.oldgen.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, PoolType.OLDGEN_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.survivor.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.survivor.name(), memoryPoolMetricDAO.getMetric(instanceId, timeBucket, PoolType.SURVIVOR_USAGE_VALUE)); } else { throw new UnexpectedException("unexpected metric type"); @@ -102,37 +107,26 @@ public class InstanceJVMService { JsonObject metrics = new JsonObject(); for (String metricType : metricTypes) { if (metricType.toLowerCase().equals(MetricType.cpu.name())) { - ICpuMetricDAO cpuMetricDAO = (ICpuMetricDAO)DAOContainer.INSTANCE.get(ICpuMetricDAO.class.getName()); metrics.add(MetricType.cpu.name(), cpuMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket)); } else if (metricType.toLowerCase().equals(MetricType.gc.name())) { - IGCMetricDAO gcMetricDAO = (IGCMetricDAO)DAOContainer.INSTANCE.get(IGCMetricDAO.class.getName()); metrics.add(MetricType.gc.name(), gcMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket)); } else if (metricType.toLowerCase().equals(MetricType.tps.name())) { - IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName()); metrics.add(MetricType.tps.name(), instPerformanceDAO.getTpsMetric(instanceId, startTimeBucket, endTimeBucket)); } else if (metricType.toLowerCase().equals(MetricType.resptime.name())) { - IInstPerformanceDAO instPerformanceDAO = (IInstPerformanceDAO)DAOContainer.INSTANCE.get(IInstPerformanceDAO.class.getName()); metrics.add(MetricType.resptime.name(), instPerformanceDAO.getRespTimeMetric(instanceId, startTimeBucket, endTimeBucket)); } else if (metricType.toLowerCase().equals(MetricType.heapmemory.name())) { - IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName()); metrics.add(MetricType.heapmemory.name(), memoryMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, true)); } else if (metricType.toLowerCase().equals(MetricType.nonheapmemory.name())) { - IMemoryMetricDAO memoryMetricDAO = (IMemoryMetricDAO)DAOContainer.INSTANCE.get(IMemoryMetricDAO.class.getName()); metrics.add(MetricType.nonheapmemory.name(), memoryMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, false)); } else if (metricType.toLowerCase().equals(MetricType.permgen.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.permgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, PoolType.PERMGEN_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.metaspace.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.metaspace.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, PoolType.METASPACE_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.newgen.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.newgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, PoolType.NEWGEN_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.oldgen.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.oldgen.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, PoolType.OLDGEN_USAGE_VALUE)); } else if (metricType.toLowerCase().equals(MetricType.survivor.name())) { - IMemoryPoolMetricDAO memoryPoolMetricDAO = (IMemoryPoolMetricDAO)DAOContainer.INSTANCE.get(IMemoryPoolMetricDAO.class.getName()); metrics.add(MetricType.survivor.name(), memoryPoolMetricDAO.getMetric(instanceId, startTimeBucket, endTimeBucket, PoolType.SURVIVOR_USAGE_VALUE)); } else { throw new UnexpectedException("unexpected metric type"); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java new file mode 100644 index 000000000..6f4b0973e --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java @@ -0,0 +1,74 @@ +/* + * 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.ui.service; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import java.util.LinkedList; +import java.util.List; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.core.util.CollectionUtils; +import org.skywalking.apm.collector.core.util.StringUtils; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentCostUIDAO; +import org.skywalking.apm.collector.storage.table.global.GlobalTraceTable; +import org.skywalking.apm.collector.storage.table.segment.SegmentCostTable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class SegmentTopService { + + private final Logger logger = LoggerFactory.getLogger(SegmentTopService.class); + + private final IGlobalTraceUIDAO globalTraceDAO; + private final ISegmentCostUIDAO segmentCostDAO; + + public SegmentTopService(ModuleManager moduleManager) { + this.globalTraceDAO = moduleManager.find(StorageModule.NAME).getService(IGlobalTraceUIDAO.class); + this.segmentCostDAO = moduleManager.find(StorageModule.NAME).getService(ISegmentCostUIDAO.class); + } + + public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName, + String globalTraceId, ISegmentCostUIDAO.Error error, int applicationId, int limit, int from, + ISegmentCostUIDAO.Sort sort) { + logger.debug("startTime: {}, endTime: {}, minCost: {}, maxCost: {}, operationName: {}, globalTraceId: {}, error: {}, applicationId: {}, limit: {}, from: {}", startTime, endTime, minCost, maxCost, operationName, globalTraceId, error, applicationId, limit, from); + + List segmentIds = new LinkedList<>(); + if (StringUtils.isNotEmpty(globalTraceId)) { + segmentIds = globalTraceDAO.getSegmentIds(globalTraceId); + } + + JsonObject loadTopJsonObj = segmentCostDAO.loadTop(startTime, endTime, minCost, maxCost, operationName, error, applicationId, segmentIds, limit, from, sort); + JsonArray loadTopJsonArray = loadTopJsonObj.get("data").getAsJsonArray(); + for (JsonElement loadTopElement : loadTopJsonArray) { + JsonObject jsonObject = loadTopElement.getAsJsonObject(); + String segmentId = jsonObject.get(SegmentCostTable.COLUMN_SEGMENT_ID).getAsString(); + List globalTraces = globalTraceDAO.getGlobalTraceId(segmentId); + if (CollectionUtils.isNotEmpty(globalTraces)) { + jsonObject.addProperty(GlobalTraceTable.COLUMN_GLOBAL_TRACE_ID, globalTraces.get(0)); + } + } + return loadTopJsonObj; + } +} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java similarity index 65% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java index e770b4d9c..5dfd11956 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/ServiceTreeService.java @@ -19,31 +19,64 @@ package org.skywalking.apm.collector.ui.service; import com.google.gson.JsonArray; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.Iterator; import java.util.Map; +import org.skywalking.apm.collector.cache.CacheModule; +import org.skywalking.apm.collector.cache.service.ApplicationCacheService; +import org.skywalking.apm.collector.cache.service.ServiceNameCacheService; +import org.skywalking.apm.collector.core.module.ModuleManager; import org.skywalking.apm.collector.core.util.ColumnNameUtils; import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.storage.define.serviceref.ServiceReferenceTable; -import org.skywalking.apm.collector.ui.dao.IServiceEntryDAO; -import org.skywalking.apm.collector.ui.dao.IServiceReferenceDAO; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IServiceEntryUIDAO; +import org.skywalking.apm.collector.storage.dao.IServiceReferenceUIDAO; +import org.skywalking.apm.collector.storage.table.service.ServiceEntryTable; +import org.skywalking.apm.collector.storage.table.serviceref.ServiceReferenceTable; /** * @author peng-yongsheng */ public class ServiceTreeService { + private final IServiceEntryUIDAO serviceEntryDAO; + private final IServiceReferenceUIDAO serviceReferenceDAO; + private final ApplicationCacheService applicationCacheService; + private final ServiceNameCacheService serviceNameCacheService; + + public ServiceTreeService(ModuleManager moduleManager) { + this.serviceEntryDAO = moduleManager.find(StorageModule.NAME).getService(IServiceEntryUIDAO.class); + this.serviceReferenceDAO = moduleManager.find(StorageModule.NAME).getService(IServiceReferenceUIDAO.class); + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class); + } + public JsonObject loadEntryService(int applicationId, String entryServiceName, long startTime, long endTime, int from, int size) { - IServiceEntryDAO serviceEntryDAO = (IServiceEntryDAO)DAOContainer.INSTANCE.get(IServiceEntryDAO.class.getName()); - return serviceEntryDAO.load(applicationId, entryServiceName, startTime, endTime, from, size); + JsonObject response = serviceEntryDAO.load(applicationId, entryServiceName, startTime, endTime, from, size); + JsonArray entryServices = response.get("array").getAsJsonArray(); + for (JsonElement element : entryServices) { + JsonObject entryService = element.getAsJsonObject(); + int respApplication = entryService.get(ColumnNameUtils.INSTANCE.rename(ServiceEntryTable.COLUMN_APPLICATION_ID)).getAsInt(); + String applicationCode = applicationCacheService.get(respApplication); + entryService.addProperty("applicationCode", applicationCode); + } + + return response; } public JsonArray loadServiceTree(int entryServiceId, long startTime, long endTime) { - IServiceReferenceDAO serviceReferenceDAO = (IServiceReferenceDAO)DAOContainer.INSTANCE.get(IServiceReferenceDAO.class.getName()); Map serviceReferenceMap = serviceReferenceDAO.load(entryServiceId, startTime, endTime); + serviceReferenceMap.values().forEach(serviceReference -> { + int frontServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_FRONT_SERVICE_ID)).getAsInt(); + int behindServiceId = serviceReference.get(ColumnNameUtils.INSTANCE.rename(ServiceReferenceTable.COLUMN_BEHIND_SERVICE_ID)).getAsInt(); + String frontServiceName = serviceNameCacheService.getSplitServiceName(serviceNameCacheService.get(frontServiceId)); + String behindServiceName = serviceNameCacheService.getSplitServiceName(serviceNameCacheService.get(behindServiceId)); + serviceReference.addProperty("frontServiceName", frontServiceName); + serviceReference.addProperty("behindServiceName", behindServiceName); + }); return buildTreeData(serviceReferenceMap); } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java similarity index 80% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java index 0d8f14fe5..3981e2d13 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/SpanService.java @@ -21,12 +21,14 @@ package org.skywalking.apm.collector.ui.service; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.List; -import org.skywalking.apm.collector.cache.ApplicationCache; -import org.skywalking.apm.collector.cache.ServiceNameCache; +import org.skywalking.apm.collector.cache.CacheModule; +import org.skywalking.apm.collector.cache.service.ApplicationCacheService; +import org.skywalking.apm.collector.cache.service.ServiceNameCacheService; +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.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.ui.dao.ISegmentDAO; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; import org.skywalking.apm.network.proto.KeyWithStringValue; import org.skywalking.apm.network.proto.LogMessage; import org.skywalking.apm.network.proto.SpanObject; @@ -38,8 +40,17 @@ import org.skywalking.apm.network.trace.component.ComponentsDefine; */ public class SpanService { + private final ISegmentUIDAO segmentDAO; + private final ServiceNameCacheService serviceNameCacheService; + private final ApplicationCacheService applicationCacheService; + + public SpanService(ModuleManager moduleManager) { + this.segmentDAO = moduleManager.find(StorageModule.NAME).getService(ISegmentUIDAO.class); + this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class); + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + } + public JsonObject load(String segmentId, int spanId) { - ISegmentDAO segmentDAO = (ISegmentDAO)DAOContainer.INSTANCE.get(ISegmentDAO.class.getName()); TraceSegmentObject segmentObject = segmentDAO.load(segmentId); JsonObject spanJson = new JsonObject(); @@ -48,7 +59,7 @@ public class SpanService { if (spanId == spanObject.getSpanId()) { String operationName = spanObject.getOperationName(); if (spanObject.getOperationNameId() != 0) { - String serviceName = ServiceNameCache.get(spanObject.getOperationNameId()); + String serviceName = serviceNameCacheService.get(spanObject.getOperationNameId()); if (StringUtils.isNotEmpty(serviceName)) { operationName = serviceName.split(Const.ID_SPLIT)[1]; } @@ -96,7 +107,7 @@ public class SpanService { if (spanObject.getPeerId() == 0) { peerJson.addProperty("value", spanObject.getPeer()); } else { - peerJson.addProperty("value", ApplicationCache.get(spanObject.getPeerId())); + peerJson.addProperty("value", applicationCacheService.get(spanObject.getPeerId())); } tagsArray.add(peerJson); diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TimeSynchronousService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TimeSynchronousService.java similarity index 69% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TimeSynchronousService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TimeSynchronousService.java index 1556d9dfe..580d59b7b 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TimeSynchronousService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TimeSynchronousService.java @@ -18,8 +18,9 @@ package org.skywalking.apm.collector.ui.service; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.ui.dao.IInstanceDAO; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IInstanceUIDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,15 +29,19 @@ import org.slf4j.LoggerFactory; */ public class TimeSynchronousService { - private final Logger logger = LoggerFactory.getLogger(SegmentTopService.class); + private final Logger logger = LoggerFactory.getLogger(TimeSynchronousService.class); + + private final IInstanceUIDAO instanceDAO; + + public TimeSynchronousService(ModuleManager moduleManager) { + this.instanceDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceUIDAO.class); + } public Long allInstanceLastTime() { - IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName()); return instanceDAO.lastHeartBeatTime(); } public Long instanceLastTime(int applicationInstanceId) { - IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName()); return instanceDAO.instanceLastHeartBeatTime(applicationInstanceId); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java similarity index 64% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java index 1249a0d75..dcd266c67 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagDataBuilder.java @@ -23,8 +23,15 @@ import com.google.gson.JsonObject; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; +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.ColumnNameUtils; import org.skywalking.apm.collector.core.util.Const; -import org.skywalking.apm.collector.storage.define.noderef.NodeReferenceTable; +import org.skywalking.apm.collector.storage.table.node.NodeComponentTable; +import org.skywalking.apm.collector.storage.table.node.NodeMappingTable; +import org.skywalking.apm.collector.storage.table.noderef.NodeReferenceTable; +import org.skywalking.apm.network.trace.component.ComponentsDefine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,18 +41,23 @@ import org.slf4j.LoggerFactory; public class TraceDagDataBuilder { private final Logger logger = LoggerFactory.getLogger(TraceDagDataBuilder.class); - private Integer nodeId = new Integer(-1); + private Integer nodeId = -1; private Map mappingMap = new HashMap<>(); private Map nodeCompMap = new HashMap<>(); private Map nodeIdMap = new HashMap<>(); private JsonArray pointArray = new JsonArray(); private JsonArray lineArray = new JsonArray(); + private final ApplicationCacheService applicationCacheService; + + public TraceDagDataBuilder(ModuleManager moduleManager) { + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + } public JsonObject build(JsonArray nodeCompArray, JsonArray nodesMappingArray, JsonArray resSumArray) { changeNodeComp2Map(nodeCompArray); changeMapping2Map(nodesMappingArray); - Map mergedResSumMap = merge(resSumArray); + Map mergedResSumMap = getApplicationCode(resSumArray); mergedResSumMap.values().forEach(nodeRefJsonObj -> { String front = nodeRefJsonObj.get("front").getAsString(); @@ -94,8 +106,10 @@ public class TraceDagDataBuilder { private void changeMapping2Map(JsonArray nodesMappingArray) { for (int i = 0; i < nodesMappingArray.size(); i++) { JsonObject nodesMappingJsonObj = nodesMappingArray.get(i).getAsJsonObject(); - String applicationCode = nodesMappingJsonObj.get("applicationCode").getAsString(); - String address = nodesMappingJsonObj.get("address").getAsString(); + int applicationId = nodesMappingJsonObj.get(NodeMappingTable.COLUMN_APPLICATION_ID).getAsInt(); + String applicationCode = applicationCacheService.get(applicationId); + int addressId = nodesMappingJsonObj.get(NodeMappingTable.COLUMN_ADDRESS_ID).getAsInt(); + String address = applicationCacheService.get(addressId); mappingMap.put(address, applicationCode); } } @@ -104,8 +118,10 @@ public class TraceDagDataBuilder { for (int i = 0; i < nodeCompArray.size(); i++) { JsonObject nodesJsonObj = nodeCompArray.get(i).getAsJsonObject(); logger.debug(nodesJsonObj.toString()); - String componentName = nodesJsonObj.get("componentName").getAsString(); - String peer = nodesJsonObj.get("peer").getAsString(); + int componentId = nodesJsonObj.get(NodeComponentTable.COLUMN_COMPONENT_ID).getAsInt(); + String componentName = ComponentsDefine.getInstance().getComponentName(componentId); + int peerId = nodesJsonObj.get(NodeComponentTable.COLUMN_PEER_ID).getAsInt(); + String peer = applicationCacheService.get(peerId); nodeCompMap.put(peer, componentName); } } @@ -114,25 +130,21 @@ public class TraceDagDataBuilder { return mappingMap.containsKey(peers); } - private Map merge(JsonArray nodeReference) { + private Map getApplicationCode(JsonArray nodeReference) { Map mergedRef = new LinkedHashMap<>(); for (int i = 0; i < nodeReference.size(); i++) { JsonObject nodeRefJsonObj = nodeReference.get(i).getAsJsonObject(); - String front = nodeRefJsonObj.get("front").getAsString(); - String behind = nodeRefJsonObj.get("behind").getAsString(); + + int frontApplicationId = nodeRefJsonObj.get(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID)).getAsInt(); + int behindApplicationId = nodeRefJsonObj.get(ColumnNameUtils.INSTANCE.rename(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID)).getAsInt(); + + String front = applicationCacheService.get(frontApplicationId); + String behind = applicationCacheService.get(behindApplicationId); String id = front + Const.ID_SPLIT + behind; - if (mergedRef.containsKey(id)) { - JsonObject oldValue = mergedRef.get(id); - oldValue.addProperty(NodeReferenceTable.COLUMN_S1_LTE, oldValue.get(NodeReferenceTable.COLUMN_S1_LTE).getAsLong() + nodeRefJsonObj.get(NodeReferenceTable.COLUMN_S1_LTE).getAsLong()); - oldValue.addProperty(NodeReferenceTable.COLUMN_S3_LTE, oldValue.get(NodeReferenceTable.COLUMN_S3_LTE).getAsLong() + nodeRefJsonObj.get(NodeReferenceTable.COLUMN_S3_LTE).getAsLong()); - oldValue.addProperty(NodeReferenceTable.COLUMN_S5_LTE, oldValue.get(NodeReferenceTable.COLUMN_S5_LTE).getAsLong() + nodeRefJsonObj.get(NodeReferenceTable.COLUMN_S5_LTE).getAsLong()); - oldValue.addProperty(NodeReferenceTable.COLUMN_S5_GT, oldValue.get(NodeReferenceTable.COLUMN_S5_GT).getAsLong() + nodeRefJsonObj.get(NodeReferenceTable.COLUMN_S5_GT).getAsLong()); - oldValue.addProperty(NodeReferenceTable.COLUMN_ERROR, oldValue.get(NodeReferenceTable.COLUMN_ERROR).getAsLong() + nodeRefJsonObj.get(NodeReferenceTable.COLUMN_ERROR).getAsLong()); - oldValue.addProperty(NodeReferenceTable.COLUMN_SUMMARY, oldValue.get(NodeReferenceTable.COLUMN_SUMMARY).getAsLong() + nodeRefJsonObj.get(NodeReferenceTable.COLUMN_SUMMARY).getAsLong()); - } else { - mergedRef.put(id, nodeReference.get(i).getAsJsonObject()); - } + nodeRefJsonObj.addProperty("front", front); + nodeRefJsonObj.addProperty("behind", behind); + mergedRef.put(id, nodeRefJsonObj); } return mergedRef; diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagService.java similarity index 59% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagService.java index 3bad83c9a..0a2839cf0 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceDagService.java @@ -20,10 +20,11 @@ package org.skywalking.apm.collector.ui.service; import com.google.gson.JsonArray; import com.google.gson.JsonObject; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.ui.dao.INodeComponentDAO; -import org.skywalking.apm.collector.ui.dao.INodeMappingDAO; -import org.skywalking.apm.collector.ui.dao.INodeReferenceDAO; +import org.skywalking.apm.collector.core.module.ModuleManager; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.INodeComponentUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeMappingUIDAO; +import org.skywalking.apm.collector.storage.dao.INodeReferenceUIDAO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,18 +35,27 @@ public class TraceDagService { private final Logger logger = LoggerFactory.getLogger(TraceDagService.class); + private final INodeComponentUIDAO nodeComponentDAO; + private final INodeMappingUIDAO nodeMappingDAO; + private final INodeReferenceUIDAO nodeRefSumDAO; + private final ModuleManager moduleManager; + + public TraceDagService(ModuleManager moduleManager) { + this.moduleManager = moduleManager; + this.nodeComponentDAO = moduleManager.find(StorageModule.NAME).getService(INodeComponentUIDAO.class); + this.nodeMappingDAO = moduleManager.find(StorageModule.NAME).getService(INodeMappingUIDAO.class); + this.nodeRefSumDAO = moduleManager.find(StorageModule.NAME).getService(INodeReferenceUIDAO.class); + } + public JsonObject load(long startTime, long endTime) { logger.debug("startTime: {}, endTime: {}", startTime, endTime); - INodeComponentDAO nodeComponentDAO = (INodeComponentDAO)DAOContainer.INSTANCE.get(INodeComponentDAO.class.getName()); JsonArray nodeComponentArray = nodeComponentDAO.load(startTime, endTime); - INodeMappingDAO nodeMappingDAO = (INodeMappingDAO)DAOContainer.INSTANCE.get(INodeMappingDAO.class.getName()); JsonArray nodeMappingArray = nodeMappingDAO.load(startTime, endTime); - INodeReferenceDAO nodeRefSumDAO = (INodeReferenceDAO)DAOContainer.INSTANCE.get(INodeReferenceDAO.class.getName()); JsonArray nodeRefSumArray = nodeRefSumDAO.load(startTime, endTime); - TraceDagDataBuilder builder = new TraceDagDataBuilder(); + TraceDagDataBuilder builder = new TraceDagDataBuilder(moduleManager); JsonObject traceDag = builder.build(nodeComponentArray, nodeMappingArray, nodeRefSumArray); return traceDag; diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java similarity index 86% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java rename to apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java index 337e793a5..56678c3d8 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/service/TraceStackService.java @@ -22,15 +22,17 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import java.util.ArrayList; import java.util.List; -import org.skywalking.apm.collector.cache.ApplicationCache; -import org.skywalking.apm.collector.cache.ServiceNameCache; +import org.skywalking.apm.collector.cache.CacheModule; +import org.skywalking.apm.collector.cache.service.ApplicationCacheService; +import org.skywalking.apm.collector.cache.service.ServiceNameCacheService; +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.ObjectUtils; import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.ui.dao.IGlobalTraceDAO; -import org.skywalking.apm.collector.ui.dao.ISegmentDAO; +import org.skywalking.apm.collector.storage.StorageModule; +import org.skywalking.apm.collector.storage.dao.IGlobalTraceUIDAO; +import org.skywalking.apm.collector.storage.dao.ISegmentUIDAO; import org.skywalking.apm.network.proto.SpanObject; import org.skywalking.apm.network.proto.TraceSegmentObject; import org.skywalking.apm.network.proto.TraceSegmentReference; @@ -41,10 +43,19 @@ import org.skywalking.apm.network.proto.UniqueId; */ public class TraceStackService { - public JsonArray load(String globalTraceId) { - IGlobalTraceDAO globalTraceDAO = (IGlobalTraceDAO)DAOContainer.INSTANCE.get(IGlobalTraceDAO.class.getName()); - ISegmentDAO segmentDAO = (ISegmentDAO)DAOContainer.INSTANCE.get(ISegmentDAO.class.getName()); + private final IGlobalTraceUIDAO globalTraceDAO; + private final ISegmentUIDAO segmentDAO; + private final ApplicationCacheService applicationCacheService; + private final ServiceNameCacheService serviceNameCacheService; + public TraceStackService(ModuleManager moduleManager) { + this.globalTraceDAO = moduleManager.find(StorageModule.NAME).getService(IGlobalTraceUIDAO.class); + this.segmentDAO = moduleManager.find(StorageModule.NAME).getService(ISegmentUIDAO.class); + this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class); + this.serviceNameCacheService = moduleManager.find(CacheModule.NAME).getService(ServiceNameCacheService.class); + } + + public JsonArray load(String globalTraceId) { List spans = new ArrayList<>(); List segmentIds = globalTraceDAO.getSegmentIds(globalTraceId); if (CollectionUtils.isNotEmpty(segmentIds)) { @@ -117,14 +128,14 @@ public class TraceStackService { String operationName = spanObject.getOperationName(); if (spanObject.getOperationNameId() != 0) { - String serviceName = ServiceNameCache.get(spanObject.getOperationNameId()); + String serviceName = serviceNameCacheService.get(spanObject.getOperationNameId()); if (StringUtils.isNotEmpty(serviceName)) { operationName = serviceName.split(Const.ID_SPLIT)[1]; } else { operationName = Const.EMPTY_STRING; } } - String applicationCode = ApplicationCache.get(segment.getApplicationId()); + String applicationCode = applicationCacheService.get(segment.getApplicationId()); long cost = spanObject.getEndTime() - spanObject.getStartTime(); if (cost == 0) { diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/resources/META-INF/services/org.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..c045a167a --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-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.ui.jetty.UIModuleJettyProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/pom.xml b/apm-collector/apm-collector-ui/pom.xml index 3c9ae7498..e3520b03b 100644 --- a/apm-collector/apm-collector-ui/pom.xml +++ b/apm-collector/apm-collector-ui/pom.xml @@ -1,22 +1,4 @@ - - @@ -28,7 +10,11 @@ 4.0.0 apm-collector-ui - jar + pom + + collector-ui-define + collector-ui-jetty-provider + @@ -36,25 +22,5 @@ apm-collector-core ${project.version} - - org.skywalking - apm-collector-cluster - ${project.version} - - - org.skywalking - apm-collector-server - ${project.version} - - - org.skywalking - apm-collector-storage - ${project.version} - - - org.skywalking - apm-collector-cache - ${project.version} - - + \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java deleted file mode 100644 index ce7123971..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.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.ui; - -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 UIModuleGroupDefine implements ModuleGroupDefine { - - public static final String GROUP_NAME = "ui"; - private final UIModuleInstaller installer; - - public UIModuleGroupDefine() { - installer = new UIModuleInstaller(); - } - - @Override public String name() { - return GROUP_NAME; - } - - @Override public Context groupContext() { - return new UIModuleContext(GROUP_NAME); - } - - @Override public ModuleInstaller moduleInstaller() { - return installer; - } - - @Override public GroupConfigParser groupConfigParser() { - return null; - } -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java deleted file mode 100644 index 09bf4b72d..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeComponentEsDAO.java +++ /dev/null @@ -1,130 +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.ui.dao; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import org.elasticsearch.action.search.SearchRequestBuilder; -import org.elasticsearch.action.search.SearchResponse; -import org.elasticsearch.action.search.SearchType; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.aggregations.AggregationBuilders; -import org.elasticsearch.search.aggregations.bucket.terms.Terms; -import org.skywalking.apm.collector.cache.ApplicationCache; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.define.node.NodeComponentTable; -import org.skywalking.apm.collector.storage.elasticsearch.dao.EsDAO; -import org.skywalking.apm.network.trace.component.ComponentsDefine; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class NodeComponentEsDAO extends EsDAO implements INodeComponentDAO { - - private final Logger logger = LoggerFactory.getLogger(NodeComponentEsDAO.class); - - @Override public JsonArray load(long startTime, long endTime) { - logger.debug("node component load, start time: {}, end time: {}", startTime, endTime); - JsonArray nodeComponentArray = new JsonArray(); - nodeComponentArray.addAll(aggregationByComponentId(startTime, endTime)); - nodeComponentArray.addAll(aggregationByComponentName(startTime, endTime)); - return nodeComponentArray; - } - - private JsonArray aggregationByComponentId(long startTime, long endTime) { - SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(NodeComponentTable.TABLE); - searchRequestBuilder.setTypes(NodeComponentTable.TABLE_TYPE); - searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); - searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(NodeComponentTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); - searchRequestBuilder.setSize(0); - - searchRequestBuilder.addAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_COMPONENT_ID).field(NodeComponentTable.COLUMN_COMPONENT_ID).size(100) - .subAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_PEER).field(NodeComponentTable.COLUMN_PEER).size(100)) - .subAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_PEER_ID).field(NodeComponentTable.COLUMN_PEER_ID).size(100))); - - SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); - - Terms componentIdTerms = searchResponse.getAggregations().get(NodeComponentTable.COLUMN_COMPONENT_ID); - JsonArray nodeComponentArray = new JsonArray(); - for (Terms.Bucket componentIdBucket : componentIdTerms.getBuckets()) { - int componentId = componentIdBucket.getKeyAsNumber().intValue(); - String componentName = ComponentsDefine.getInstance().getComponentName(componentId); - if (componentId != 0) { - buildComponentArray(componentIdBucket, componentName, nodeComponentArray); - } - } - - return nodeComponentArray; - } - - private JsonArray aggregationByComponentName(long startTime, long endTime) { - SearchRequestBuilder searchRequestBuilder = getClient().prepareSearch(NodeComponentTable.TABLE); - searchRequestBuilder.setTypes(NodeComponentTable.TABLE_TYPE); - searchRequestBuilder.setSearchType(SearchType.DFS_QUERY_THEN_FETCH); - searchRequestBuilder.setQuery(QueryBuilders.rangeQuery(NodeComponentTable.COLUMN_TIME_BUCKET).gte(startTime).lte(endTime)); - searchRequestBuilder.setSize(0); - - searchRequestBuilder.addAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_COMPONENT_NAME).field(NodeComponentTable.COLUMN_COMPONENT_NAME).size(100) - .subAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_PEER).field(NodeComponentTable.COLUMN_PEER).size(100)) - .subAggregation(AggregationBuilders.terms(NodeComponentTable.COLUMN_PEER_ID).field(NodeComponentTable.COLUMN_PEER_ID).size(100))); - - SearchResponse searchResponse = searchRequestBuilder.execute().actionGet(); - - Terms componentNameTerms = searchResponse.getAggregations().get(NodeComponentTable.COLUMN_COMPONENT_NAME); - JsonArray nodeComponentArray = new JsonArray(); - for (Terms.Bucket componentNameBucket : componentNameTerms.getBuckets()) { - String componentName = componentNameBucket.getKeyAsString(); - if (StringUtils.isNotEmpty(componentName)) { - buildComponentArray(componentNameBucket, componentName, nodeComponentArray); - } - } - - return nodeComponentArray; - } - - private void buildComponentArray(Terms.Bucket componentBucket, String componentName, JsonArray nodeComponentArray) { - Terms peerIdTerms = componentBucket.getAggregations().get(NodeComponentTable.COLUMN_PEER_ID); - for (Terms.Bucket peerIdBucket : peerIdTerms.getBuckets()) { - int peerId = peerIdBucket.getKeyAsNumber().intValue(); - - if (peerId != 0) { - String peer = ApplicationCache.get(peerId); - - JsonObject nodeComponentObj = new JsonObject(); - nodeComponentObj.addProperty("componentName", componentName); - nodeComponentObj.addProperty("peer", peer); - nodeComponentArray.add(nodeComponentObj); - } - } - - Terms peerTerms = componentBucket.getAggregations().get(NodeComponentTable.COLUMN_PEER); - for (Terms.Bucket peerBucket : peerTerms.getBuckets()) { - String peer = peerBucket.getKeyAsString(); - - if (StringUtils.isNotEmpty(peer)) { - JsonObject nodeComponentObj = new JsonObject(); - nodeComponentObj.addProperty("componentName", componentName); - nodeComponentObj.addProperty("peer", peer); - nodeComponentArray.add(nodeComponentObj); - } - } - } -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java deleted file mode 100644 index 6c910f295..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/dao/NodeReferenceH2DAO.java +++ /dev/null @@ -1,92 +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.ui.dao; - -import java.sql.ResultSet; -import java.sql.SQLException; - -import org.skywalking.apm.collector.cache.ApplicationCache; -import org.skywalking.apm.collector.client.h2.H2Client; -import org.skywalking.apm.collector.client.h2.H2ClientException; -import org.skywalking.apm.collector.core.util.StringUtils; -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.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - -/** - * @author peng-yongsheng, clevertension - */ -public class NodeReferenceH2DAO extends H2DAO implements INodeReferenceDAO { - private final Logger logger = LoggerFactory.getLogger(NodeReferenceH2DAO.class); - private static final String NODE_REFERENCE_SQL = "select {8}, {9}, {10}, sum({0}) as {0}, sum({1}) as {1}, sum({2}) as {2}, " + - "sum({3}) as {3}, sum({4}) as {4}, sum({5}) as {5} from {6} where {7} >= ? and {7} <= ? group by {8}, {9}, {10} limit 100"; - @Override public JsonArray load(long startTime, long endTime) { - H2Client client = getClient(); - JsonArray nodeRefResSumArray = new JsonArray(); - String sql = SqlBuilder.buildSql(NODE_REFERENCE_SQL, NodeReferenceTable.COLUMN_S1_LTE, - NodeReferenceTable.COLUMN_S3_LTE, NodeReferenceTable.COLUMN_S5_LTE, - NodeReferenceTable.COLUMN_S5_GT, NodeReferenceTable.COLUMN_SUMMARY, - NodeReferenceTable.COLUMN_ERROR, NodeReferenceTable.TABLE, NodeReferenceTable.COLUMN_TIME_BUCKET, - NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID, NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID, NodeReferenceTable.COLUMN_BEHIND_PEER); - - Object[] params = new Object[]{startTime, endTime}; - try (ResultSet rs = client.executeQuery(sql, params)) { - while (rs.next()) { - int applicationId = rs.getInt(NodeReferenceTable.COLUMN_FRONT_APPLICATION_ID); - String applicationCode = ApplicationCache.get(applicationId); - int behindApplicationId = rs.getInt(NodeReferenceTable.COLUMN_BEHIND_APPLICATION_ID); - if (behindApplicationId != 0) { - String behindApplicationCode = ApplicationCache.get(behindApplicationId); - - JsonObject nodeRefResSumObj = new JsonObject(); - nodeRefResSumObj.addProperty("front", applicationCode); - nodeRefResSumObj.addProperty("behind", behindApplicationCode); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S1_LTE, rs.getDouble(NodeReferenceTable.COLUMN_S1_LTE)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S3_LTE, rs.getDouble(NodeReferenceTable.COLUMN_S3_LTE)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_LTE, rs.getDouble(NodeReferenceTable.COLUMN_S5_LTE)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_GT, rs.getDouble(NodeReferenceTable.COLUMN_S5_GT)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_ERROR, rs.getDouble(NodeReferenceTable.COLUMN_ERROR)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_SUMMARY, rs.getDouble(NodeReferenceTable.COLUMN_SUMMARY)); - nodeRefResSumArray.add(nodeRefResSumObj); - } - String behindPeer = rs.getString(NodeReferenceTable.COLUMN_BEHIND_PEER); - if (StringUtils.isNotEmpty(behindPeer)) { - JsonObject nodeRefResSumObj = new JsonObject(); - nodeRefResSumObj.addProperty("front", applicationCode); - nodeRefResSumObj.addProperty("behind", behindPeer); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S1_LTE, rs.getDouble(NodeReferenceTable.COLUMN_S1_LTE)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S3_LTE, rs.getDouble(NodeReferenceTable.COLUMN_S3_LTE)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_LTE, rs.getDouble(NodeReferenceTable.COLUMN_S5_LTE)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_S5_GT, rs.getDouble(NodeReferenceTable.COLUMN_S5_GT)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_ERROR, rs.getDouble(NodeReferenceTable.COLUMN_ERROR)); - nodeRefResSumObj.addProperty(NodeReferenceTable.COLUMN_SUMMARY, rs.getDouble(NodeReferenceTable.COLUMN_SUMMARY)); - nodeRefResSumArray.add(nodeRefResSumObj); - } - } - } catch (SQLException | H2ClientException e) { - logger.error(e.getMessage(), e); - } - return nodeRefResSumArray; - } -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.java deleted file mode 100644 index bd47afca4..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfig.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.ui.jetty; - -/** - * @author peng-yongsheng - */ -public class UIJettyConfig { - public static String HOST; - public static int PORT; - public static String CONTEXT_PATH; -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.java deleted file mode 100644 index d65e63e3a..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyConfigParser.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.ui.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 UIJettyConfigParser 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 { - UIJettyConfig.CONTEXT_PATH = "/"; - - if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) { - UIJettyConfig.HOST = "localhost"; - } else { - UIJettyConfig.HOST = (String)config.get(HOST); - } - - if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) { - UIJettyConfig.PORT = 12800; - } else { - UIJettyConfig.PORT = (Integer)config.get(PORT); - } - if (ObjectUtils.isNotEmpty(config) && StringUtils.isNotEmpty(config.get(CONTEXT_PATH))) { - UIJettyConfig.CONTEXT_PATH = (String)config.get(CONTEXT_PATH); - } - } -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java deleted file mode 100644 index 7f01ba0f3..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyModuleDefine.java +++ /dev/null @@ -1,93 +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.ui.jetty; - -import java.util.LinkedList; -import java.util.List; -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; -import org.skywalking.apm.collector.ui.UIModuleDefine; -import org.skywalking.apm.collector.ui.UIModuleGroupDefine; -import org.skywalking.apm.collector.ui.jetty.handler.SegmentTopGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.SpanGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.TraceDagGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.TraceStackGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.instancehealth.InstanceHealthGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetOneTimeBucketHandler; -import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceMetricGetRangeTimeBucketHandler; -import org.skywalking.apm.collector.ui.jetty.handler.instancemetric.InstanceOsInfoGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.servicetree.EntryServiceGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.servicetree.ServiceTreeGetByIdHandler; -import org.skywalking.apm.collector.ui.jetty.handler.time.AllInstanceLastTimeGetHandler; -import org.skywalking.apm.collector.ui.jetty.handler.time.OneInstanceLastTimeGetHandler; - -/** - * @author peng-yongsheng - */ -public class UIJettyModuleDefine extends UIModuleDefine { - - public static final String MODULE_NAME = "jetty"; - - @Override protected String group() { - return UIModuleGroupDefine.GROUP_NAME; - } - - @Override public String name() { - return MODULE_NAME; - } - - @Override protected ModuleConfigParser configParser() { - return new UIJettyConfigParser(); - } - - @Override protected Server server() { - return new JettyServer(UIJettyConfig.HOST, UIJettyConfig.PORT, UIJettyConfig.CONTEXT_PATH); - } - - @Override protected ModuleRegistration registration() { - return new UIJettyModuleRegistration(); - } - - @Override public ClusterDataListener listener() { - return new UIJettyDataListener(); - } - - @Override public List handlerList() { - List handlers = new LinkedList<>(); - handlers.add(new TraceDagGetHandler()); - handlers.add(new SegmentTopGetHandler()); - handlers.add(new TraceStackGetHandler()); - handlers.add(new SpanGetHandler()); - handlers.add(new OneInstanceLastTimeGetHandler()); - handlers.add(new AllInstanceLastTimeGetHandler()); - handlers.add(new InstanceHealthGetHandler()); - handlers.add(new ApplicationsGetHandler()); - handlers.add(new InstanceOsInfoGetHandler()); - handlers.add(new InstanceMetricGetOneTimeBucketHandler()); - handlers.add(new InstanceMetricGetRangeTimeBucketHandler()); - handlers.add(new EntryServiceGetHandler()); - handlers.add(new ServiceTreeGetByIdHandler()); - return handlers; - } -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java deleted file mode 100644 index 0ac5c7066..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/ApplicationService.java +++ /dev/null @@ -1,34 +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.ui.service; - -import com.google.gson.JsonArray; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.ui.dao.IInstanceDAO; - -/** - * @author peng-yongsheng - */ -public class ApplicationService { - - public JsonArray getApplications(long startTime, long endTime) { - IInstanceDAO instanceDAO = (IInstanceDAO)DAOContainer.INSTANCE.get(IInstanceDAO.class.getName()); - return instanceDAO.getApplications(startTime, endTime); - } -} diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.java deleted file mode 100644 index fc7177720..000000000 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/service/SegmentTopService.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.ui.service; - -import com.google.gson.JsonObject; -import java.util.LinkedList; -import java.util.List; -import org.skywalking.apm.collector.core.util.StringUtils; -import org.skywalking.apm.collector.storage.dao.DAOContainer; -import org.skywalking.apm.collector.ui.dao.IGlobalTraceDAO; -import org.skywalking.apm.collector.ui.dao.ISegmentCostDAO; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author peng-yongsheng - */ -public class SegmentTopService { - - private final Logger logger = LoggerFactory.getLogger(SegmentTopService.class); - - public JsonObject loadTop(long startTime, long endTime, long minCost, long maxCost, String operationName, - String globalTraceId, ISegmentCostDAO.Error error, int applicationId, int limit, int from, - ISegmentCostDAO.Sort sort) { - logger.debug("startTime: {}, endTime: {}, minCost: {}, maxCost: {}, operationName: {}, globalTraceId: {}, error: {}, applicationId: {}, limit: {}, from: {}", startTime, endTime, minCost, maxCost, operationName, globalTraceId, error, applicationId, limit, from); - - List segmentIds = new LinkedList<>(); - if (StringUtils.isNotEmpty(globalTraceId)) { - IGlobalTraceDAO globalTraceDAO = (IGlobalTraceDAO)DAOContainer.INSTANCE.get(IGlobalTraceDAO.class.getName()); - segmentIds = globalTraceDAO.getSegmentIds(globalTraceId); - } - ISegmentCostDAO segmentCostDAO = (ISegmentCostDAO)DAOContainer.INSTANCE.get(ISegmentCostDAO.class.getName()); - return segmentCostDAO.loadTop(startTime, endTime, minCost, maxCost, operationName, error, applicationId, segmentIds, limit, from, sort); - } -} diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define deleted file mode 100644 index a606efedb..000000000 --- a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/es_dao.define +++ /dev/null @@ -1,14 +0,0 @@ -org.skywalking.apm.collector.ui.dao.NodeComponentEsDAO -org.skywalking.apm.collector.ui.dao.NodeMappingEsDAO -org.skywalking.apm.collector.ui.dao.NodeReferenceEsDAO -org.skywalking.apm.collector.ui.dao.SegmentCostEsDAO -org.skywalking.apm.collector.ui.dao.GlobalTraceEsDAO -org.skywalking.apm.collector.ui.dao.SegmentEsDAO -org.skywalking.apm.collector.ui.dao.InstanceEsDAO -org.skywalking.apm.collector.ui.dao.InstPerformanceEsDAO -org.skywalking.apm.collector.ui.dao.CpuMetricEsDAO -org.skywalking.apm.collector.ui.dao.GCMetricEsDAO -org.skywalking.apm.collector.ui.dao.MemoryMetricEsDAO -org.skywalking.apm.collector.ui.dao.MemoryPoolMetricEsDAO -org.skywalking.apm.collector.ui.dao.ServiceEntryEsDAO -org.skywalking.apm.collector.ui.dao.ServiceReferenceEsDAO \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define deleted file mode 100644 index 35b83f180..000000000 --- a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/group.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.ui.UIModuleGroupDefine \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define deleted file mode 100644 index bc4d41f8b..000000000 --- a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/h2_dao.define +++ /dev/null @@ -1,14 +0,0 @@ -org.skywalking.apm.collector.ui.dao.NodeComponentH2DAO -org.skywalking.apm.collector.ui.dao.NodeMappingH2DAO -org.skywalking.apm.collector.ui.dao.NodeReferenceH2DAO -org.skywalking.apm.collector.ui.dao.SegmentCostH2DAO -org.skywalking.apm.collector.ui.dao.GlobalTraceH2DAO -org.skywalking.apm.collector.ui.dao.SegmentH2DAO -org.skywalking.apm.collector.ui.dao.InstanceH2DAO -org.skywalking.apm.collector.ui.dao.InstPerformanceH2DAO -org.skywalking.apm.collector.ui.dao.CpuMetricH2DAO -org.skywalking.apm.collector.ui.dao.GCMetricH2DAO -org.skywalking.apm.collector.ui.dao.MemoryMetricH2DAO -org.skywalking.apm.collector.ui.dao.MemoryPoolMetricH2DAO -org.skywalking.apm.collector.ui.dao.ServiceEntryH2DAO -org.skywalking.apm.collector.ui.dao.ServiceReferenceH2DAO \ No newline at end of file diff --git a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define deleted file mode 100644 index 285a6d99d..000000000 --- a/apm-collector/apm-collector-ui/src/main/resources/META-INF/defines/module.define +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.apm.collector.ui.jetty.UIJettyModuleDefine \ No newline at end of file diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml index 1a5fbe42b..03ee98a81 100644 --- a/apm-collector/pom.xml +++ b/apm-collector/pom.xml @@ -17,33 +17,36 @@ ~ Project repository: https://github.com/OpenSkywalking/skywalking --> - - 4.0.0 - - apm-collector-cluster - apm-collector-core - apm-collector-queue - apm-collector-storage - apm-collector-client - apm-collector-server - apm-collector-agentstream - apm-collector-ui - apm-collector-boot - apm-collector-stream - apm-collector-agentserver - apm-collector-agentregister - apm-collector-agentjvm - apm-collector-remote - apm-collector-cache - + apm org.skywalking 3.2.4-2017 + 4.0.0 + apm-collector + pom + + apm-collector-boot + apm-collector-ui + apm-collector-agent + apm-collector-core + apm-collector-component + apm-collector-cluster + apm-collector-cache + apm-collector-storage + apm-collector-naming + apm-collector-grpc-manager + apm-collector-jetty-manager + apm-collector-remote + apm-collector-stream + apm-collector-queue + apm-collector-instrument + diff --git a/apm-commons/apm-datacarrier/src/test/java/org/skywalking/apm/commons/datacarrier/consumer/ConsumerTest.java b/apm-commons/apm-datacarrier/src/test/java/org/skywalking/apm/commons/datacarrier/consumer/ConsumerTest.java index d101f76e1..ac23bbfb1 100644 --- a/apm-commons/apm-datacarrier/src/test/java/org/skywalking/apm/commons/datacarrier/consumer/ConsumerTest.java +++ b/apm-commons/apm-datacarrier/src/test/java/org/skywalking/apm/commons/datacarrier/consumer/ConsumerTest.java @@ -83,7 +83,7 @@ public class ConsumerTest { } @Test - public void testConsumerOnError() { + public void testConsumerOnError() throws InterruptedException { final DataCarrier carrier = new DataCarrier(2, 100); for (int i = 0; i < 200; i++) { @@ -94,6 +94,8 @@ public class ConsumerTest { consumer.onError = true; carrier.consume(consumer, 5); + Thread.sleep(3 * 1000L); + Assert.assertTrue(IS_OCCUR_ERROR); } diff --git a/apm-network/src/main/proto/TraceSegmentService.proto b/apm-network/src/main/proto/TraceSegmentService.proto index bc6f75817..95eb1de6b 100644 --- a/apm-network/src/main/proto/TraceSegmentService.proto +++ b/apm-network/src/main/proto/TraceSegmentService.proto @@ -26,6 +26,7 @@ message TraceSegmentObject { repeated SpanObject spans = 3; int32 applicationId = 4; int32 applicationInstanceId = 5; + bool isSizeLimited = 6; } message TraceSegmentReference { diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java index 55e58942f..f2903d530 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/conf/Config.java @@ -31,22 +31,27 @@ public class Config { public static class Agent { /** - * Application code is showed in sky-walking-ui. - * Suggestion: set an unique name for each application, one application's nodes share the same code. + * Application code is showed in sky-walking-ui. Suggestion: set an unique name for each application, one + * application's nodes share the same code. */ public static String APPLICATION_CODE = ""; /** - * Negative or zero means off, by default. - * {@link #SAMPLE_N_PER_3_SECS} means sampling N {@link TraceSegment} in 10 seconds tops. + * Negative or zero means off, by default. {@link #SAMPLE_N_PER_3_SECS} means sampling N {@link TraceSegment} in + * 10 seconds tops. */ public static int SAMPLE_N_PER_3_SECS = -1; /** - * If the operation name of the first span is included in this set, - * this segment should be ignored. + * If the operation name of the first span is included in this set, this segment should be ignored. */ public static String IGNORE_SUFFIX = ".jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg"; + + /** + * The max number of spans in a single segment. Through this config item, skywalking keep your application + * memory cost estimated. + */ + public static int SPAN_LIMIT_PER_SEGMENT = 300; } public static class Collector { @@ -63,9 +68,7 @@ public class Config { */ public static long DISCOVERY_CHECK_INTERVAL = 60; /** - * Collector REST-Service address. - * e.g. - * SERVERS="127.0.0.1:8080" for single collector node. + * Collector REST-Service address. e.g. SERVERS="127.0.0.1:8080" for single collector node. * SERVERS="10.2.45.126:8080,10.2.45.127:7600" for multi collector nodes. */ public static String SERVERS = ""; @@ -105,16 +108,15 @@ public class Config { public static String FILE_NAME = "skywalking-api.log"; /** - * Log files directory. - * Default is blank string, means, use "system.out" to output logs. + * Log files directory. Default is blank string, means, use "system.out" to output logs. * * @see {@link WriterFactory#getLogWriter()} */ public static String DIR = ""; /** - * The max size of log file. - * If the size is bigger than this, archive the current file, and write into a new file. + * The max size of log file. If the size is bigger than this, archive the current file, and write into a new + * file. */ public static int MAX_FILE_SIZE = 300 * 1024 * 1024; @@ -129,8 +131,7 @@ public class Config { public static class Plugin { public static class MongoDB { /** - * If true, trace all the parameters, default is false. - * Only trace the operation, not include parameters. + * If true, trace all the parameters, default is false. Only trace the operation, not include parameters. */ public static boolean TRACE_PARAM = false; } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java index bde4d7c72..39d06c449 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/TracingContext.java @@ -21,30 +21,32 @@ package org.skywalking.apm.agent.core.context; import java.util.LinkedList; import java.util.List; import org.skywalking.apm.agent.core.boot.ServiceManager; +import org.skywalking.apm.agent.core.conf.Config; import org.skywalking.apm.agent.core.context.trace.AbstractSpan; import org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.skywalking.apm.agent.core.context.trace.EntrySpan; import org.skywalking.apm.agent.core.context.trace.ExitSpan; import org.skywalking.apm.agent.core.context.trace.LocalSpan; +import org.skywalking.apm.agent.core.context.trace.NoopExitSpan; +import org.skywalking.apm.agent.core.context.trace.NoopSpan; import org.skywalking.apm.agent.core.context.trace.TraceSegment; import org.skywalking.apm.agent.core.context.trace.TraceSegmentRef; +import org.skywalking.apm.agent.core.context.trace.WithPeerInfo; import org.skywalking.apm.agent.core.dictionary.DictionaryManager; import org.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.skywalking.apm.agent.core.dictionary.PossibleFound; import org.skywalking.apm.agent.core.sampling.SamplingService; /** - * The TracingContext represents a core tracing logic controller. - * It build the final {@link TracingContext}, by the stack mechanism, - * which is similar with the codes work. + * The TracingContext represents a core tracing logic controller. It build the final {@link + * TracingContext}, by the stack mechanism, which is similar with the codes work. * - * In opentracing concept, it means, all spans in a segment tracing context(thread) - * are CHILD_OF relationship, but no FOLLOW_OF. + * In opentracing concept, it means, all spans in a segment tracing context(thread) are CHILD_OF relationship, but no + * FOLLOW_OF. * - * In skywalking core concept, FOLLOW_OF is an abstract concept - * when cross-process MQ or cross-thread async/batch tasks happen, - * we used {@link TraceSegmentRef} for these scenarios. - * Check {@link TraceSegmentRef} which is from {@link ContextCarrier} or {@link ContextSnapshot}. + * In skywalking core concept, FOLLOW_OF is an abstract concept when cross-process MQ or cross-thread async/batch tasks + * happen, we used {@link TraceSegmentRef} for these scenarios. Check {@link TraceSegmentRef} which is from {@link + * ContextCarrier} or {@link ContextSnapshot}. * * @author wusheng */ @@ -60,13 +62,11 @@ public class TracingContext implements AbstractTracerContext { private TraceSegment segment; /** - * Active spans stored in a Stack, usually called 'ActiveSpanStack'. - * This {@link LinkedList} is the in-memory storage-structure. - *

- * I use {@link LinkedList#removeLast()}, {@link LinkedList#addLast(Object)} and {@link LinkedList#last} instead of - * {@link #pop()}, {@link #push(AbstractTracingSpan)}, {@link #peek()} + * Active spans stored in a Stack, usually called 'ActiveSpanStack'. This {@link LinkedList} is the in-memory + * storage-structure.

I use {@link LinkedList#removeLast()}, {@link LinkedList#addLast(Object)} and {@link + * LinkedList#last} instead of {@link #pop()}, {@link #push(AbstractSpan)}, {@link #peek()} */ - private LinkedList activeSpanStack = new LinkedList(); + private LinkedList activeSpanStack = new LinkedList(); /** * A counter for the next span. @@ -93,21 +93,24 @@ public class TracingContext implements AbstractTracerContext { */ @Override public void inject(ContextCarrier carrier) { - AbstractTracingSpan span = this.activeSpan(); + AbstractSpan span = this.activeSpan(); if (!span.isExit()) { throw new IllegalStateException("Inject can be done only in Exit Span"); } - ExitSpan exitSpan = (ExitSpan)span; + + WithPeerInfo spanWithPeer = (WithPeerInfo)span; + String peer = spanWithPeer.getPeer(); + int peerId = spanWithPeer.getPeerId(); carrier.setTraceSegmentId(this.segment.getTraceSegmentId()); carrier.setSpanId(span.getSpanId()); carrier.setParentApplicationInstanceId(segment.getApplicationInstanceId()); - if (DictionaryUtil.isNull(exitSpan.getPeerId())) { - carrier.setPeerHost(exitSpan.getPeer()); + if (DictionaryUtil.isNull(peerId)) { + carrier.setPeerHost(peer); } else { - carrier.setPeerId(exitSpan.getPeerId()); + carrier.setPeerId(peerId); } List refs = this.segment.getRefs(); int operationId; @@ -119,7 +122,7 @@ public class TracingContext implements AbstractTracerContext { operationName = ref.getEntryOperationName(); entryApplicationInstanceId = ref.getEntryApplicationInstanceId(); } else { - AbstractTracingSpan firstSpan = first(); + AbstractSpan firstSpan = first(); operationId = firstSpan.getOperationId(); operationName = firstSpan.getOperationName(); entryApplicationInstanceId = this.segment.getApplicationInstanceId(); @@ -169,7 +172,7 @@ public class TracingContext implements AbstractTracerContext { int entryOperationId; String entryOperationName; int entryApplicationInstanceId; - AbstractTracingSpan firstSpan = first(); + AbstractSpan firstSpan = first(); if (refs != null && refs.size() > 0) { TraceSegmentRef ref = refs.get(0); entryOperationId = ref.getEntryOperationId(); @@ -225,8 +228,12 @@ public class TracingContext implements AbstractTracerContext { */ @Override public AbstractSpan createEntrySpan(final String operationName) { - AbstractTracingSpan entrySpan; - final AbstractTracingSpan parentSpan = peek(); + if (isLimitMechanismWorking()) { + NoopSpan span = new NoopSpan(); + return push(span); + } + AbstractSpan entrySpan; + final AbstractSpan parentSpan = peek(); final int parentSpanId = parentSpan == null ? -1 : parentSpan.getSpanId(); if (parentSpan == null) { entrySpan = (AbstractTracingSpan)DictionaryManager.findOperationNameCodeSection() @@ -269,7 +276,11 @@ public class TracingContext implements AbstractTracerContext { */ @Override public AbstractSpan createLocalSpan(final String operationName) { - AbstractTracingSpan parentSpan = peek(); + if (isLimitMechanismWorking()) { + NoopSpan span = new NoopSpan(); + return push(span); + } + AbstractSpan parentSpan = peek(); final int parentSpanId = parentSpan == null ? -1 : parentSpan.getSpanId(); AbstractTracingSpan span = (AbstractTracingSpan)DictionaryManager.findOperationNameCodeSection() .findOrPrepare4Register(segment.getApplicationId(), operationName) @@ -298,17 +309,21 @@ public class TracingContext implements AbstractTracerContext { */ @Override public AbstractSpan createExitSpan(final String operationName, final String remotePeer) { - AbstractTracingSpan exitSpan; - AbstractTracingSpan parentSpan = peek(); + AbstractSpan exitSpan; + AbstractSpan parentSpan = peek(); if (parentSpan != null && parentSpan.isExit()) { exitSpan = parentSpan; } else { final int parentSpanId = parentSpan == null ? -1 : parentSpan.getSpanId(); - exitSpan = (AbstractTracingSpan)DictionaryManager.findApplicationCodeSection() + exitSpan = (AbstractSpan)DictionaryManager.findApplicationCodeSection() .find(remotePeer).doInCondition( new PossibleFound.FoundAndObtain() { @Override public Object doProcess(final int peerId) { + if (isLimitMechanismWorking()) { + return new NoopExitSpan(peerId); + } + return DictionaryManager.findOperationNameCodeSection() .findOnly(segment.getApplicationId(), operationName) .doInCondition( @@ -328,6 +343,10 @@ public class TracingContext implements AbstractTracerContext { new PossibleFound.NotFoundAndObtain() { @Override public Object doProcess() { + if (isLimitMechanismWorking()) { + return new NoopExitSpan(remotePeer); + } + return DictionaryManager.findOperationNameCodeSection() .findOnly(segment.getApplicationId(), operationName) .doInCondition( @@ -354,8 +373,8 @@ public class TracingContext implements AbstractTracerContext { * @return the active span of current context, the top element of {@link #activeSpanStack} */ @Override - public AbstractTracingSpan activeSpan() { - AbstractTracingSpan span = peek(); + public AbstractSpan activeSpan() { + AbstractSpan span = peek(); if (span == null) { throw new IllegalStateException("No active span."); } @@ -363,16 +382,21 @@ public class TracingContext implements AbstractTracerContext { } /** - * Stop the given span, if and only if this one is the top element of {@link #activeSpanStack}. - * Because the tracing core must make sure the span must match in a stack module, like any program did. + * Stop the given span, if and only if this one is the top element of {@link #activeSpanStack}. Because the tracing + * core must make sure the span must match in a stack module, like any program did. * * @param span to finish */ @Override public void stopSpan(AbstractSpan span) { - AbstractTracingSpan lastSpan = peek(); + AbstractSpan lastSpan = peek(); if (lastSpan == span) { - if (lastSpan.finish(segment)) { + if (lastSpan instanceof AbstractTracingSpan) { + AbstractTracingSpan toFinishSpan = (AbstractTracingSpan)lastSpan; + if (toFinishSpan.finish(segment)) { + pop(); + } + } else { pop(); } } else { @@ -389,7 +413,7 @@ public class TracingContext implements AbstractTracerContext { * TracingContext.ListenerManager} */ private void finish() { - TraceSegment finishedSegment = segment.finish(); + TraceSegment finishedSegment = segment.finish(isLimitMechanismWorking()); /** * Recheck the segment if the segment contains only one span. * Because in the runtime, can't sure this segment is part of distributed trace. @@ -421,9 +445,9 @@ public class TracingContext implements AbstractTracerContext { } /** - * Notify the {@link TracingContext.ListenerManager} about the given {@link TraceSegment} have finished. - * And trigger {@link TracingContext.ListenerManager} to notify all {@link #LISTENERS} 's - * {@link TracingContextListener#afterFinished(TraceSegment)} + * Notify the {@link TracingContext.ListenerManager} about the given {@link TraceSegment} have finished. And + * trigger {@link TracingContext.ListenerManager} to notify all {@link #LISTENERS} 's {@link + * TracingContextListener#afterFinished(TraceSegment)} * * @param finishedSegment */ @@ -445,7 +469,7 @@ public class TracingContext implements AbstractTracerContext { /** * @return the top element of 'ActiveSpanStack', and remove it. */ - private AbstractTracingSpan pop() { + private AbstractSpan pop() { return activeSpanStack.removeLast(); } @@ -454,7 +478,7 @@ public class TracingContext implements AbstractTracerContext { * * @param span */ - private AbstractTracingSpan push(AbstractTracingSpan span) { + private AbstractSpan push(AbstractSpan span) { activeSpanStack.addLast(span); return span; } @@ -462,14 +486,18 @@ public class TracingContext implements AbstractTracerContext { /** * @return the top element of 'ActiveSpanStack' only. */ - private AbstractTracingSpan peek() { + private AbstractSpan peek() { if (activeSpanStack.isEmpty()) { return null; } return activeSpanStack.getLast(); } - private AbstractTracingSpan first() { + private AbstractSpan first() { return activeSpanStack.getFirst(); } + + private boolean isLimitMechanismWorking() { + return spanIdGenerator >= Config.Agent.SPAN_LIMIT_PER_SEGMENT; + } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java index 9d0d2097f..7ba4344e1 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java @@ -22,8 +22,7 @@ import java.util.Map; import org.skywalking.apm.network.trace.component.Component; /** - * The AbstractSpan represents the span's skeleton, - * which contains all open methods. + * The AbstractSpan represents the span's skeleton, which contains all open methods. * * @author wusheng */ @@ -37,8 +36,8 @@ public interface AbstractSpan { AbstractSpan setComponent(Component component); /** - * Only use this method in explicit instrumentation, like opentracing-skywalking-bridge. - * It it higher recommend don't use this for performance consideration. + * Only use this method in explicit instrumentation, like opentracing-skywalking-bridge. It it higher recommend + * don't use this for performance consideration. * * @param componentName * @return the span for chaining. @@ -89,4 +88,24 @@ public interface AbstractSpan { * @return this Span instance, for chaining */ AbstractSpan setOperationName(String operationName); + + /** + * Start a span. + * + * @return this Span instance, for chaining + */ + AbstractSpan start(); + + /** + * Get the id of span + * + * @return id value. + */ + int getSpanId(); + + int getOperationId(); + + String getOperationName(); + + AbstractSpan setOperationId(int operationId); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java index 41920a199..8ef9ea275 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java @@ -29,8 +29,8 @@ import org.skywalking.apm.network.proto.SpanType; import org.skywalking.apm.network.trace.component.Component; /** - * The AbstractTracingSpan represents a group of {@link AbstractSpan} implementations, - * which belongs a real distributed trace. + * The AbstractTracingSpan represents a group of {@link AbstractSpan} implementations, which belongs a real + * distributed trace. * * @author wusheng */ @@ -59,9 +59,7 @@ public abstract class AbstractTracingSpan implements AbstractSpan { protected String componentName; /** - * Log is a concept from OpenTracing spec. - *

- * {@see https://github.com/opentracing/specification/blob/master/specification.md#log-structured-data} + * Log is a concept from OpenTracing spec.

{@see https://github.com/opentracing/specification/blob/master/specification.md#log-structured-data} */ protected List logs; @@ -94,8 +92,8 @@ public abstract class AbstractTracingSpan implements AbstractSpan { } /** - * Finish the active Span. - * When it is finished, it will be archived by the given {@link TraceSegment}, which owners it. + * Finish the active Span. When it is finished, it will be archived by the given {@link TraceSegment}, which owners + * it. * * @param owner of the Span. */ @@ -105,6 +103,7 @@ public abstract class AbstractTracingSpan implements AbstractSpan { return true; } + @Override public AbstractTracingSpan start() { this.startTime = System.currentTimeMillis(); return this; @@ -150,8 +149,8 @@ public abstract class AbstractTracingSpan implements AbstractSpan { } /** - * In the scope of this span tracing context, error occurred, - * in auto-instrumentation mechanism, almost means throw an exception. + * In the scope of this span tracing context, error occurred, in auto-instrumentation mechanism, almost means throw + * an exception. * * @return span instance, for chaining. */ @@ -162,8 +161,8 @@ public abstract class AbstractTracingSpan implements AbstractSpan { } /** - * Set the operation name, just because these is not compress dictionary value for this name. - * Use the entire string temporarily, the agent will compress this name in async mode. + * Set the operation name, just because these is not compress dictionary value for this name. Use the entire string + * temporarily, the agent will compress this name in async mode. * * @param operationName * @return span instance, for chaining. @@ -181,20 +180,24 @@ public abstract class AbstractTracingSpan implements AbstractSpan { * @param operationId * @return span instance, for chaining. */ + @Override public AbstractTracingSpan setOperationId(int operationId) { this.operationId = operationId; this.operationName = null; return this; } + @Override public int getSpanId() { return spanId; } + @Override public int getOperationId() { return operationId; } + @Override public String getOperationName() { return operationName; } @@ -206,8 +209,7 @@ public abstract class AbstractTracingSpan implements AbstractSpan { } /** - * Set the component of this span, with internal supported. - * Highly recommend to use this way. + * Set the component of this span, with internal supported. Highly recommend to use this way. * * @param component * @return span instance, for chaining. @@ -219,8 +221,7 @@ public abstract class AbstractTracingSpan implements AbstractSpan { } /** - * Set the component name. - * By using this, cost more memory and network. + * Set the component name. By using this, cost more memory and network. * * @param componentName * @return span instance, for chaining. diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java index 07c054d44..329c019be 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/ExitSpan.java @@ -35,7 +35,7 @@ import org.skywalking.apm.network.trace.component.Component; * * @author wusheng */ -public class ExitSpan extends StackBasedTracingSpan { +public class ExitSpan extends StackBasedTracingSpan implements WithPeerInfo { private String peer; private int peerId; @@ -147,10 +147,12 @@ public class ExitSpan extends StackBasedTracingSpan { } } + @Override public int getPeerId() { return peerId; } + @Override public String getPeer() { return peer; } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalAsyncWorkerRef.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopExitSpan.java similarity index 58% rename from apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalAsyncWorkerRef.java rename to apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopExitSpan.java index 1451a3549..c8c1ec69b 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/LocalAsyncWorkerRef.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopExitSpan.java @@ -16,24 +16,33 @@ * Project repository: https://github.com/OpenSkywalking/skywalking */ -package org.skywalking.apm.collector.stream.worker; +package org.skywalking.apm.agent.core.context.trace; -import org.skywalking.apm.collector.core.queue.QueueEventHandler; +public class NoopExitSpan extends NoopSpan implements WithPeerInfo { -/** - * @author peng-yongsheng - */ -public class LocalAsyncWorkerRef extends WorkerRef { + private String peer; + private int peerId; - private QueueEventHandler queueEventHandler; + public NoopExitSpan(int peerId) { + this.peerId = peerId; + } - public LocalAsyncWorkerRef(Role role, QueueEventHandler queueEventHandler) { - super(role); - this.queueEventHandler = queueEventHandler; + public NoopExitSpan(String peer) { + this.peer = peer; } @Override - public void tell(Object message) throws WorkerInvokeException { - queueEventHandler.tell(message); + public int getPeerId() { + return peerId; + } + + @Override + public String getPeer() { + return peer; + } + + @Override + public boolean isExit() { + return true; } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java index 8f129d643..da4e735f2 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/NoopSpan.java @@ -78,4 +78,24 @@ public class NoopSpan implements AbstractSpan { @Override public AbstractSpan setOperationName(String operationName) { return this; } + + @Override public AbstractSpan start() { + return this; + } + + @Override public int getSpanId() { + return 0; + } + + @Override public int getOperationId() { + return 0; + } + + @Override public String getOperationName() { + return ""; + } + + @Override public AbstractSpan setOperationId(int operationId) { + return this; + } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java index 597edaa9e..244b5c62c 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/TraceSegment.java @@ -26,68 +26,51 @@ import org.skywalking.apm.agent.core.context.ids.DistributedTraceIds; import org.skywalking.apm.agent.core.context.ids.GlobalIdGenerator; import org.skywalking.apm.agent.core.context.ids.ID; import org.skywalking.apm.agent.core.context.ids.NewDistributedTraceId; -import org.skywalking.apm.agent.core.logging.api.ILog; -import org.skywalking.apm.agent.core.logging.api.LogManager; import org.skywalking.apm.network.proto.TraceSegmentObject; import org.skywalking.apm.network.proto.UpstreamSegment; /** - * {@link TraceSegment} is a segment or fragment of the distributed trace. - * {@see https://github.com/opentracing/specification/blob/master/specification.md#the-opentracing-data-model} - * A {@link - * TraceSegment} means the segment, which exists in current {@link Thread}. And the distributed trace is formed by multi - * {@link TraceSegment}s, because the distributed trace crosses multi-processes, multi-threads. - *

+ * {@link TraceSegment} is a segment or fragment of the distributed trace. {@see https://github.com/opentracing/specification/blob/master/specification.md#the-opentracing-data-model} + * A {@link TraceSegment} means the segment, which exists in current {@link Thread}. And the distributed trace is formed + * by multi {@link TraceSegment}s, because the distributed trace crosses multi-processes, multi-threads.

* * @author wusheng */ public class TraceSegment { - private static final ILog logger = LogManager.getLogger(TraceSegment.class); - - private static final String ID_TYPE = "S"; - /** - * The id of this trace segment. - * Every segment has its unique-global-id. + * The id of this trace segment. Every segment has its unique-global-id. */ private ID traceSegmentId; /** - * The refs of parent trace segments, except the primary one. - * For most RPC call, {@link #refs} contains only one element, - * but if this segment is a start span of batch process, the segment faces multi parents, - * at this moment, we use this {@link #refs} to link them. + * The refs of parent trace segments, except the primary one. For most RPC call, {@link #refs} contains only one + * element, but if this segment is a start span of batch process, the segment faces multi parents, at this moment, + * we use this {@link #refs} to link them. */ private List refs; /** - * The spans belong to this trace segment. - * They all have finished. - * All active spans are hold and controlled by "skywalking-api" module. + * The spans belong to this trace segment. They all have finished. All active spans are hold and controlled by + * "skywalking-api" module. */ private List spans; /** * The relatedGlobalTraces represent a set of all related trace. Most time it contains only one * element, because only one parent {@link TraceSegment} exists, but, in batch scenario, the num becomes greater - * than 1, also meaning multi-parents {@link TraceSegment}. - *

- * The difference between relatedGlobalTraces and {@link #refs} is: - * {@link #refs} targets this {@link TraceSegment}'s direct parent, - *

- * and - *

- * relatedGlobalTraces targets this {@link TraceSegment}'s related call chain, a call chain contains - * multi {@link TraceSegment}s, only using {@link #refs} is not enough for analysis and ui. + * than 1, also meaning multi-parents {@link TraceSegment}.

The difference between + * relatedGlobalTraces and {@link #refs} is: {@link #refs} targets this {@link TraceSegment}'s direct + * parent,

and

relatedGlobalTraces targets this {@link TraceSegment}'s related call chain, a + * call chain contains multi {@link TraceSegment}s, only using {@link #refs} is not enough for analysis and ui. */ private DistributedTraceIds relatedGlobalTraces; private boolean ignore = false; + private boolean isSizeLimited = false; + /** - * Create a default/empty trace segment, - * with current time as start time, - * and generate a new segment id. + * Create a default/empty trace segment, with current time as start time, and generate a new segment id. */ public TraceSegment() { this.traceSegmentId = GlobalIdGenerator.generate(); @@ -118,8 +101,8 @@ public class TraceSegment { } /** - * After {@link AbstractSpan} is finished, as be controller by "skywalking-api" module, - * notify the {@link TraceSegment} to archive it. + * After {@link AbstractSpan} is finished, as be controller by "skywalking-api" module, notify the {@link + * TraceSegment} to archive it. * * @param finishedSpan */ @@ -128,11 +111,10 @@ public class TraceSegment { } /** - * Finish this {@link TraceSegment}. - *

- * return this, for chaining + * Finish this {@link TraceSegment}.

return this, for chaining */ - public TraceSegment finish() { + public TraceSegment finish(boolean isSizeLimited) { + this.isSizeLimited = isSizeLimited; return this; } @@ -195,6 +177,7 @@ public class TraceSegment { } traceSegmentBuilder.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID); traceSegmentBuilder.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID); + traceSegmentBuilder.setIsSizeLimited(this.isSizeLimited); upstreamBuilder.setSegment(traceSegmentBuilder.build().toByteString()); return upstreamBuilder.build(); diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/WithPeerInfo.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/WithPeerInfo.java new file mode 100644 index 000000000..4c6a30f74 --- /dev/null +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/WithPeerInfo.java @@ -0,0 +1,28 @@ +/* + * 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.agent.core.context.trace; + +/** + * @author wusheng + */ +public interface WithPeerInfo { + int getPeerId(); + + String getPeer(); +} diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/CMSCollectorModule.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/CMSCollectorModule.java index edf086f8f..a44d56ebe 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/CMSCollectorModule.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/CMSCollectorModule.java @@ -29,27 +29,27 @@ public class CMSCollectorModule extends MemoryPoolModule { super(beans); } - @Override protected String getPermName() { - return "CMS Perm Gen"; + @Override protected String[] getPermNames() { + return new String[] {"CMS Perm Gen", "Compressed Class Space"}; } - @Override protected String getCodeCacheName() { - return "Code Cache"; + @Override protected String[] getCodeCacheNames() { + return new String[] {"Code Cache"}; } - @Override protected String getEdenName() { - return "Par Eden Space"; + @Override protected String[] getEdenNames() { + return new String[] {"Par Eden Space"}; } - @Override protected String getOldName() { - return "CMS Old Gen"; + @Override protected String[] getOldNames() { + return new String[] {"CMS Old Gen"}; } - @Override protected String getSurvivorName() { - return "Par Survivor Space"; + @Override protected String[] getSurvivorNames() { + return new String[] {"Par Survivor Space"}; } - @Override protected String getMetaspaceName() { - return "Metaspace"; + @Override protected String[] getMetaspaceNames() { + return new String[] {"Metaspace"}; } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/G1CollectorModule.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/G1CollectorModule.java index 60a722cea..2b3fac354 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/G1CollectorModule.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/G1CollectorModule.java @@ -29,27 +29,27 @@ public class G1CollectorModule extends MemoryPoolModule { super(beans); } - @Override protected String getPermName() { - return "G1 Perm Gen"; + @Override protected String[] getPermNames() { + return new String[] {"G1 Perm Gen", "Compressed Class Space"}; } - @Override protected String getCodeCacheName() { - return "Code Cache"; + @Override protected String[] getCodeCacheNames() { + return new String[] {"Code Cache"}; } - @Override protected String getEdenName() { - return "G1 Eden Space"; + @Override protected String[] getEdenNames() { + return new String[] {"G1 Eden Space"}; } - @Override protected String getOldName() { - return "G1 Old Gen"; + @Override protected String[] getOldNames() { + return new String[] {"G1 Old Gen"}; } - @Override protected String getSurvivorName() { - return "G1 Survivor Space"; + @Override protected String[] getSurvivorNames() { + return new String[] {"G1 Survivor Space"}; } - @Override protected String getMetaspaceName() { - return "Metaspace"; + @Override protected String[] getMetaspaceNames() { + return new String[] {"Metaspace"}; } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java index f1914d36b..ef5cd8d56 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/MemoryPoolModule.java @@ -40,18 +40,18 @@ public abstract class MemoryPoolModule implements MemoryPoolMetricAccessor { List poolList = new LinkedList(); for (MemoryPoolMXBean bean : beans) { String name = bean.getName(); - PoolType type = null; - if (name.equals(getCodeCacheName())) { + PoolType type; + if (contains(getCodeCacheNames(), name)) { type = PoolType.CODE_CACHE_USAGE; - } else if (name.equals(getEdenName())) { + } else if (contains(getEdenNames(), name)) { type = PoolType.NEWGEN_USAGE; - } else if (name.equals(getOldName())) { + } else if (contains(getOldNames(), name)) { type = PoolType.OLDGEN_USAGE; - } else if (name.equals(getSurvivorName())) { + } else if (contains(getSurvivorNames(), name)) { type = PoolType.SURVIVOR_USAGE; - } else if (name.equals(getMetaspaceName())) { + } else if (contains(getMetaspaceNames(), name)) { type = PoolType.METASPACE_USAGE; - } else if (name.equals(getPermName())) { + } else if (contains(getPermNames(), name)) { type = PoolType.PERMGEN_USAGE; } else { continue; @@ -68,15 +68,24 @@ public abstract class MemoryPoolModule implements MemoryPoolMetricAccessor { return poolList; } - protected abstract String getPermName(); + private boolean contains(String[] possibleNames, String name) { + for (String possibleName : possibleNames) { + if (name.equals(possibleName)) { + return true; + } + } + return false; + } - protected abstract String getCodeCacheName(); + protected abstract String[] getPermNames(); - protected abstract String getEdenName(); + protected abstract String[] getCodeCacheNames(); - protected abstract String getOldName(); + protected abstract String[] getEdenNames(); - protected abstract String getSurvivorName(); + protected abstract String[] getOldNames(); - protected abstract String getMetaspaceName(); + protected abstract String[] getSurvivorNames(); + + protected abstract String[] getMetaspaceNames(); } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java index 66240a352..6bbac35ca 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java @@ -30,27 +30,27 @@ public class ParallelCollectorModule extends MemoryPoolModule { super(beans); } - @Override protected String getPermName() { - return "PS Perm Gen"; + @Override protected String[] getPermNames() { + return new String[] {"PS Perm Gen", "Compressed Class Space"}; } - @Override protected String getCodeCacheName() { - return "Code Cache"; + @Override protected String[] getCodeCacheNames() { + return new String[] {"Code Cache"}; } - @Override protected String getEdenName() { - return "PS Eden Space"; + @Override protected String[] getEdenNames() { + return new String[] {"PS Eden Space"}; } - @Override protected String getOldName() { - return "PS Old Gen"; + @Override protected String[] getOldNames() { + return new String[] {"PS Old Gen"}; } - @Override protected String getSurvivorName() { - return "PS Survivor Space"; + @Override protected String[] getSurvivorNames() { + return new String[] {"PS Survivor Space"}; } - @Override protected String getMetaspaceName() { - return "Metaspace"; + @Override protected String[] getMetaspaceNames() { + return new String[] {"Metaspace"}; } } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/SerialCollectorModule.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/SerialCollectorModule.java index 99a60dfed..bb792347e 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/SerialCollectorModule.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/SerialCollectorModule.java @@ -29,27 +29,27 @@ public class SerialCollectorModule extends MemoryPoolModule { super(beans); } - @Override protected String getPermName() { - return "Perm Gen"; + @Override protected String[] getPermNames() { + return new String[] {"Perm Gen", "Compressed Class Space"}; } - @Override protected String getCodeCacheName() { - return "Code Cache"; + @Override protected String[] getCodeCacheNames() { + return new String[] {"Code Cache"}; } - @Override protected String getEdenName() { - return "Eden Space"; + @Override protected String[] getEdenNames() { + return new String[] {"Eden Space"}; } - @Override protected String getOldName() { - return "Tenured Gen"; + @Override protected String[] getOldNames() { + return new String[] {"Tenured Gen"}; } - @Override protected String getSurvivorName() { - return "Survivor Space"; + @Override protected String[] getSurvivorNames() { + return new String[] {"Survivor Space"}; } - @Override protected String getMetaspaceName() { - return "Metaspace"; + @Override protected String[] getMetaspaceNames() { + return new String[] {"Metaspace"}; } } diff --git a/apm-sniffer/config/agent.config b/apm-sniffer/config/agent.config index a81175845..d85abb433 100644 --- a/apm-sniffer/config/agent.config +++ b/apm-sniffer/config/agent.config @@ -5,6 +5,10 @@ agent.application_code=Your_ApplicationName # Negative number means sample traces as many as possible, most likely 100% # agent.sample_n_per_3_secs=-1 +# The max amount of spans in a single segment. +# Through this config item, skywalking keep your application memory cost estimated. +# agent.span_limit_per_segment=300 + # Ignore the segments if their operation names start with these suffix. # agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg diff --git a/checkStyle.xml b/checkStyle.xml index 567beb43f..b1572e965 100644 --- a/checkStyle.xml +++ b/checkStyle.xml @@ -81,11 +81,11 @@ - + - + diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..f71ad71cc --- /dev/null +++ b/docs/README.md @@ -0,0 +1,27 @@ +## Documents +[![cn doc](https://img.shields.io/badge/document-中文-blue.svg)](README_ZH.md) + + * Getting Started + * [Quick start](en/Quick-start.md) + * [Deploy Standalone mode collector](en/Deploy-collector-in-standalone-mode.md) + * [Deploy Cluster mode collector](en/Deploy-collector-in-cluster-mode.md) + * [Deploy javaagent](en/Deploy-skywalking-agent.md) + * [Deploy docker image](en/Deploy-docker-image.md) + * [Supported middlewares, frameworks and libraries](Supported-list.md) + * [How to disable plugins?](en/How-to-disable-plugin.md) + * Application Toolkit + * [Overview](en/Applicaton-toolkit.md) + * [OpenTracing Tracer](en/Opentracing.md) + * Logging + * [log4j](en/Application-toolkit-log4j-1.x.md) + * [log4j2](en/Application-toolkit-log4j-2.x.md) + * [logback](en/Application-toolkit-logback-1.x.md) + * [Trace](en/Application-toolkit-trace.md) + * Testing + * [Plugin Test](https://github.com/SkywalkingTest/agent-integration-test-report) + * [Java Agent Performance Test](https://skywalkingtest.github.io/Agent-Benchmarks/) + * Development Guides + * [Skywalking 3 Cross Process Propagation Headers Protocol, v1.0](en/Skywalking-3-Cross-Process-Propagation-Headers-Protocol.md) + * FAQ + + \ No newline at end of file diff --git a/docs/README_ZH.md b/docs/README_ZH.md new file mode 100644 index 000000000..920c225ed --- /dev/null +++ b/docs/README_ZH.md @@ -0,0 +1,32 @@ +## 中文文档 +[![EN doc](https://img.shields.io/badge/document-English-blue.svg)](README.md) + + * [项目简介](/README_ZH.md) + * [快速入门](cn/Quick-start-CN.md) + * [部署单机collector](cn/Deploy-collector-in-standalone-mode-CN.md) + * [部署集群collector](cn/Deploy-collector-in-cluster-mode-CN.md) + * [部署探针Agent](cn/Deploy-skywalking-agent-CN.md) + * [部署Collector镜像](cn/Deploy-docker-image.CN.md) + * [中间件,框架与类库支持列表](Supported-list.md) + * [如何关闭特定插件](cn/How-to-disable-plugin-CN.md) + * APM相关介绍资料 + * [OpenTracing中文版](https://github.com/opentracing-contrib/opentracing-specification-zh.md) + * Application Toolkit,应用程序工具包 + * [概述](cn/Application-toolkit-CN.md) + * [OpenTracing Tracer](cn/skywalking-opentracing-CN.md) + * 日志组件 + * [log4j组件](cn/Application-toolkit-log4j-1.x-CN.md) + * [log4j2组件](cn/Application-toolkit-log4j-2.x-CN.md) + * [logback组件](cn/Application-toolkit-logback-1.x-CN.md) + * [Trace](cn/Application-toolkit-trace-CN.md) + * 测试用例 + * [插件测试](https://github.com/SkywalkingTest/agent-integration-test-report) + * [Java 探针性能测试](https://skywalkingtest.github.io/Agent-Benchmarks/README_zh.html) + * 开发指南 + * [工程编译指南](cn/How-to-build-CN.md) + * [插件开发指南](cn/Plugin-Development-Guide-CN.md) + * [跨进程追踪上下文传递协议](cn/Skywalking-3-Cross-Process-Propagation-Headers-Protocol-CN.md) + * [探针与Collector间网络协议,v3.2+](cn/How-to-communicate-with-the-collector-CN.md) + * FAQ + * [Trace查询有数据,但是没有拓扑图和JVM数据?](cn/FAQ/Why-have-traces-no-others-CN.md) + * [加载探针,Console被GRPC日志刷屏](cn/FAQ/Too-many-gRPC-logs-CN.md) \ No newline at end of file diff --git a/docs/Supported-list.md b/docs/Supported-list.md new file mode 100644 index 000000000..d429b25c9 --- /dev/null +++ b/docs/Supported-list.md @@ -0,0 +1,42 @@ +* HTTP Server + * [Tomcat](https://github.com/apache/tomcat) 7 + * [Tomcat](https://github.com/apache/tomcat) 8 + * [Spring Boot](https://github.com/spring-projects/spring-boot) Web 4.x + * Spring MVC 3.x, 4.x with servlet 3.x + * [Nutz Web Framework](https://github.com/nutzam/nutz) 1.x + * [Struts2 MVC](http://struts.apache.org/) 2.3.x -> 2.5.x + * [Resin](http://www.caucho.com/resin-4.0/) 3 + * [Resin](http://www.caucho.com/resin-4.0/) 4 + * [Jetty Server](http://www.eclipse.org/jetty/) 9 +* HTTP Client + * [Feign](https://github.com/OpenFeign/feign) 9.x + * [Netflix Spring Cloud Feign](https://github.com/spring-cloud/spring-cloud-netflix/tree/master/spring-cloud-starter-feign) 1.1.x, 1.2.x, 1.3.x + * [Okhttp](https://github.com/square/okhttp) 3.x + * [Apache httpcomponent HttpClient](http://hc.apache.org/) 4.2, 4.3 + * [Spring RestTemplete](https://github.com/spring-projects/spring-framework) 4.x + * [Jetty Client](http://www.eclipse.org/jetty/) 9 +* JDBC + * Mysql Driver 5.x, 6.x + * Oracle Driver + * H2 Driver + * [Sharding-JDBC 1.5.x](https://github.com/shardingjdbc/sharding-jdbc) + * PostgreSQL Driver 8.x, 9.x, 42.x +* RPC Frameworks + * [Dubbo](https://github.com/alibaba/dubbo) 2.5.3 + * [Dubbox](https://github.com/dangdangdotcom/dubbox) 2.8.4 + * [Motan](https://github.com/weibocom/motan) 0.2 + * [gRPC](https://github.com/grpc/grpc-java) 1.6+ +* NoSQL + * Redis + * [Jedis](https://github.com/xetorthio/jedis) 2.8 + * [MongoDB Java Driver](https://github.com/mongodb/mongo-java-driver) 3.4+ + * Memcached Client + * [Spymemcached](https://github.com/couchbase/spymemcached) 2.x + * [Xmemcached](https://github.com/killme2008/xmemcached) 2.x +* Service Discovery + * [Netflix Eureka](https://github.com/Netflix/eureka) +* Spring Ecosystem + * Spring Core Async SuccessCallback/FailureCallback/ListenableFutureCallback 4.x +* OpenTracing community supported + * Motan + * Hprose-java diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 000000000..18854876c --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-midnight \ No newline at end of file diff --git a/docs/cn/Application-toolkit-CN.md b/docs/cn/Application-toolkit-CN.md new file mode 100644 index 000000000..ca0a0b0ec --- /dev/null +++ b/docs/cn/Application-toolkit-CN.md @@ -0,0 +1,11 @@ +# 什么是sky-walking应用程序工具包? +Sky-walking应用程序工具包是一系列的类库,有skywalking团队提供。通过这些类库,你可以在你的应用程序内,访问sky-walking的一些内部信息. + +_**最为重要的是**_, 即使你移除skywalking的探针,或者不激活探针,这些类库也不会对应用程序有任何影响,也不会影响性能. + +工具包提供以下核心能力 +1. 将追踪信息和log组件集成,如log4j, log4j2 和 logback +1. 兼容CNCF OpenTracing标准的手动埋点 +1. 使用Skywalking专有的标注和交互性API + +_**注意**: 所有的应用程序工具包都托管在bitray.com/jcenter. 同时请确保你使用的开发工具包和skywalking的agent探针版本一致._ \ No newline at end of file diff --git a/docs/cn/Application-toolkit-log4j-1.x-CN.md b/docs/cn/Application-toolkit-log4j-1.x-CN.md new file mode 100644 index 000000000..46fe79153 --- /dev/null +++ b/docs/cn/Application-toolkit-log4j-1.x-CN.md @@ -0,0 +1,21 @@ +* 使用 maven 和 gradle 依赖相应的工具包 +```xml + + org.skywalking + apm-toolkit-log4j-1.x + {project.release.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-1.x/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-1.x/_latestVersion) + +* 配置layout +```properties +log4j.appender.CONSOLE.layout=org.skywalking.apm.toolkit.log.log4j.v1.x.TraceIdPatternLayout +``` + +* 在`layout.ConversionPattern`中设置 `%T`来展示traceid ( 在 2.0-2016版本中, 你应该设置为 %x, [为什么改变配置,请参考相关issue?](https://github.com/wu-sheng/sky-walking/issues/77) ) +```properties +log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n +``` + +* 当你使用`-javaagent`参数激活sky-walking的探针, 如果当前上下文中存在traceid,log4j将在输出**traceId**。如果探针没有被激活,将输出`TID: N/A`. \ No newline at end of file diff --git a/docs/cn/Application-toolkit-log4j-2.x-CN.md b/docs/cn/Application-toolkit-log4j-2.x-CN.md new file mode 100644 index 000000000..593a1dfda --- /dev/null +++ b/docs/cn/Application-toolkit-log4j-2.x-CN.md @@ -0,0 +1,19 @@ +* 使用 maven 和 gradle 依赖相应的工具包 +```xml + + org.skywalking + apm-toolkit-log4j-2.x + {project.release.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-2.x/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-2.x/_latestVersion) + +* 在log4j2.xml中的pattern 配置节,配置`[%traceId]` +```xml + + + + + +``` +* 当你使用`-javaagent`参数激活sky-walking的探针, 如果当前上下文中存在traceid,log4j2将在输出**traceId**。如果探针没有被激活,将输出`TID: N/A`. \ No newline at end of file diff --git a/docs/cn/Application-toolkit-logback-1.x-CN.md b/docs/cn/Application-toolkit-logback-1.x-CN.md new file mode 100644 index 000000000..ab102a25e --- /dev/null +++ b/docs/cn/Application-toolkit-logback-1.x-CN.md @@ -0,0 +1,22 @@ +* 使用 maven 和 gradle 依赖相应的工具包 +```xml + + org.skywalking + apm-toolkit-logback-1.x + {project.release.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-2.x/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-2.x/_latestVersion) + +* 在logback.xml中的`Pattern`配制节中,设置`%tid` +```xml + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n + + + +``` + +* 当你使用`-javaagent`参数激活sky-walking的探针, 如果当前上下文中存在traceid,logback将在输出**traceId**。如果探针没有被激活,将输出`TID: N/A`. \ No newline at end of file diff --git a/docs/cn/Application-toolkit-trace-CN.md b/docs/cn/Application-toolkit-trace-CN.md new file mode 100644 index 000000000..fbefb1ba6 --- /dev/null +++ b/docs/cn/Application-toolkit-trace-CN.md @@ -0,0 +1,20 @@ +* 使用 maven 和 gradle 依赖相应的工具包 +```xml + + org.skywalking + apm-toolkit-trace + ${skywalking.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-trace/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-trace/_latestVersion) + +* 随时使用 `TraceContext.traceId()` API,在应用程序的任何地方获取traceId. +```java +import org.skywalking.apm.toolkit.trace.TraceContext; +... + +modelAndView.addObject("traceId", TraceContext.traceId()); +``` +_示例代码,仅供参考_ + +* 对任何需要追踪的方法,使用@Trace标注,则此方法会被加入到追踪链中。 \ No newline at end of file diff --git a/docs/cn/Deploy-collector-in-cluster-mode-CN.md b/docs/cn/Deploy-collector-in-cluster-mode-CN.md new file mode 100644 index 000000000..d62ae2f05 --- /dev/null +++ b/docs/cn/Deploy-collector-in-cluster-mode-CN.md @@ -0,0 +1,71 @@ +## 所需的第三方软件 +- 被监控程序要求JDK6+ +- sky-walking server和webui要求JDK8+ +- Elasticsearch 5.3 +- Zookeeper 3.4.10 + +## 下载发布版本 +- 前向[发布页面](https://github.com/OpenSkywalking/skywalking/releases) + +## 部署Elasticsearch +- 修改`elasticsearch.yml`文件 + - 设置 `cluster.name: CollectorDBCluster`。此名称需要和collector配置文件一致。 + - 设置 `node.name: anyname`, 可以设置为任意名字,如Elasticsearch为集群模式,则每个节点名称需要不同。 + - 增加如下配置 + +``` +# ES监听的ip地址 +network.host: 0.0.0.0 +thread_pool.bulk.queue_size: 1000 +``` + +- 启动Elasticsearch + +### 部署collector +1. 解压安装包`tar -xvf skywalking-collector.tar.gz`,windows用户可以选择zip包 +1. 运行`bin/startup.sh`启动。windows用户为.bat文件。 + +- `config/application.yml` +``` +cluster: +# Zookeeper地址配置 + zookeeper: + hostPort: localhost:2181 + sessionTimeout: 100000 +# agent_server, agent_stream, ui, collector_inside中配置的IP都是Collector所使用的IP地址 +agent_server: + jetty: + host: localhost + # The port used + port: 10800 + context_path: / +agent_stream: + grpc: + host: localhost + port: 11800 + jetty: + host: localhost + port: 12800 + context_path: / +ui: + jetty: + host: localhost + port: 12800 + context_path: / +collector_inside: + grpc: + host: localhost + port: 11800 +storage: + elasticsearch: + cluster_name: CollectorDBCluster + cluster_transport_sniffer: true + # Elastic Search地址信息 + cluster_nodes: localhost:9300 + index_shards_number: 2 + index_replicas_number: 0 +``` + +## Collector集群模式启动 +集群模式主要依赖Zookeeper的注册和应用发现能力。所以,你只需要调整 `config/application.yml`中,agent_server, agent_stream, ui, collector_inside这些配置项的ip信息,使用真实的IP地址或者hostname,Collector就会使用集群模式运行。 +其次,将elasticsearch的注释取消,并修改集群的节点地址信息。 diff --git a/docs/cn/Deploy-collector-in-standalone-mode-CN.md b/docs/cn/Deploy-collector-in-standalone-mode-CN.md new file mode 100644 index 000000000..358a74dd1 --- /dev/null +++ b/docs/cn/Deploy-collector-in-standalone-mode-CN.md @@ -0,0 +1,61 @@ +## 用途说明 +单机模式使用本地H2数据库,不支持集群部署。主要用于:预览、功能测试、演示和低压力系统。 + +## 所需的第三方软件 +- JDK8+ + +## 下载发布版本 +- 前向[发布页面](https://github.com/OpenSkywalking/skywalking/releases) + +## Quick Start +Collector单机模拟启动简单,提供和集群模式相同的功能,单机模式下除端口被占用的情况下,直接启动即可。 + +### 部署collector +1. 解压安装包`tar -xvf skywalking-collector.tar.gz`,windows用户可以选择zip包 +1. 运行`bin/startup.sh`启动。windows用户为.bat文件。 + +- `config/application.yml` +``` +# 单机模式下无需配置集群相关信息 +#cluster: +# zookeeper: +# hostPort: localhost:2181 +# sessionTimeout: 100000 +# agent_server, agent_stream, ui, collector_inside中配置的IP都是Collector所使用的IP地址 +agent_server: + jetty: + host: localhost + # The port used + port: 10800 + context_path: / +agent_stream: + grpc: + host: localhost + port: 11800 + jetty: + host: localhost + port: 12800 + context_path: / +ui: + jetty: + host: localhost + port: 12800 + context_path: / +collector_inside: + grpc: + host: localhost + port: 11800 + +#storage: +# elasticsearch: +# cluster_name: CollectorDBCluster +# cluster_transport_sniffer: true +# Elastic Search地址信息 +# cluster_nodes: localhost:9300 +# index_shards_number: 2 +# index_replicas_number: 0 +``` + +## 使用Elastic Search代替H2存储 +由于H2数据库性能的局限性,我们在单机模式下,也支持使用ElasticSearch 5.3作为存储。你需要安装对应的ElasticSearch 5.3,并取消 +- 在单机模式下除了支持内置的H2数据库运行,也支持其他的存储(当前已支持的ElasticSearch 5.3以及将会支持的ShardJdbc),安装storage注释,修改配置信息即可。 diff --git a/docs/cn/Deploy-docker-image-CN.md b/docs/cn/Deploy-docker-image-CN.md new file mode 100644 index 000000000..48c403a45 --- /dev/null +++ b/docs/cn/Deploy-docker-image-CN.md @@ -0,0 +1,13 @@ +- [下载Source code](https://github.com/OpenSkywalking/skywalking/releases)并解压,进入解压目录,执行以下命令: + +```shell +> docker-compose pull +> docker-compose up +``` +- 探针配置的端口是10800。 +- 通过http://localhost:8080 访问WebUI + +注意:Docker Compose主要用于在本地进行快速环境搭建和测试,请不要通过远程访问默认Docker Compose启动的Collector环境 + +___ +测试环境: docker 17.03.1-ce, docker compose 1.11.2 diff --git a/docs/cn/Deploy-skywalking-agent-CN.md b/docs/cn/Deploy-skywalking-agent-CN.md new file mode 100644 index 000000000..d95db9c7a --- /dev/null +++ b/docs/cn/Deploy-skywalking-agent-CN.md @@ -0,0 +1,79 @@ +## 下载skywalking探针发布版本 +- 前向[发布页面](https://github.com/OpenSkywalking/skywalking/releases) + +## 部署探针 +1. 拷贝skywalking-agent目录到所需位置,探针包含整个目录,请不要改变目录结构 +1. 增加JVM启动参数,`-javaagent:/path/to/skywalking-agent/skywalking-agent.jar`。参数值为skywalking-agent.jar的绝对路径。 + +新目录结构如下: +``` ++-- skywalking-agent + +-- activations + apm-toolkit-log4j-1.x-activation.jar + apm-toolkit-log4j-2.x-activation.jar + apm-toolkit-logback-1.x-activation.jar + ... + +-- config + agent.config + +-- plugins + apm-dubbo-plugin.jar + apm-feign-default-http-9.x.jar + apm-httpClient-4.x-plugin.jar + ..... + skywalking-agent.jar +``` + +- `/config/agent.config`包含探针所需配置,中文说明如下。 + +```properties +# 当前的应用编码,最终会显示在webui上。 +# 建议一个应用的多个实例,使用有相同的application_code。请使用英文 +agent.application_code=Your_ApplicationName + +# 每三秒采样的Trace数量 +# 默认为负数,代表在保证不超过内存Buffer区的前提下,采集所有的Trace +# agent.sample_n_per_3_secs=-1 + +# 设置需要忽略的请求地址 +# 默认配置如下 +# agent.ignore_suffix=.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg + +# 对应Collector的config/application.yml配置文件中 agent_server/jetty/port 配置内容 +# 例如: +# 单节点配置:SERVERS="127.0.0.1:8080" +# 集群配置:SERVERS="10.2.45.126:8080,10.2.45.127:7600" +collector.servers=127.0.0.1:10800 + +# 日志文件名称前缀 +logging.file_name=skywalking-agent.log + +# 日志文件最大大小 +# 如果超过此大小,则会生成新文件。 +# 默认为300M +logging.max_file_size=314572800 + +# 日志级别,默认为DEBUG。 +logging.level=DEBUG +``` + +- 启动被监控应用。 + +# 高级特性 +- 插件会被统一放置在`plugins`目录中,新的插件,也只需要在启动阶段,放在目录中,就自动生效。删除则失效。 +- 配置除了通过`/config/agent.config`文件外,可以通过环境变量和VM参数(-D)来进行设置 + - 参数的key = `skywalking.` + `agent.config`文件中的key + - 优先级:系统环境变量 > VM参数(-D) > `/config/agent.config`中的配置 +- Log默认使用文件输出,输出到`/log`目录中 + +# Tomcat配置探针FAQ +- Tomcat 7 +修改`tomcat/bin/catalina.sh`,在首行加入如下信息 +```shell +CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS +``` + +- Tomcat 8 +修改`tomcat/bin/catalina.sh`,在首行加入如下信息 +```shell +set "CATALINA_OPTS=... -javaagent:E:\apache-tomcat-8.5.20\skywalking-agent\skywalking-agent.jar" +``` \ No newline at end of file diff --git a/docs/cn/FAQ/Too-many-gRPC-logs-CN.md b/docs/cn/FAQ/Too-many-gRPC-logs-CN.md new file mode 100644 index 000000000..8a192cdae --- /dev/null +++ b/docs/cn/FAQ/Too-many-gRPC-logs-CN.md @@ -0,0 +1,7 @@ +**现象**: +1. 加载探针并启动应用 +2. Console中被GRPC日志刷屏 + +**原因**:Skywalking采用了GRPC框架发送数据,GRPC框架读取log的配置文件进行日志输出。 + +**解决方法**: 在log的配置文件中添加对`org.skywalking.apm.dependencies`包的过滤 diff --git a/docs/cn/FAQ/Why-have-traces-no-others-CN.md b/docs/cn/FAQ/Why-have-traces-no-others-CN.md new file mode 100644 index 000000000..fcab017a3 --- /dev/null +++ b/docs/cn/FAQ/Why-have-traces-no-others-CN.md @@ -0,0 +1,11 @@ +现象: +- Agent和Collector正常工作,没有异常日志 +- 已经对系统进行过访问,Trace查询有数据 +- UI除Trace查询页面外,其他页面无数据 +- **页面顶部时间轴和当前系统时间不一致** + +原因: +被监控系统所在的操作系统,未设置为当前时区,导致统计数据汇集时间点偏差。 + +解决方法: +设置操作系统时间时区 \ No newline at end of file diff --git a/docs/cn/How-to-build-CN.md b/docs/cn/How-to-build-CN.md new file mode 100644 index 000000000..baeeae5cb --- /dev/null +++ b/docs/cn/How-to-build-CN.md @@ -0,0 +1,18 @@ +## 工程编译指南 +本文档用于指导开发者,在本地开发环境中编译工程。 + +### 前言 +因为工程结构和代码依赖会随版本变化,如果读者熟悉travis-ci,则可直接参考[.travis.yml](https://github.com/wu-sheng/sky-walking/blob/master/.travis.yml) + +### 编译步骤 +1. 准备环境,jdk8,Maven +1. 执行`mvn clean package` + +### 在IntelliJ IDEA中编译工程 +上述步骤在命令行中,能够很好的编译工程,但导入到编译器中的工程依然会有一些报错,我们需要进行几步简单的操作。 +1. 在IntelliJ Terminal中,执行`mvn compile -Dmaven.test.skip=true`进行编译 +1. 设置gRPC的自动生成代码目录,为源码目录 + - **apm-network/target/generated--sources/protobuf**目录下的`grpc-java`和`java`目录 + - **apm-collector/apm-collector-stream/target/protobuf**目录下的`grpc-java`和`java`目录 + +注:从3.2开始,网络通讯协议引入GRPC,所以增加上述的步骤 diff --git a/docs/cn/How-to-communicate-with-the-collector-CN.md b/docs/cn/How-to-communicate-with-the-collector-CN.md new file mode 100644 index 000000000..be60332c3 --- /dev/null +++ b/docs/cn/How-to-communicate-with-the-collector-CN.md @@ -0,0 +1,352 @@ +# 探针与Collector间通讯协议 +## 前言 +这篇文章主要介绍3.2版本的Collector对外提供的服务协议。一般情况下,使用者和开发者都无需了解此协议细节。但是在庞大的开源生态中,我们已经收到过多次有公司或个人的使用案例,使用自己的非Java探针(PHP,GO等)探针,接入我们的Collector进行数据分析和监控。 + +## 协议类型 +Collector从3.2开始,对外同时提供gRPC和HTTP RESTFul两种类型的协议。从效率上,我们推荐使用gRPC + +# gRPC服务 +本章节,描述官方java探针使用的网络协议 + +## Collector服务发现协议 +### 简介 +**Collector服务发现协议是探针启动时,第一个调用的服务。**通过服务,查找对应的gRPC服务地址与端口列表,并在由客户端选择其中任意一个作为服务端。此服务需周期性调用,确保探针本地的服务端口列表是准确有效的。 + +### 协议类型 +HTTP GET + +### 协议内容 +- 请求 +GET操作:http://collectorIp:port/agentstream/grpc 。 其中`/agentstream/grpc`是默认值,如需修改,需要参考collector相关配置。 + +- 返回 +JSON数组,数组的每个元素,为一个有效的gRPC服务地址。 +```json +["ip address1:port1","ip address2:port2","ip address3:port3"] +``` + +## 应用注册服务 +### 简介 +应用注册服务,是将手动设计的applicationCode,以及ip:port沟通的服务地址,转换成数字的服务。此服务会在后续的传输过程中,有效降低网络带宽需求。 + +### 协议类型 +gRPC服务 + +### 协议内容 +https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/proto/ApplicationRegisterService.proto +```proto +syntax = "proto3"; + +option java_multiple_files = true; +option java_package = "org.skywalking.apm.network.proto"; + +import "KeyWithIntegerValue.proto"; + +//register service for ApplicationCode, this service is called when service starts. +service ApplicationRegisterService { + rpc register (Application) returns (ApplicationMapping) { + } +} + +message Application { + repeated string applicationCode = 1; +} + +message ApplicationMapping { + repeated KeyWithIntegerValue application = 1; +} +``` +- 首次调用时,applicationCode为客户端设置的应用名(显示在拓扑图和应用列表上的名字)。之后随着追踪过程,会上报此应用相关的周边服务的`ip:port`地址列表 +- KeyWithIntegerValue 返回,key为上报的applicationCode和ip:port地址,value为对应的id。applicationCode对应的返回id,在后续协议中,被称为applicationId。 +- 此服务按需调用,本地无法找到ip:port对应的id时,可异步发起调用。 +- 获取applicationId的操作是必选。 +- 获取ip:port对应的id是可选,但是完成id设置,会有效提高collector处理效率,降低网络消耗。 + + +## 应用实例发现服务 +### 简介 +应用实例发现服务存在三个子服务,分别是实例注册服务,实例心跳服务,实例注册重连服务。这三个服务负责获取和保持应用实例在线的功能。 + +### 协议类型 +gRPC服务 + +### 实例注册服务 +https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/proto/DiscoveryService.proto#L11-L12 +```proto +service InstanceDiscoveryService { + rpc register (ApplicationInstance) returns (ApplicationInstanceMapping) { + } +} + +message ApplicationInstance { + int32 applicationId = 1; + string agentUUID = 2; + int64 registerTime = 3; + OSInfo osinfo = 4; +} + +message OSInfo { + string osName = 1; + string hostname = 2; + int32 processNo = 3; + repeated string ipv4s = 4; +} + +message ApplicationInstanceMapping { + int32 applicationId = 1; + int32 applicationInstanceId = 2; +} +``` +- agentUUID 由探针生成,需保持唯一性,推荐使用UUID算法。并在应用重启前保持不变 +- applicationId 由**应用注册服务**获取。 +- 服务端返回应用实例id,applicationInstanceId 。后续上报服务使用实例id标识。 + +### 实例心跳服务 +https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/proto/DiscoveryService.proto#L14-L15 +```proto +service InstanceDiscoveryService { + rpc heartbeat (ApplicationInstanceHeartbeat) returns (Downstream) { + } +} + +message ApplicationInstanceHeartbeat { + int32 applicationInstanceId = 1; + int64 heartbeatTime = 2; +} +``` +- 心跳服务每分钟上报一次。 +- 如一分钟内有segment数据上报,则可不必上报心跳。 + +### 实例注册重连服务 +https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/proto/DiscoveryService.proto#L17-L18 +```proto +service InstanceDiscoveryService { + rpc registerRecover (ApplicationInstanceRecover) returns (Downstream) { + } +} + +message ApplicationInstanceRecover { + int32 applicationId = 1; + int32 applicationInstanceId = 2; + int64 registerTime = 3; + OSInfo osinfo = 4; +} +``` +- 应用重连服务于**应用注册服务**类似,在gRPC发生重连,并再次连接成功后发送。需包含通过**应用注册服务**获取的applicationInstanceId。 + +## 服务名注册发现服务 +### 简介 +服务名注册发现服务,是将应用内的服务名(operationName)替换为id的服务。 + +### 协议类型 +gRPC服务 + +### 协议内容 +https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/proto/DiscoveryService.proto#L53-L74 +```proto +//discovery service for ServiceName by Network address or application code +service ServiceNameDiscoveryService { + rpc discovery (ServiceNameCollection) returns (ServiceNameMappingCollection) { + } +} + +message ServiceNameCollection { + repeated ServiceNameElement elements = 1; +} + +message ServiceNameMappingCollection { + repeated ServiceNameMappingElement elements = 1; +} + +message ServiceNameMappingElement { + int32 serviceId = 1; + ServiceNameElement element = 2; +} + +message ServiceNameElement { + string serviceName = 1; + int32 applicationId = 2; +} +``` +- 可选服务,可有效降低网络消耗,推荐实现。注意,由于部分应用存在URI中夹带参数的情况,请注意限制探针内的缓存容量,防止内存溢出。 +- ServiceNameElement中,applicationId为当前applicationCode对应的id。serviceName一般为对应span的operationName + +## JVM指标上报服务 +### 简介 +上报当前实例的JVM信息,每秒上报一次。 + +### 协议类型 +gRPC服务 + +### 协议内容 +https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/proto/JVMMetricsService.proto +```proto +syntax = "proto3"; + +option java_multiple_files = true; +option java_package = "org.skywalking.apm.network.proto"; + +import "Downstream.proto"; + +service JVMMetricsService { + rpc collect (JVMMetrics) returns (Downstream) { + } +} + +message JVMMetrics { + repeated JVMMetric metrics = 1; + int64 applicationInstanceId = 2; +} + +message JVMMetric { + int64 time = 1; + CPU cpu = 2; + repeated Memory memory = 3; + repeated MemoryPool memoryPool = 4; + repeated GC gc = 5; +} + +message CPU { + double usagePercent = 2; +} + +message Memory { + bool isHeap = 1; + int64 init = 2; + int64 max = 3; + int64 used = 4; + int64 committed = 5; +} + +message MemoryPool { + PoolType type = 1; + bool isHeap = 2; + int64 init = 3; + int64 max = 4; + int64 used = 5; + int64 commited = 6; +} + +enum PoolType { + CODE_CACHE_USAGE = 0; + NEWGEN_USAGE = 1; + OLDGEN_USAGE = 2; + SURVIVOR_USAGE = 3; + PERMGEN_USAGE = 4; + METASPACE_USAGE = 5; +} + +message GC { + GCPhrase phrase = 1; + int64 count = 2; + int64 time = 3; +} + +enum GCPhrase { + NEW = 0; + OLD = 1; +} +``` + +## TraceSegment上报服务 +### 简介 +上报调用链信息 + +### 协议类型 +gRPC服务 + +### 协议内容 +```proto +syntax = "proto3"; + +option java_multiple_files = true; +option java_package = "org.skywalking.apm.network.proto"; + +import "Downstream.proto"; +import "KeyWithStringValue.proto"; + +service TraceSegmentService { + rpc collect (stream UpstreamSegment) returns (Downstream) { + } +} + +message UpstreamSegment { + repeated UniqueId globalTraceIds = 1; + bytes segment = 2; // the byte array of TraceSegmentObject +} + +message UniqueId { + repeated int64 idParts = 1; +} + +message TraceSegmentObject { + UniqueId traceSegmentId = 1; + repeated TraceSegmentReference refs = 2; + repeated SpanObject spans = 3; + int32 applicationId = 4; + int32 applicationInstanceId = 5; +} + +message TraceSegmentReference { + RefType refType = 1; + UniqueId parentTraceSegmentId = 2; + int32 parentSpanId = 3; + int32 parentApplicationInstanceId = 4; + string networkAddress = 5; + int32 networkAddressId = 6; + string entryServiceName = 7; + int32 entryServiceId = 8; + string parentServiceName = 9; + int32 parentServiceId = 10; +} + +message SpanObject { + int32 spanId = 1; + int32 parentSpanId = 2; + int64 startTime = 3; + int64 endTime = 4; + int32 operationNameId = 5; + string operationName = 6; + int32 peerId = 7; + string peer = 8; + SpanType spanType = 9; + SpanLayer spanLayer = 10; + int32 componentId = 11; + string component = 12; + bool isError = 13; + repeated KeyWithStringValue tags = 14; + repeated LogMessage logs = 15; +} + +enum RefType { + CrossProcess = 0; + CrossThread = 1; +} + +enum SpanType { + Entry = 0; + Exit = 1; + Local = 2; +} + +enum SpanLayer { + Database = 0; + RPCFramework = 1; + Http = 2; + MQ = 3; +} + +message LogMessage { + int64 time = 1; + repeated KeyWithStringValue data = 2; +} +``` +- UniqueId为segment或者globalTraceId的数字表示。由3个long组成,1)applicationInstanceId,2)当前线程id,3)当前时间戳*10000 + seq(0-10000自循环) +- Span的数据,请参考[插件开发规范](https://github.com/OpenSkywalking/skywalking/wiki/Plugin-Development-Guide) +- 以下id和名称根据注册返回结果,优先上报id,无法获取id时,再上传name。参考之前的应用和服务注册章节。 + - operationNameId/operationName + - networkAddress/networkAddressId + - entryServiceName/entryServiceId + - parentServiceName/parentServiceId + - peerId/peer +- componentId为默认支持的插件id,非官方支持,需传输名称或修改服务端源代码。[官方组件列表](https://github.com/OpenSkywalking/skywalking/blob/master/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java) diff --git a/docs/cn/How-to-disable-plugin-CN.md b/docs/cn/How-to-disable-plugin-CN.md new file mode 100644 index 000000000..84cfc82bc --- /dev/null +++ b/docs/cn/How-to-disable-plugin-CN.md @@ -0,0 +1,19 @@ +# Disable plugins +删除plugin目录下的相关jar包:`skywalking-agent/plugins/*.jar` + +``` ++-- skywalking-agent + +-- activations + apm-toolkit-log4j-1.x-activation.jar + apm-toolkit-log4j-2.x-activation.jar + apm-toolkit-logback-1.x-activation.jar + ... + +-- config + agent.config + +-- plugins + apm-dubbo-plugin.jar + apm-feign-default-http-9.x.jar + apm-httpClient-4.x-plugin.jar + ..... + skywalking-agent.jar +``` \ No newline at end of file diff --git a/docs/cn/Plugin-Development-Guide-CN.md b/docs/cn/Plugin-Development-Guide-CN.md new file mode 100644 index 000000000..63bede5d7 --- /dev/null +++ b/docs/cn/Plugin-Development-Guide-CN.md @@ -0,0 +1,276 @@ +## 插件开发指南 +本文档描述 [v3.2+](https://github.com/OpenTracing/skywalking/releases) 插件开发方法、使用的API,以及注意事项。3.2版本将在2017 CNUTCon之前发布。 + +### 核心概念 +#### 一. Span +Span是追踪系统中的通用概念(有时候被翻译成埋点),关于Span的定义,请参考[OpenTracing 中文版](https://github.com/opentracing-contrib/opentracing-specification-zh/blob/master/specification.md#opentracing数据模型)。 +sky-walking作为OpenTracing的支持者,在核心实现中,与标准有较高的相似度。 + +我们将span分为三类: + +1.1 EntrySpan +EntrySpan代表一个服务的提供方,即,服务端的入口点。它是每个Java对外服务的入口点。如:Web服务入口就是一个EntrySpan。 + +1.2 LocalSpan +LocalSpan代表一个普通的Span,代表任意一个本地逻辑块(或方法) + +1.3 ExitSpan +ExitSpan也可以称为LeafSpan(sky-walking的早期版本中的称呼),代表了一个远程服务的客户端调用。如:一次JDBC调用。 + +#### 二. ContextCarrier +分布式追踪要解决的一个重要问题,就是跨进程的问题,ContextCarrier的概念就是为了解决这种场景。 + +当发生一次**A->B**的网络调用时: +1. 需要在客户端生成(inject操作)ContextCarrier,并序列化成String +1. 将这个String加入RPC调用的正文(或HEAD)中,传递到服务端 +1. 服务端收到后,转换为新的ContextCarrier +1. 通过提取操作(extract操作)建立关联 + +以HTTPComponent调用Tomcat为例: +1. 客户端(HTTPComponent端) +```java + span = ContextManager.createExitSpan("/span/operation/name", contextCarrier, "ip:port"); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + //向HTTP或者其他RPC HEAD中设置上下文 + heads.put(next.getHeadKey(), next.getHeadValue()); + } +``` + +2. 服务端(Tomcat端) +```java + ContextCarrier contextCarrier = new ContextCarrier(); + CarrierItem next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + //从HTTP或者其他RPC HEAD中,根据指定的KEY,提取上下文 + next.setHeadValue(heads.get(next.getHeadKey())); + } + + span = ContextManager.createEntrySpan(“/span/operation/name”, contextCarrier); +``` + +#### 三. ContextSnapshot +除了跨进程的RPC调用,另外一种追踪的常见场景是跨线程。跨线程和跨进程有很高的相似度,都是需要完成上下文的传递工作。所以ContextSnapshot具有和ContextCarrier十分类似的API风格。 + +当发生一次**A->B**的跨线程调用时: +1. 需要在A线程中通过ContextManager#capture操作生成ContextSnapshot对象实例 +1. 将这个ContextSnapshot对象传递到B线程中 +1. B线程通过ContextManager#continued操作完成上下文传递 + +### 核心API +#### 一. ContextManager +ContextManager提供了追踪相关操作的主入口 + +1. 创建EntrySpan +```java +public static AbstractSpan createEntrySpan(String operationName, ContextCarrier carrier) +``` +通过服务名、跨进程传递的ContextCarrier,创建EntrySpan。 + +2. 创建LocalSpan +```java +public static AbstractSpan createLocalSpan(String operationName) +``` +根据服务名(或方法名),创建LocalSpan + +3. 创建ExitSpan +```java +public static AbstractSpan createExitSpan(String operationName, ContextCarrier carrier, String remotePeer) +``` +根据服务名,跨进程传递的ContextCarrier(空容器)和远端服务地址(IP、主机名、域名 + 端口),创建ExitSpan + +#### 二. AbstractSpan +AbstractSpan提供了Span内部,进行操作的各项API + +```java + /** + * Set the component id, which defines in {@link org.skywalking.apm.network.trace.component.ComponentsDefine} + * + * @param component + * @return the span for chaining. + */ + AbstractSpan setComponent(Component component); + + /** + * Only use this method in explicit instrumentation, like opentracing-skywalking-bridge. + * It it higher recommend don't use this for performance consideration. + * + * @param componentName + * @return the span for chaining. + */ + AbstractSpan setComponent(String componentName); + + AbstractSpan setLayer(SpanLayer layer); + + /** + * Set a key:value tag on the Span. + * + * @return this Span instance, for chaining + */ + AbstractSpan tag(String key, String value); + + /** + * Record an exception event of the current walltime timestamp. + * + * @param t any subclass of {@link Throwable}, which occurs in this span. + * @return the Span, for chaining + */ + AbstractSpan log(Throwable t); + + AbstractSpan errorOccurred(); + + /** + * Record an event at a specific timestamp. + * + * @param timestamp The explicit timestamp for the log record. + * @param event the events + * @return the Span, for chaining + */ + AbstractSpan log(long timestamp, Map event); + + /** + * Sets the string name for the logical operation this span represents. + * + * @return this Span instance, for chaining + */ + AbstractSpan setOperationName(String operationName); +``` +Span的操作语义和OpenTracing类似。 + +SpanLayer为我们的特有概念,如果是远程调用类的服务,请设置此属性,包括4个属性值 +1. DB +1. RPC_FRAMEWORK,非HTTP类型的RPC框架,如:原生的DUBBO,MOTAN +1. HTTP +1. MQ + +### 开发插件 +#### 一. 简介 +因为所有的程序调用都是基于方法的,所以插件实际上就是基于方法的拦截,类似面向切面编程的AOP技术。sky-walking底层已经完成相关的技术封装,所以插件开发者只需要定位需要拦截的类、方法,然后结合上文中的追踪API,即可完成插件的开发。 + +#### 二. 拦截类型 +根据Java方法,共有三种拦截类型 +1. 拦截构造函数 +1. 拦截实例方法 +1. 拦截静态方法 + +我们将这三类拦截,分为两类,即: +1. 实例方法增强插件,继承ClassInstanceMethodsEnhancePluginDefine +1. 静态方法增强插件,继承ClassStaticMethodsEnhancePluginDefine + +当然,也可以同时支持实例和静态方法,直接继承ClassEnhancePluginDefine。但是,这种情况很少。 + +#### 三. 实现自己的插件定义 +我们以继承ClassInstanceMethodsEnhancePluginDefine为例(ClassStaticMethodsEnhancePluginDefine十分类似,不再重复描述),描述定义插件的全过程 + +1. 定义目标类名称 +```java +protected abstract ClassMatch enhanceClass(); +``` + +ClassMatch反应类的匹配方式,目前提供三种: + +* byName, 通过类名完整匹配 +* byClassAnnotationMatch, 通过类标注进行匹配 +* byMethodAnnotationMatch, 通过方法的标注来匹配类 +* byHierarchyMatch, 通过父类或者接口匹配 + +注意实现: +* 所有类、接口、标注名称,请使用字符串,不要使用`*.class.getName()`(用户环境可能会引起ClassLoader问题)。 +* by*AnnotationMatch不支持继承的标注 +* byHierarchyMatch,如果存在接口、抽象类、类间的多层继承关系,如果方法复写,则可能造成多层埋点。 + +如: +```java +@Override +protected ClassMatch enhanceClassName() { + return byName("org.apache.catalina.core.StandardEngineValve"); +} + +``` + +2. 定义构造函数拦截点 +```java +protected InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints(); + +public interface InstanceMethodsInterceptPoint { + /** + * class instance methods matcher. + * + * @return methods matcher + */ + ElementMatcher getMethodsMatcher(); + + /** + * @return represents a class name, the class instance must instanceof InstanceMethodsAroundInterceptor. + */ + String getMethodsInterceptor(); + + boolean isOverrideArgs(); +} +``` + +返回拦截方法的匹配器,以及对应的拦截类,同样由于潜在的ClassLoader问题,不要使用`*.class.getName()`。如何构建拦截器,请章节"四. 实现拦截器逻辑"。 + +3. 定义skywalking-plugin.def文件 +```properties +tomcat-7.x/8.x=org.skywalking.apm.plugin.tomcat78x.define.TomcatInstrumentation +``` + +* 插件名称,要求全局唯一,命名规范:目标组件+版本号 +* 插件定义类全名 + +#### 四. 实现拦截器逻辑 +我们继续以实现实例方法拦截为例,拦截器需要实现org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor。 +```java +/** + * A interceptor, which intercept method's invocation. The target methods will be defined in {@link + * ClassEnhancePluginDefine}'s subclass, most likely in {@link ClassInstanceMethodsEnhancePluginDefine} + * + * @author wusheng + */ +public interface InstanceMethodsAroundInterceptor { + /** + * called before target method invocation. + * + * @param result change this result, if you want to truncate the method. + * @throws Throwable + */ + void beforeMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, + MethodInterceptResult result) throws Throwable; + + /** + * called after target method invocation. Even method's invocation triggers an exception. + * + * @param ret the method's original return value. + * @return the method's actual return value. + * @throws Throwable + */ + Object afterMethod(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, + Object ret) throws Throwable; + + /** + * called when occur exception. + * + * @param t the exception occur. + */ + void handleMethodException(EnhancedInstance objInst, Method method, Object[] allArguments, Class[] argumentsTypes, + Throwable t); +} +``` + +可以在方法执行前、执行后、执行异常三个点,进行拦截,设置修改方法参数(执行前),并调用核心API,设置追踪逻辑。 + +### 贡献插件到主仓库 +我们鼓励大家共同贡献支持各个类库的插件。 + +大家需支持以下步骤执行: +1. 在issue页面提出插件扩展需求,对应的版本。 +1. Fork wu-sheng/sky-walking到本地 +1. 在apm-sniffer/apm-sdk-plugin下新建自己的插件模块,模块名为:支持类库名称+版本号 +1. 按照规范开发插件 +1. 完善注释和测试用例 +1. 在本地打包进行集成测试 +1. 提交Pull Request到 wu-sheng/sky-walking,提供插件追踪的截图(拓扑和Trace明细),可独立运行的被追踪程序、docker镜像或docker-compose。 +1. sky-walking PMC( Project Management Committee) 成员完成插件审核,确定发布版本,并合并到主仓库。 \ No newline at end of file diff --git a/docs/cn/Quick-start-CN.md b/docs/cn/Quick-start-CN.md new file mode 100644 index 000000000..6f03d9a69 --- /dev/null +++ b/docs/cn/Quick-start-CN.md @@ -0,0 +1,7 @@ +# 部署步骤 +1. 部署 Collector + 1. [单机模式](Deploy-collector-in-standalone-mode-CN.md) + 1. [集群模式](Deploy-collector-in-cluster-mode-CN.md) +1. 部署 webui server, [doc](https://github.com/OpenSkywalking/skywalking-ui#quickstart) +1. 部署 Java Agent,[doc](Deploy-skywalking-agent-CN.md) +1. 重启并访问系统功能,查看UI即可。 \ No newline at end of file diff --git a/docs/cn/Skywalking-3-Cross-Process-Propagation-Headers-Protocol-CN.md b/docs/cn/Skywalking-3-Cross-Process-Propagation-Headers-Protocol-CN.md new file mode 100644 index 000000000..7c1be7778 --- /dev/null +++ b/docs/cn/Skywalking-3-Cross-Process-Propagation-Headers-Protocol-CN.md @@ -0,0 +1,61 @@ +# Skywalking 3 Cross Process Propagation Headers Protocol +* Version 1.0 + +这是Skywalking3跨进程传输头协议第一个公开版本。Skywalking是一个偏向APM的分布式追踪系统,所以,为了提供服务端处理性能。头信息会比其他的追踪系统要更复杂一些。你会发现,这个头信息,更像一个商业APM系统,并且,一些商业APM系统的头信息,比我们的要复杂的多。所以,如果你希望开发或者贡献其他语言探针、或者JAVA探针的其他市县模式,请耐心阅读,并理解此协议内容。 + + +# Header Item +* Header Name: `sw3` +* Header Value: 使用`|`分隔,包含以下内容 + +## Values +* Trace Segment Id + +Trace segment,即分布式调用链片段。这个ID为此调用链片段全局唯一ID。此ID由一次分布式调用链的一个线程执行过程独享(在Java模型中)。ID由三个Long型组成,如: `"1.2343.234234234` + 1) 第一部分代表应用的实例ID(`application instance id`),此ID通过注册接口由Collector分配。一般取值范围为整形,利于protobuf传输。 + 2) 第二部分为线程号,Java模型中,一般也是整形。 + 3) 第三部分又由两部分组成 + 1) 时间戳,单位毫秒 + 2) 线程内的自增序列。0到9999之间。 + +如果你使用其他语言实现探针,你只需要保证你的ID由三个Long型构成,并全局唯一,不必完全遵守Java的ID生成规则。 + + +* Span Id + +一个整数,在trace segment内唯一,从0开始自增。 + +* Parent Application Instance + +父级应用节点的应用实例ID。如:在一个RPC调用中,HEAD中是客户端的应用实例ID。 + +* Entry Application Instance + +入口应用节点的应用实例ID。如:在一个分布式链路`A->B->C`中,此字段为`A`应用的实例ID。 + +* Peer Host + +服务端的Peer Host或Peer Id。如:客户端使用`182.14.39.1:9080`服务端,则这个就是对应的Peer Host。 + +_此值可以通过Collector服务获得对应的ID。如果非ID,则使用`#`开头,如果使用ID,则为整数类型。_ + +* Entry Span Operation Name of First Trace Segment + +调用链入口节点的应用实例下,入口Span的operation name或id。 + +_此值可以通过Collector服务获得对应的ID。如果非ID,则使用`#`开头,如果使用ID,则为整数类型。_ + +* Entry Span Operation Name of Parent Trace Segment + +调用链父级节点的应用实例下,入口Span的operation name或id。 + +_此值可以通过Collector服务获得对应的ID。如果非ID,则使用`#`开头,如果使用ID,则为整数类型。_ + +* Distributed Trace Id + +分布式链路ID一般是整个调用链的全局唯一ID。如果针对批量消费情况,这个ID是批量中,第一个生产者的trace ID。此ID生成规则和`Trace Segment Id`一致,由三个Long型数字构成。 + +### Sample value +value值示例: +1. `1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|1.2343.234234234` +1. `1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|1038|1.2343.234234234` \ No newline at end of file diff --git a/docs/cn/skywalking-opentracing-CN.md b/docs/cn/skywalking-opentracing-CN.md new file mode 100644 index 000000000..7d47e5412 --- /dev/null +++ b/docs/cn/skywalking-opentracing-CN.md @@ -0,0 +1,17 @@ +* 使用 maven 和 gradle 依赖相应的工具包 +```xml + + org.skywalking + apm-toolkit-opentracing + {project.release.version} + +``` + +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-opentracing/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-opentracing/_latestVersion) + +* 使用OpenTracing的标准API和桥接器,使用手动埋点 +```java +Tracer tracer = new org.skywalking.apm.toolkit.opentracing.SkyWalkingTracer(); +Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); + +``` \ No newline at end of file diff --git a/docs/en/Application-toolkit-log4j-1.x.md b/docs/en/Application-toolkit-log4j-1.x.md new file mode 100644 index 000000000..4ffb52dd7 --- /dev/null +++ b/docs/en/Application-toolkit-log4j-1.x.md @@ -0,0 +1,21 @@ +* Dependency the toolkit, such as using maven or gradle +```xml + + org.skywalking + apm-toolkit-log4j-1.x + {project.release.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-1.x/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apmg-toolkit-log4j-1.x/_latestVersion) + +* Config a layout +```properties +log4j.appender.CONSOLE.layout=org.skywalking.apm.toolkit.log.log4j.v1.x.TraceIdPatternLayout +``` + +* set `%T` in `layout.ConversionPattern` ( In 2.0-2016, you should use %x, [Why change?](https://github.com/wu-sheng/sky-walking/issues/77) ) +```properties +log4j.appender.CONSOLE.layout.ConversionPattern=%d [%T] %-5p %c{1}:%L - %m%n +``` + +* When you use `-javaagent` to active the sky-waking tracer, log4j will output **traceId**, if it existed. If the tracer is inactive, the output will be `TID: N/A`. diff --git a/docs/en/Application-toolkit-log4j-2.x.md b/docs/en/Application-toolkit-log4j-2.x.md new file mode 100644 index 000000000..b021c7140 --- /dev/null +++ b/docs/en/Application-toolkit-log4j-2.x.md @@ -0,0 +1,19 @@ +* Dependency the toolkit, such as using maven or gradle +```xml + + org.skywalking + apm-toolkit-log4j-2.x + {project.release.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-2.x/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-log4j-2.x/_latestVersion) + +* Config the `[%traceId]` pattern in your log4j2.xml +```xml + + + + + +``` +* When you use `-javaagent` to active the sky-waking tracer, log4j2 will output **traceId**, if it existed. If the tracer is inactive, the output will be `TID: N/A`. \ No newline at end of file diff --git a/docs/en/Application-toolkit-logback-1.x.md b/docs/en/Application-toolkit-logback-1.x.md new file mode 100644 index 000000000..7323f4b97 --- /dev/null +++ b/docs/en/Application-toolkit-logback-1.x.md @@ -0,0 +1,22 @@ +* Dependency the toolkit, such as using maven or gradle +```xml + + org.skywalking + skywalking-toolkit-logback-1.x + {project.release.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-logback-1.x/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-logback-1.x/_latestVersion) + +* set `%tid` in `Pattern` section of logback.xml +```xml + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n + + + +``` + +* When you use `-javaagent` to active the sky-waking tracer, logback will output **traceId**, if it existed. If the tracer is inactive, the output will be `TID: N/A`. \ No newline at end of file diff --git a/docs/en/Application-toolkit-trace.md b/docs/en/Application-toolkit-trace.md new file mode 100644 index 000000000..f0ba5472f --- /dev/null +++ b/docs/en/Application-toolkit-trace.md @@ -0,0 +1,20 @@ +* Dependency the toolkit, such as using maven or gradle +```xml + + org.skywalking + apm-toolkit-trace + ${skywalking.version} + +``` +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-trace/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-trace/_latestVersion) + +* Use `TraceContext.traceId()` API to obtain traceId. +```java +import org.skywalking.apm.toolkit.trace.TraceContext; +... + +modelAndView.addObject("traceId", TraceContext.traceId()); +``` +_Sample codes only_ + +* Add `@Trace` to any method you want to trace. After that, you can see the span in the Stack. \ No newline at end of file diff --git a/docs/en/Applicaton-toolkit.md b/docs/en/Applicaton-toolkit.md new file mode 100644 index 000000000..45daaa583 --- /dev/null +++ b/docs/en/Applicaton-toolkit.md @@ -0,0 +1,14 @@ +# What's sky-walking application toolkit? +Sky-walking application toolkit is a batch of libraries, provided by skywalking APM. Using them, you have a bridge between your application and skywalking APM agent. + +_**Most important**_, they will not trigger any runtime or performance issues for your application, whether skywalking tracer is active or not. + +# What does bridge mean? +As you known, skywalking agent run by -javeagent VM parameter. So you definitely don't need to change even a single line of your codes. But in some cases, you want to do interop with tracing/APM system. This is the moment you want to use application toolkit. +e.g. +1. Integrate trace context(traceId) into your log component, e.g. log4j, log4j2 and logback. +1. Use CNCF OpenTracing for manually instrumentation. +1. Use Skywalking annotation and interop APIs. + + +_**Notice**: all toolkits librarries are on bitray.com/jcenter. And make sure their version should be as same as the tracer's version._ \ No newline at end of file diff --git a/docs/en/Deploy-collector-in-cluster-mode.md b/docs/en/Deploy-collector-in-cluster-mode.md new file mode 100644 index 000000000..4ff29a0a1 --- /dev/null +++ b/docs/en/Deploy-collector-in-cluster-mode.md @@ -0,0 +1,73 @@ +## Required of third party softwares +- JDK 6+(instruments application can run in jdk6) +- JDK8 ( skywalking collector and skywalking webui ) +- Elasticsearch 5.2.2 or 5.3, cluster mode or not +- Zookeeper 3.4.10 + +## Download released version +- Go to [released page](https://github.com/OpenSkywalking/skywalking/releases) + +## Deploy Elasticsearch server +- Modify `elasticsearch.yml` + - Set `cluster.name: CollectorDBCluster` + - Set `node.name: anyname`, this name can be any, it based on Elasticsearch. + - Add the following configurations to + +``` +# The ip used for listening +network.host: 0.0.0.0 +thread_pool.bulk.queue_size: 1000 +``` + +- Start Elasticsearch + +## Single Node Mode Collector +Single Node collector is easy to deploy, and provides same features as cluster mode. You can use almost all default config to run in this mode. And attention, all the default configs of single node mode, depend on running the collector, traced application, ElasticSearch and Zookeeper in the same machine. + +### Deploy collector servers +1. Run `tar -xvf skywalking-collector.tar.gz` +1. Run `bin/startup.sh` + +- `config/application.yml` +``` +cluster: + # The address of Zookeeper + zookeeper: + hostPort: localhost:2181 + sessionTimeout: 100000 +# IPs in agent_server, agent_stream, ui, collector_inside are addresses of Collector +agent_server: + jetty: + host: localhost + # The port used + port: 10800 + context_path: / +agent_stream: + grpc: + host: localhost + port: 11800 + jetty: + host: localhost + port: 12800 + context_path: / +ui: + jetty: + host: localhost + port: 12800 + context_path: / +collector_inside: + grpc: + host: localhost + port: 11800 +storage: + elasticsearch: + cluster_name: CollectorDBCluster + cluster_transport_sniffer: true + # The address of Elastic Search + cluster_nodes: localhost:9300 + index_shards_number: 2 + index_replicas_number: 0 +``` + +## Cluster Mode Collector +Cluster mode depends on Zookeeper register and application discovery capabilities. So, you just need to adjust the IP config items in `config/application.yml`. Change IP and port configs of agent_server, agent_stream, ui, collector_inside, replace them to the real ip or hostname which you want to use for cluster. diff --git a/docs/en/Deploy-collector-in-standalone-mode.md b/docs/en/Deploy-collector-in-standalone-mode.md new file mode 100644 index 000000000..9a53fdaa4 --- /dev/null +++ b/docs/en/Deploy-collector-in-standalone-mode.md @@ -0,0 +1,20 @@ +# Usage scenario +Standalong mode collector means don't support cluster. It uses H2 as storage layer implementation, suggest that use only for preview, test, demonstration, low throughputs and small scale system. + +# Requirements +* JDK 8+ + +# Download +* [Releases](https://github.com/OpenSkywalking/skywalking/releases) + +# Quick start +You can simplely tar/unzip and startup if ports 10800, 11800, 12800 are free. + +- `tar -xvf skywalking-collector.tar.gz` in Linux, or unzip in windows. +- run `bin/startup.sh` or `bin/startup.bat` + +You should keep the `config/application.yml` as default. + +# Use Elastic Search instead of H2 as storage layer implementation +Even in standalone mode, collector can run with Elastic Search as storage. If so, uncomment the `storage` section in `application.yml`, set the config right. + diff --git a/docs/en/Deploy-docker-image.md b/docs/en/Deploy-docker-image.md new file mode 100644 index 000000000..be2c343c0 --- /dev/null +++ b/docs/en/Deploy-docker-image.md @@ -0,0 +1,14 @@ +- [Download source code](https://github.com/OpenSkywalking/skywalking/releases) and unzip source package. Execute following command under the unzipped directory. + +```shell +> docker-compose pull +> docker-compose up +``` +- The REST-service of collector listening on localhost:10800 +- Open http://localhost:8080 + +Attention: The Docker Compose is only designed for you to run collector in your local machine. If you are running by using our provided docker compose, you can't access the ip:10800. + +--- + +Test environment : docker 17.03.1-ce, docker compose 1.11.2 diff --git a/docs/en/Deploy-skywalking-agent.md b/docs/en/Deploy-skywalking-agent.md new file mode 100644 index 000000000..d208d8b4c --- /dev/null +++ b/docs/en/Deploy-skywalking-agent.md @@ -0,0 +1,46 @@ +## Download skywalking agent release version +- Go to [release page](https://github.com/wu-sheng/sky-walking/releases) + +## Deploy skywalking javaagent +1. Copy the agent package to anywhere you like. The logs, plugins and config are all included in the package. +2. Add -javaagent:/path/to/skywalking-agent/skywalking-agent.jar to VM argument. + +New agent package looks like this: +``` ++-- skywalking-agent + +-- activations + apm-toolkit-log4j-1.x-activation.jar + apm-toolkit-log4j-2.x-activation.jar + apm-toolkit-logback-1.x-activation.jar + ... + +-- config + agent.config + +-- plugins + apm-dubbo-plugin.jar + apm-feign-default-http-9.x.jar + apm-httpClient-4.x-plugin.jar + ..... + skywalking-agent.jar +``` + +- Start your application。 + +# Advanced features +- All plugins are in `/plugin` folder. The plugin jar is active when it is in there. Remove the plugin jar, it disabled. +- Besides set config through `/config/agent.config`, you can use System.Env and System.Properties(-D) to set config. + - Key of env and properties = `skywalking.` + key in `agent.config` file + - Priority: System.Env > System.Properties(-D) > `/config/agent.config` +- The default logging output folder is `/log`. + +# Deploy agent in Tomcat FAQ +- Tomcat 7 +Change the first line of `tomcat/bin/catalina.sh`. +```shell +CATALINA_OPTS="$CATALINA_OPTS -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"; export CATALINA_OPTS +``` + +- Tomcat 8 +Change the first line of `tomcat/bin/catalina.sh`. +```shell +set "CATALINA_OPTS=... -javaagent:E:\apache-tomcat-8.5.20\skywalking-agent\skywalking-agent.jar -Dconfig=\skywalking\config\dir" +``` \ No newline at end of file diff --git a/docs/en/How-to-disable-plugin.md b/docs/en/How-to-disable-plugin.md new file mode 100644 index 000000000..640d2ab4d --- /dev/null +++ b/docs/en/How-to-disable-plugin.md @@ -0,0 +1,19 @@ +# Disable plugins +Delete or remove the specific libraries / jars in `skywalking-agent/plugins/*.jar` + +``` ++-- skywalking-agent + +-- activations + apm-toolkit-log4j-1.x-activation.jar + apm-toolkit-log4j-2.x-activation.jar + apm-toolkit-logback-1.x-activation.jar + ... + +-- config + agent.config + +-- plugins + apm-dubbo-plugin.jar + apm-feign-default-http-9.x.jar + apm-httpClient-4.x-plugin.jar + ..... + skywalking-agent.jar +``` \ No newline at end of file diff --git a/docs/en/Opentracing.md b/docs/en/Opentracing.md new file mode 100644 index 000000000..5301b9800 --- /dev/null +++ b/docs/en/Opentracing.md @@ -0,0 +1,17 @@ +* Dependency the toolkit, such as using maven or gradle +```xml + + org.skywalking + apm-toolkit-opentracing + {project.release.version} + +``` + +   [ ![Download](https://api.bintray.com/packages/wu-sheng/skywalking/org.skywalking.apm-toolkit-opentracing/images/download.svg) ](https://bintray.com/wu-sheng/skywalking/org.skywalking.apm-toolkit-opentracing/_latestVersion) + +* Use our OpenTracing tracer implementation +```java +Tracer tracer = new org.skywalking.apm.toolkit.opentracing.SkywalkingTracer(); +Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/yourApplication/yourService"); + +``` \ No newline at end of file diff --git a/docs/en/Quick-start.md b/docs/en/Quick-start.md new file mode 100644 index 000000000..66d81d35b --- /dev/null +++ b/docs/en/Quick-start.md @@ -0,0 +1,7 @@ +# Quick start +1. Deploy Collector + 1. [Standalone Mode](Deploy-collector-in-standalone-mode.md) + 1. [Cluster Mode](Deploy-collector-in-cluster-mode.md) +1. Deploy webui server, [doc](https://github.com/OpenSkywalking/skywalking-ui#quickstart) +1. Doploy Java Agent,[doc](Deploy-skywalking-agent.md) +1. Reboot your applications, and open UI. \ No newline at end of file diff --git a/docs/en/Skywalking-3-Cross-Process-Propagation-Headers-Protocol.md b/docs/en/Skywalking-3-Cross-Process-Propagation-Headers-Protocol.md new file mode 100644 index 000000000..40e9b6291 --- /dev/null +++ b/docs/en/Skywalking-3-Cross-Process-Propagation-Headers-Protocol.md @@ -0,0 +1,58 @@ +# Skywalking 3 Cross Process Propagation Headers Protocol +* Version 1.0 + +This is the first open edition about `Skywalking 3 Cross Process Propagation Headers Protocol`. The skywalking is more likely an APM system, rather than normal distributed tracing system. The Headers is much more complex than them in order to improving analysis performance of collector. You can find many similar mechanism in other commercial APM system.(Some even much more complex than us) + +# Header Item +* Header Name: `sw3` +* Header Value: Split by `|`, the parts are following. + +## Values +* Trace Segment Id + +The trace segment id is the unique id for the part of the distributed trace. Each id is only used in a single thread. The id includes three parts(Long), e.g. `"1.2343.234234234` + 1) The first one represents application instance id, which assigned by collector. (most likely just an integer value, would be helpful in protobuf) + 2) The second one represents thread id. (In Java most likely just an integer value, would be helpful in protobuf) + 3) The third one also has two parts + 1) A timestamp, measured in milliseconds + 2) A seq, in current thread, between 0(included) and 9999(included) + +If you are using other language, you can generate your own id, but make sure it is unique and combined by three longs. + +* Span Id + +An integer, unique in a trace segment. Start with 0; + +* Parent Application Instance + +The instance id of the parent node, e.g. for a server of RPC, this id is from the client application instance id. + +* Entry Application Instance + +The instance id of the entry application. e.g. A distributed trace `A->B->C`, the id is from `A`. + +* Peer Host + +The peer-host/peer-id from client side. e.g. client uses `182.14.39.1:9080` to access server, this ip:port is the peer host. + +_This value can use exchange/compress collector service to get the id(integer) to represent the string. If you use the string, it must start with `#`, others use integer directly._ + +* Entry Span Operation Name of First Trace Segment + +The operation name/id of entry span propagates from `Entry Application Instance`. + +_This value can use exchange/compress collector service to get the id(integer) to represent the string. If you use the string, it must start with `#`, others use integer directly._ + +* Entry Span Operation Name of Parent Trace Segment + +The operation name/id of entry span propagates from `Parent Application Instance`. + +_This value can use exchange/compress collector service to get the id(integer) to represent the string. If you use the string, it must start with `#`, others use integer directly._ + +* Distributed Trace Id + +The distributed trace id of the whole trace, if in a batch process, it comes from the trace of first batch producer. The rule is as same as `Trace Segment Id` with three Longs. + +### Sample value +1. `1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|1.2343.234234234` +1. `1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|1038|1.2343.234234234` \ No newline at end of file diff --git a/pom.xml b/pom.xml index 18d057827..65e9f0a57 100644 --- a/pom.xml +++ b/pom.xml @@ -25,38 +25,29 @@ apm 3.2.4-2017 - - - GNU GENERAL PUBLIC LICENSE V3 - https://github.com/wu-sheng/sky-walking/blob/master/LICENSE - - - Wu Sheng wu.sheng@foxmail.com - https://wu-sheng.github.io/me/ + https://github.com/wu-sheng + + Founder + PMC member + + + + Peng Yongsheng + https://github.com/peng-yongsheng + + PMC member + Zhang Xin https://github.com/ascrutae - - - Tan Zhen - https://github.com/mircoteam - - - Xu Yan - https://github.com/TastySummer - - - Peng Yongsheng - 8082209@qq.com - https://github.com/peng-yongsheng - - - Dai Wen + + PMC member + @@ -64,8 +55,8 @@ apm-commons apm-sniffer apm-application-toolkit - apm-collector apm-network + apm-collector pom