From 7c4c914a5b3ef4fa8305f13f58973af5334ce590 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 17 Dec 2017 14:22:19 +0800 Subject: [PATCH] Define analysis segment parser module that used for split segment. --- .../agent-grpc/agent-grpc-define/pom.xml | 3 +- .../agent-grpc/agent-grpc-provider/pom.xml | 5 ++ .../provider/AgentModuleGRPCProvider.java | 3 +- .../handler/TraceSegmentServiceHandler.java | 11 ++- .../analysis-segment-parser/pom.xml | 36 ++++++++++ .../segment-parser-define/pom.xml | 40 +++++++++++ .../define/AnalysisSegmentParserModule.java | 39 +++++++++++ .../define/decorator}/ReferenceDecorator.java | 2 +- .../define/decorator}/SegmentDecorator.java | 2 +- .../define/decorator}/SpanDecorator.java | 2 +- .../define/decorator}/StandardBuilder.java | 2 +- .../define/listener}/EntrySpanListener.java | 7 +- .../define/listener}/ExitSpanListener.java | 5 +- .../define/listener}/FirstSpanListener.java | 5 +- .../listener}/GlobalTraceIdsListener.java | 3 +- .../define/listener}/LocalSpanListener.java | 5 +- .../parser/define/listener}/SpanListener.java | 3 +- .../define/service/ISegmentParseService.java | 33 +++++++++ .../ISegmentParserListenerRegister.java | 29 ++++++++ ...kywalking.apm.collector.core.module.Module | 19 +++++ .../segment-parser-provider/pom.xml | 40 +++++++++++ .../AnalysisTraceParseModuleProvider.java | 65 +++++++++++++++++ .../parser/provider}/parser/SegmentParse.java | 70 +++++++------------ .../parser/SegmentParserListenerManager.java | 43 ++++++++++++ .../parser/standardization/IdExchanger.java | 4 +- .../standardization/ReferenceIdExchanger.java | 3 +- .../SegmentStandardization.java | 2 +- .../SegmentStandardizationWorker.java | 2 +- .../standardization/SpanIdExchanger.java | 4 +- .../provider/service/SegmentParseService.java | 44 ++++++++++++ .../SegmentParserListenerRegister.java | 39 +++++++++++ ...g.apm.collector.core.module.ModuleProvider | 37 ++++++++++ apm-collector/apm-collector-analysis/pom.xml | 12 +++- 33 files changed, 539 insertions(+), 80 deletions(-) create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator}/ReferenceDecorator.java (98%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator}/SegmentDecorator.java (96%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator}/SpanDecorator.java (98%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator}/StandardBuilder.java (91%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener}/EntrySpanListener.java (84%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener}/ExitSpanListener.java (84%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener}/FirstSpanListener.java (84%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener}/GlobalTraceIdsListener.java (92%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener}/LocalSpanListener.java (84%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser => apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener}/SpanListener.java (91%) create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream => apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider}/parser/SegmentParse.java (73%) create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream => apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider}/parser/standardization/IdExchanger.java (82%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream => apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider}/parser/standardization/ReferenceIdExchanger.java (96%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream => apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider}/parser/standardization/SegmentStandardization.java (93%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream => apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider}/parser/standardization/SegmentStandardizationWorker.java (96%) rename apm-collector/{apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream => apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider}/parser/standardization/SpanIdExchanger.java (94%) create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java create mode 100644 apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml index cc1cc4269..6f3835bfc 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-define/pom.xml @@ -28,6 +28,5 @@ 4.0.0 agent-grpc-define - - + jar \ No newline at end of file diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml index 111390e65..a4fe82e07 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/pom.xml @@ -50,5 +50,10 @@ collector-grpc-manager-define ${project.version} + + org.apache.skywalking + segment-parser-define + ${project.version} + \ No newline at end of file diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java index d349b3ef6..e76c9d610 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/AgentModuleGRPCProvider.java @@ -27,6 +27,7 @@ import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.ServiceNa import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.TraceSegmentServiceHandler; import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.naming.AgentGRPCNamingHandler; import org.apache.skywalking.apm.collector.agent.grpc.provider.handler.naming.AgentGRPCNamingListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule; import org.apache.skywalking.apm.collector.cluster.ClusterModule; import org.apache.skywalking.apm.collector.cluster.service.ModuleListenerService; import org.apache.skywalking.apm.collector.cluster.service.ModuleRegisterService; @@ -85,7 +86,7 @@ public class AgentModuleGRPCProvider extends ModuleProvider { } @Override public String[] requiredModules() { - return new String[] {ClusterModule.NAME, NamingModule.NAME, GRPCManagerModule.NAME}; + return new String[] {ClusterModule.NAME, NamingModule.NAME, GRPCManagerModule.NAME, AnalysisSegmentParserModule.NAME}; } private void addHandlers(Server gRPCServer) { diff --git a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java index 52bead8c8..809bd65ab 100644 --- a/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java +++ b/apm-collector/apm-collector-agent/agent-grpc/agent-grpc-provider/src/main/java/org/apache/skywalking/apm/collector/agent/grpc/provider/handler/TraceSegmentServiceHandler.java @@ -16,12 +16,11 @@ * */ - package org.apache.skywalking.apm.collector.agent.grpc.provider.handler; import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.collector.agent.stream.AgentStreamModule; -import org.apache.skywalking.apm.collector.agent.stream.service.trace.ITraceSegmentService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.server.grpc.GRPCHandler; import org.apache.skywalking.apm.network.proto.Downstream; @@ -37,17 +36,17 @@ public class TraceSegmentServiceHandler extends TraceSegmentServiceGrpc.TraceSeg private final Logger logger = LoggerFactory.getLogger(TraceSegmentServiceHandler.class); - private final ITraceSegmentService traceSegmentService; + private final ISegmentParseService segmentParseService; public TraceSegmentServiceHandler(ModuleManager moduleManager) { - this.traceSegmentService = moduleManager.find(AgentStreamModule.NAME).getService(ITraceSegmentService.class); + this.segmentParseService = moduleManager.find(AnalysisSegmentParserModule.NAME).getService(ISegmentParseService.class); } @Override public StreamObserver collect(StreamObserver responseObserver) { return new StreamObserver() { @Override public void onNext(UpstreamSegment segment) { logger.debug("receive segment"); - traceSegmentService.send(segment); + segmentParseService.parse(segment, ISegmentParseService.Source.Agent); } @Override public void onError(Throwable throwable) { diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml new file mode 100644 index 000000000..e37496181 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/pom.xml @@ -0,0 +1,36 @@ + + + + + + apm-collector-analysis + org.apache.skywalking + 5.0.0-alpha + + 4.0.0 + + analysis-segment-parser + pom + + segment-parser-define + segment-parser-provider + + \ No newline at end of file diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml new file mode 100644 index 000000000..b11ad2445 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/pom.xml @@ -0,0 +1,40 @@ + + + + + + analysis-segment-parser + org.apache.skywalking + 5.0.0-alpha + + 4.0.0 + + segment-parser-define + jar + + + + org.apache.skywalking + apm-network + ${project.version} + + + \ No newline at end of file diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java new file mode 100644 index 000000000..003ada677 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/AnalysisSegmentParserModule.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.define; + +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParserListenerRegister; +import org.apache.skywalking.apm.collector.core.module.Module; + +/** + * @author peng-yongsheng + */ +public class AnalysisSegmentParserModule extends Module { + + public static final String NAME = "analysis_segment_parser"; + + @Override public String name() { + return NAME; + } + + @Override public Class[] services() { + return new Class[] {ISegmentParseService.class, ISegmentParserListenerRegister.class}; + } +} diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java similarity index 98% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java index f1abfa51e..1c005c796 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceDecorator.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/ReferenceDecorator.java @@ -17,7 +17,7 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator; import org.apache.skywalking.apm.network.proto.RefType; import org.apache.skywalking.apm.network.proto.TraceSegmentReference; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SegmentDecorator.java similarity index 96% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SegmentDecorator.java index 71b8cf57d..b7a0586b5 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentDecorator.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SegmentDecorator.java @@ -17,7 +17,7 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator; import org.apache.skywalking.apm.network.proto.TraceSegmentObject; import org.apache.skywalking.apm.network.proto.UniqueId; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SpanDecorator.java similarity index 98% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SpanDecorator.java index e10603290..ce1f69d02 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanDecorator.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/SpanDecorator.java @@ -17,7 +17,7 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator; import org.apache.skywalking.apm.network.proto.SpanLayer; import org.apache.skywalking.apm.network.proto.SpanObject; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/StandardBuilder.java similarity index 91% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/StandardBuilder.java index 4746c943d..11ccda5d1 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/StandardBuilder.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/decorator/StandardBuilder.java @@ -17,7 +17,7 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/EntrySpanListener.java similarity index 84% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/EntrySpanListener.java index b945743d4..4e23f44dd 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/EntrySpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/EntrySpanListener.java @@ -16,14 +16,13 @@ * */ +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener; -package org.apache.skywalking.apm.collector.agent.stream.parser; - -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; /** * @author peng-yongsheng */ public interface EntrySpanListener extends SpanListener { void parseEntry(SpanDecorator spanDecorator, int applicationId, int instanceId, String segmentId); -} +} \ No newline at end of file diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/ExitSpanListener.java similarity index 84% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/ExitSpanListener.java index efec50cb1..5f468db66 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/ExitSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/ExitSpanListener.java @@ -16,10 +16,9 @@ * */ +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener; -package org.apache.skywalking.apm.collector.agent.stream.parser; - -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/FirstSpanListener.java similarity index 84% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/FirstSpanListener.java index 57f6457ec..c56a6cb5d 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/FirstSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/FirstSpanListener.java @@ -16,10 +16,9 @@ * */ +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener; -package org.apache.skywalking.apm.collector.agent.stream.parser; - -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/GlobalTraceIdsListener.java similarity index 92% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/GlobalTraceIdsListener.java index b7e088dcc..ee70b8618 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/GlobalTraceIdsListener.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/GlobalTraceIdsListener.java @@ -16,8 +16,7 @@ * */ - -package org.apache.skywalking.apm.collector.agent.stream.parser; +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener; import org.apache.skywalking.apm.network.proto.UniqueId; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/LocalSpanListener.java similarity index 84% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/LocalSpanListener.java index 9c7cdbbd9..6eceae55b 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/LocalSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/LocalSpanListener.java @@ -16,10 +16,9 @@ * */ +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener; -package org.apache.skywalking.apm.collector.agent.stream.parser; - -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SpanListener.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/SpanListener.java similarity index 91% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SpanListener.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/SpanListener.java index 9e52d0ac0..3fd744ed1 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/listener/SpanListener.java @@ -16,8 +16,7 @@ * */ - -package org.apache.skywalking.apm.collector.agent.stream.parser; +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java new file mode 100644 index 000000000..2547cc64a --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParseService.java @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.service; + +import org.apache.skywalking.apm.collector.core.module.Service; +import org.apache.skywalking.apm.network.proto.UpstreamSegment; + +/** + * @author peng-yongsheng + */ +public interface ISegmentParseService extends Service { + void parse(UpstreamSegment segment, Source source); + + enum Source { + Agent, Buffer + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java new file mode 100644 index 000000000..b1a6ce9b3 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/define/service/ISegmentParserListenerRegister.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.define.service; + +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener; +import org.apache.skywalking.apm.collector.core.module.Service; + +/** + * @author peng-yongsheng + */ +public interface ISegmentParserListenerRegister extends Service { + void register(SpanListener spanListener); +} diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module new file mode 100644 index 000000000..8fb3ff209 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-define/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.Module @@ -0,0 +1,19 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule \ No newline at end of file diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml new file mode 100644 index 000000000..e987c1abf --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/pom.xml @@ -0,0 +1,40 @@ + + + + + + analysis-segment-parser + org.apache.skywalking + 5.0.0-alpha + + 4.0.0 + + segment-parser-provider + jar + + + + org.apache.skywalking + segment-parser-define + ${project.version} + + + \ No newline at end of file diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java new file mode 100644 index 000000000..f47ca2179 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisTraceParseModuleProvider.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider; + +import java.util.Properties; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.AnalysisSegmentParserModule; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParserListenerRegister; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParserListenerManager; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service.SegmentParseService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service.SegmentParserListenerRegister; +import org.apache.skywalking.apm.collector.core.module.Module; +import org.apache.skywalking.apm.collector.core.module.ModuleProvider; +import org.apache.skywalking.apm.collector.core.module.ServiceNotProvidedException; + +/** + * @author peng-yongsheng + */ +public class AnalysisTraceParseModuleProvider extends ModuleProvider { + + public static final String NAME = "default"; + private SegmentParserListenerManager listenerManager; + + @Override public String name() { + return NAME; + } + + @Override public Class module() { + return AnalysisSegmentParserModule.class; + } + + @Override public void prepare(Properties config) throws ServiceNotProvidedException { + this.listenerManager = new SegmentParserListenerManager(); + this.registerServiceImplementation(ISegmentParserListenerRegister.class, new SegmentParserListenerRegister(listenerManager)); + this.registerServiceImplementation(ISegmentParseService.class, new SegmentParseService(getManager(), listenerManager)); + } + + @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-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SegmentParse.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParse.java similarity index 73% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SegmentParse.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParse.java index 76bb577e0..60998e3c7 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/SegmentParse.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParse.java @@ -16,33 +16,29 @@ * */ - -package org.apache.skywalking.apm.collector.agent.stream.parser; +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser; import com.google.protobuf.InvalidProtocolBufferException; -import java.util.ArrayList; import java.util.List; -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceIdExchanger; -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SegmentDecorator; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceEntrySpanListener; -import org.apache.skywalking.apm.collector.core.graph.GraphManager; -import org.apache.skywalking.apm.collector.agent.stream.graph.TraceStreamGraph; -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.ReferenceDecorator; -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SegmentStandardization; -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanDecorator; -import org.apache.skywalking.apm.collector.agent.stream.parser.standardization.SpanIdExchanger; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.application.ApplicationComponentSpanListener; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.application.ApplicationMappingSpanListener; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.application.ApplicationReferenceMetricSpanListener; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.global.GlobalTraceSpanListener; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.instance.InstanceMetricSpanListener; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.segment.SegmentCostSpanListener; -import org.apache.skywalking.apm.collector.agent.stream.worker.trace.service.ServiceReferenceMetricSpanListener; +import javax.swing.text.Segment; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.ReferenceDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SegmentDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.EntrySpanListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.ExitSpanListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.FirstSpanListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.GlobalTraceIdsListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.LocalSpanListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization.ReferenceIdExchanger; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization.SegmentStandardization; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization.SpanIdExchanger; import org.apache.skywalking.apm.collector.core.UnexpectedException; import org.apache.skywalking.apm.collector.core.graph.Graph; +import org.apache.skywalking.apm.collector.core.graph.GraphManager; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; -import org.apache.skywalking.apm.collector.storage.table.segment.Segment; import org.apache.skywalking.apm.network.proto.SpanType; import org.apache.skywalking.apm.network.proto.TraceSegmentObject; import org.apache.skywalking.apm.network.proto.UniqueId; @@ -57,25 +53,17 @@ public class SegmentParse { private final Logger logger = LoggerFactory.getLogger(SegmentParse.class); - private final List spanListeners; private final ModuleManager moduleManager; + private final SegmentParserListenerManager listenerManager; private String segmentId; private long timeBucket = 0; - public SegmentParse(ModuleManager moduleManager) { + public SegmentParse(ModuleManager moduleManager, SegmentParserListenerManager listenerManager) { this.moduleManager = moduleManager; - this.spanListeners = new ArrayList<>(); - this.spanListeners.add(new ApplicationComponentSpanListener()); - this.spanListeners.add(new ApplicationMappingSpanListener()); - this.spanListeners.add(new ApplicationReferenceMetricSpanListener(moduleManager)); - this.spanListeners.add(new SegmentCostSpanListener(moduleManager)); - this.spanListeners.add(new GlobalTraceSpanListener()); - this.spanListeners.add(new ServiceEntrySpanListener(moduleManager)); - this.spanListeners.add(new ServiceReferenceMetricSpanListener()); - this.spanListeners.add(new InstanceMetricSpanListener()); + this.listenerManager = listenerManager; } - public boolean parse(UpstreamSegment segment, Source source) { + public boolean parse(UpstreamSegment segment, ISegmentParseService.Source source) { try { List traceIds = segment.getGlobalTraceIdsList(); TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(segment.getSegment()); @@ -85,7 +73,7 @@ public class SegmentParse { if (!preBuild(traceIds, segmentDecorator)) { logger.debug("This segment id exchange not success, write to buffer file, id: {}", segmentId); - if (source.equals(Source.Agent)) { + if (source.equals(ISegmentParseService.Source.Agent)) { writeToBufferFile(segmentId, segment); } return false; @@ -184,12 +172,12 @@ public class SegmentParse { } private void notifyListenerToBuild() { - spanListeners.forEach(SpanListener::build); + listenerManager.getSpanListeners().forEach(SpanListener::build); } private void notifyExitListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) { - for (SpanListener listener : spanListeners) { + for (SpanListener listener : listenerManager.getSpanListeners()) { if (listener instanceof ExitSpanListener) { ((ExitSpanListener)listener).parseExit(spanDecorator, applicationId, applicationInstanceId, segmentId); } @@ -198,7 +186,7 @@ public class SegmentParse { private void notifyEntryListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) { - for (SpanListener listener : spanListeners) { + for (SpanListener listener : listenerManager.getSpanListeners()) { if (listener instanceof EntrySpanListener) { ((EntrySpanListener)listener).parseEntry(spanDecorator, applicationId, applicationInstanceId, segmentId); } @@ -207,7 +195,7 @@ public class SegmentParse { private void notifyLocalListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) { - for (SpanListener listener : spanListeners) { + for (SpanListener listener : listenerManager.getSpanListeners()) { if (listener instanceof LocalSpanListener) { ((LocalSpanListener)listener).parseLocal(spanDecorator, applicationId, applicationInstanceId, segmentId); } @@ -216,7 +204,7 @@ public class SegmentParse { private void notifyFirstListener(SpanDecorator spanDecorator, int applicationId, int applicationInstanceId, String segmentId) { - for (SpanListener listener : spanListeners) { + for (SpanListener listener : listenerManager.getSpanListeners()) { if (listener instanceof FirstSpanListener) { ((FirstSpanListener)listener).parseFirst(spanDecorator, applicationId, applicationInstanceId, segmentId); } @@ -224,14 +212,10 @@ public class SegmentParse { } private void notifyGlobalsListener(UniqueId uniqueId) { - for (SpanListener listener : spanListeners) { + for (SpanListener listener : listenerManager.getSpanListeners()) { if (listener instanceof GlobalTraceIdsListener) { ((GlobalTraceIdsListener)listener).parseGlobalTraceId(uniqueId); } } } - - public enum Source { - Agent, Buffer - } } diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java new file mode 100644 index 000000000..86c1ba1f3 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/SegmentParserListenerManager.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser; + +import java.util.ArrayList; +import java.util.List; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener; + +/** + * @author peng-yongsheng + */ +public class SegmentParserListenerManager { + + private List spanListeners; + + public SegmentParserListenerManager() { + this.spanListeners = new ArrayList<>(); + } + + public void add(SpanListener spanListener) { + spanListeners.add(spanListener); + } + + public List getSpanListeners() { + return spanListeners; + } +} diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java similarity index 82% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java index 8da122835..6bf7148c7 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/IdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/IdExchanger.java @@ -17,7 +17,9 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; + +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.StandardBuilder; /** * @author peng-yongsheng diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java similarity index 96% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java index 872f011c4..2fbfcf121 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/ReferenceIdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/ReferenceIdExchanger.java @@ -17,8 +17,9 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.ReferenceDecorator; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService; import org.apache.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardization.java similarity index 93% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardization.java index 256facbc4..08717ce40 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardization.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardization.java @@ -17,7 +17,7 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; import org.apache.skywalking.apm.collector.core.data.EndOfBatchQueueMessage; import org.apache.skywalking.apm.network.proto.UpstreamSegment; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardizationWorker.java similarity index 96% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardizationWorker.java index fe08b8726..12b6206d6 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SegmentStandardizationWorker.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SegmentStandardizationWorker.java @@ -17,7 +17,7 @@ */ -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; diff --git a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java similarity index 94% rename from apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java rename to apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java index e7774fcf5..876c58f81 100644 --- a/apm-collector/apm-collector-agent-stream/collector-agent-stream-provider/src/main/java/org/apache/skywalking/apm/collector/agent/stream/parser/standardization/SpanIdExchanger.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/parser/standardization/SpanIdExchanger.java @@ -16,11 +16,11 @@ * */ - -package org.apache.skywalking.apm.collector.agent.stream.parser.standardization; +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.standardization; import org.apache.skywalking.apm.collector.agent.stream.worker.register.ApplicationIDService; import org.apache.skywalking.apm.collector.agent.stream.worker.register.ServiceNameService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.decorator.SpanDecorator; import org.apache.skywalking.apm.collector.core.module.ModuleManager; import org.apache.skywalking.apm.collector.core.util.Const; import org.apache.skywalking.apm.collector.core.util.StringUtils; diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java new file mode 100644 index 000000000..c848fe4ea --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParseService.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service; + +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParseService; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParse; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParserListenerManager; +import org.apache.skywalking.apm.collector.core.module.ModuleManager; +import org.apache.skywalking.apm.network.proto.UpstreamSegment; + +/** + * @author peng-yongsheng + */ +public class SegmentParseService implements ISegmentParseService { + + private final ModuleManager moduleManager; + private final SegmentParserListenerManager listenerManager; + + public SegmentParseService(ModuleManager moduleManager, SegmentParserListenerManager listenerManager) { + this.moduleManager = moduleManager; + this.listenerManager = listenerManager; + } + + @Override public void parse(UpstreamSegment segment, Source source) { + SegmentParse segmentParse = new SegmentParse(moduleManager, listenerManager); + segmentParse.parse(segment, source); + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java new file mode 100644 index 000000000..2a903d067 --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/service/SegmentParserListenerRegister.java @@ -0,0 +1,39 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.service; + +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.listener.SpanListener; +import org.apache.skywalking.apm.collector.analysis.segment.parser.define.service.ISegmentParserListenerRegister; +import org.apache.skywalking.apm.collector.analysis.segment.parser.provider.parser.SegmentParserListenerManager; + +/** + * @author peng-yongsheng + */ +public class SegmentParserListenerRegister implements ISegmentParserListenerRegister { + + private final SegmentParserListenerManager listenerManager; + + public SegmentParserListenerRegister(SegmentParserListenerManager listenerManager) { + this.listenerManager = listenerManager; + } + + @Override public void register(SpanListener spanListener) { + this.listenerManager.add(spanListener); + } +} diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider new file mode 100644 index 000000000..d33d1248f --- /dev/null +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/resources/META-INF/services/org.apache.skywalking.apm.collector.core.module.ModuleProvider @@ -0,0 +1,37 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +org.apache.skywalking.apm.collector.analysis.segment.parser.provider.AnalysisTraceParseModuleProvider \ No newline at end of file diff --git a/apm-collector/apm-collector-analysis/pom.xml b/apm-collector/apm-collector-analysis/pom.xml index 397062a43..cfab3c96e 100644 --- a/apm-collector/apm-collector-analysis/pom.xml +++ b/apm-collector/apm-collector-analysis/pom.xml @@ -28,6 +28,16 @@ 4.0.0 apm-collector-analysis + pom + + analysis-segment-parser + - + + + org.apache.skywalking + apm-collector-core + ${project.version} + + \ No newline at end of file -- GitLab