diff --git a/docker/config/application.yml b/docker/config/application.yml index fa4cbb64add7327bcbb097fb588d6653692a9cee..4090e0f3efa4a87aab7f47287df6d2011f845d70 100644 --- a/docker/config/application.yml +++ b/docker/config/application.yml @@ -66,6 +66,8 @@ storage: # url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db} # user: ${SW_STORAGE_H2_USER:sa} # mysql: +receiver-sharing-server: + default: receiver-register: default: receiver-trace: diff --git a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/grpc/GRPCServer.java b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/grpc/GRPCServer.java index 86e67de9f45871813e9af6e9665b2f0dc75f1798..3d5eebab79d1dc11f39737c9acf0a5cffb09db63 100644 --- a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/grpc/GRPCServer.java +++ b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/grpc/GRPCServer.java @@ -112,10 +112,12 @@ public class GRPCServer implements Server { } public void addHandler(BindableService handler) { + logger.info("Bind handler {} into gRPC server {}:{}", handler.getClass().getSimpleName(), host, port); nettyServerBuilder.addService(handler); } public void addHandler(ServerServiceDefinition definition) { + logger.info("Bind handler {} into gRPC server {}:{}", definition.getClass().getSimpleName(), host, port); nettyServerBuilder.addService(definition); } diff --git a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java index af8c91e546bfc439ff7d7b72d5d5252687e0d02b..ec96327a2338982c954eea18cacc7269bd9ae7e7 100644 --- a/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java +++ b/oap-server/server-library/library-server/src/main/java/org/apache/skywalking/oap/server/library/server/jetty/JettyServer.java @@ -71,6 +71,8 @@ public class JettyServer implements Server { } public void addHandler(JettyHandler handler) { + logger.info("Bind handler {} into jetty server {}:{}", handler.getClass().getSimpleName(), host, port); + ServletHolder servletHolder = new ServletHolder(); servletHolder.setServlet(handler); servletContextHandler.addServlet(servletHolder, handler.pathSpec()); diff --git a/oap-server/server-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/pom.xml index 20ce3152350974dca8817c422cd0cbac9ae58daf..e276a5a9d3760a758c933ce1427eb82cff2e684a 100644 --- a/oap-server/server-receiver-plugin/pom.xml +++ b/oap-server/server-receiver-plugin/pom.xml @@ -35,6 +35,7 @@ skywalking-register-receiver-plugin skywalking-jvm-receiver-plugin envoy-metrics-receiver-plugin + skywalking-sharing-server-plugin diff --git a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java index 3b5afdbc186f698cf515143bf142e4431dd74dbd..ee61fb6802cdcc5a148ff4106ab3bcf7ad0550a9 100644 --- a/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-istio-telemetry-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/istio/telemetry/provider/IstioTelemetryReceiverProvider.java @@ -23,6 +23,7 @@ import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; import org.apache.skywalking.oap.server.library.module.*; import org.apache.skywalking.oap.server.receiver.istio.telemetry.module.IstioTelemetryReceiverModule; +import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; public class IstioTelemetryReceiverProvider extends ModuleProvider { @@ -42,7 +43,7 @@ public class IstioTelemetryReceiverProvider extends ModuleProvider { } @Override public void start() throws ServiceNotProvidedException, ModuleStartException { - GRPCHandlerRegister service = getManager().find(CoreModule.NAME).provider().getService(GRPCHandlerRegister.class); + GRPCHandlerRegister service = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); service.addHandler(new IstioTelemetryGRPCHandler(getManager())); } diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml index 0040b696303643aac9bedd7e8bdfe5de776089b2..7959d197624959ce230e32e62768cba3542aee78 100644 --- a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml +++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/pom.xml @@ -17,7 +17,8 @@ ~ --> - + server-receiver-plugin org.apache.skywalking @@ -27,4 +28,12 @@ skywalking-jvm-receiver-plugin jar + + + + org.apache.skywalking + skywalking-sharing-server-plugin + ${project.version} + + \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java index d199512c3dcebe1bdace771cb6b67f8786d61759..535144b59bbb7079e8d2e23c9760e89483758818 100644 --- a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java @@ -20,12 +20,10 @@ package org.apache.skywalking.oap.server.receiver.jvm.provider; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; -import org.apache.skywalking.oap.server.library.module.ModuleConfig; -import org.apache.skywalking.oap.server.library.module.ModuleDefine; -import org.apache.skywalking.oap.server.library.module.ModuleProvider; +import org.apache.skywalking.oap.server.library.module.*; import org.apache.skywalking.oap.server.receiver.jvm.module.JVMModule; -import org.apache.skywalking.oap.server.receiver.jvm.provider.handler.JVMMetricReportServiceHandler; -import org.apache.skywalking.oap.server.receiver.jvm.provider.handler.JVMMetricsServiceHandler; +import org.apache.skywalking.oap.server.receiver.jvm.provider.handler.*; +import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; /** * @author peng-yongsheng @@ -48,7 +46,7 @@ public class JVMModuleProvider extends ModuleProvider { } @Override public void start() { - GRPCHandlerRegister grpcHandlerRegister = getManager().find(CoreModule.NAME).provider().getService(GRPCHandlerRegister.class); + GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); grpcHandlerRegister.addHandler(new JVMMetricsServiceHandler(getManager())); grpcHandlerRegister.addHandler(new JVMMetricReportServiceHandler(getManager())); } @@ -58,6 +56,6 @@ public class JVMModuleProvider extends ModuleProvider { } @Override public String[] requiredModules() { - return new String[] {CoreModule.NAME}; + return new String[] {CoreModule.NAME, SharingServerModule.NAME}; } } diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/pom.xml index cae9db7b698144d3f5f3ff5bccbf2a33a09e34ec..501270ed91c0cd8f2bdb91bce6dfd898040efde3 100644 --- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/pom.xml +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/pom.xml @@ -17,7 +17,8 @@ ~ --> - + server-receiver-plugin org.apache.skywalking @@ -28,4 +29,11 @@ skywalking-mesh-receiver-plugin jar + + + org.apache.skywalking + skywalking-sharing-server-plugin + ${project.version} + + \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java index d221fe2b1c831ed4e88c10475398d038330b0a00..c629db010976e1c7ee50ec08018556809a35014f 100644 --- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java @@ -22,7 +22,7 @@ import java.io.IOException; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; import org.apache.skywalking.oap.server.library.module.*; -import org.apache.skywalking.oap.server.library.module.ModuleDefine; +import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; public class MeshReceiverProvider extends ModuleProvider { @@ -56,7 +56,7 @@ public class MeshReceiverProvider extends ModuleProvider { throw new ModuleStartException(e.getMessage(), e); } CoreRegisterLinker.setModuleManager(getManager()); - GRPCHandlerRegister service = getManager().find(CoreModule.NAME).provider().getService(GRPCHandlerRegister.class); + GRPCHandlerRegister service = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); service.addHandler(new MeshGRPCHandler(getManager())); } @@ -65,6 +65,6 @@ public class MeshReceiverProvider extends ModuleProvider { } @Override public String[] requiredModules() { - return new String[] {TelemetryModule.NAME, CoreModule.NAME}; + return new String[] {TelemetryModule.NAME, CoreModule.NAME, SharingServerModule.NAME}; } } diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/pom.xml index 34e99279654d46b78ba7b08173b06926df3c4e68..9a1d1604da0cc15e429f15f400836eaa47a3f899 100644 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/pom.xml +++ b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/pom.xml @@ -17,7 +17,8 @@ ~ --> - + server-receiver-plugin org.apache.skywalking @@ -34,5 +35,10 @@ apm-network ${project.version} + + org.apache.skywalking + skywalking-sharing-server-plugin + ${project.version} + \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java index 56d6378c4fb42f97d9dcefda9618fe40172d00d2..ffdba9000d137d409b28692240f532c743f3af00 100644 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java @@ -19,23 +19,13 @@ package org.apache.skywalking.oap.server.receiver.register.provider; import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; -import org.apache.skywalking.oap.server.core.server.JettyHandlerRegister; -import org.apache.skywalking.oap.server.library.module.ModuleConfig; -import org.apache.skywalking.oap.server.library.module.ModuleDefine; -import org.apache.skywalking.oap.server.library.module.ModuleProvider; +import org.apache.skywalking.oap.server.core.server.*; +import org.apache.skywalking.oap.server.library.module.*; import org.apache.skywalking.oap.server.receiver.register.module.RegisterModule; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc.ApplicationRegisterHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc.InstanceDiscoveryServiceHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc.NetworkAddressRegisterServiceHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc.ServiceNameDiscoveryHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.ApplicationRegisterServletHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.InstanceDiscoveryServletHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.InstanceHeartBeatServletHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.NetworkAddressRegisterServletHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.ServiceNameDiscoveryServiceHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v6.grpc.RegisterServiceHandler; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v6.grpc.ServiceInstancePingServiceHandler; +import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc.*; +import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.*; +import org.apache.skywalking.oap.server.receiver.register.provider.handler.v6.grpc.*; +import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; /** * @author peng-yongsheng @@ -58,7 +48,7 @@ public class RegisterModuleProvider extends ModuleProvider { } @Override public void start() { - GRPCHandlerRegister grpcHandlerRegister = getManager().find(CoreModule.NAME).provider().getService(GRPCHandlerRegister.class); + GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); grpcHandlerRegister.addHandler(new ApplicationRegisterHandler(getManager())); grpcHandlerRegister.addHandler(new InstanceDiscoveryServiceHandler(getManager())); grpcHandlerRegister.addHandler(new ServiceNameDiscoveryHandler(getManager())); @@ -68,7 +58,7 @@ public class RegisterModuleProvider extends ModuleProvider { grpcHandlerRegister.addHandler(new RegisterServiceHandler(getManager())); grpcHandlerRegister.addHandler(new ServiceInstancePingServiceHandler(getManager())); - JettyHandlerRegister jettyHandlerRegister = getManager().find(CoreModule.NAME).provider().getService(JettyHandlerRegister.class); + JettyHandlerRegister jettyHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(JettyHandlerRegister.class); jettyHandlerRegister.addHandler(new ApplicationRegisterServletHandler(getManager())); jettyHandlerRegister.addHandler(new InstanceDiscoveryServletHandler(getManager())); jettyHandlerRegister.addHandler(new InstanceHeartBeatServletHandler(getManager())); @@ -81,6 +71,6 @@ public class RegisterModuleProvider extends ModuleProvider { } @Override public String[] requiredModules() { - return new String[] {CoreModule.NAME}; + return new String[] {CoreModule.NAME, SharingServerModule.NAME}; } } diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..4c9882846619dbe3e1eeeebe7ae717b4400e30b5 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/pom.xml @@ -0,0 +1,32 @@ + + + + + + server-receiver-plugin + org.apache.skywalking + 6.1.0-SNAPSHOT + + 4.0.0 + + skywalking-sharing-server-plugin + jar + \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/ReceiverGRPCHandlerRegister.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/ReceiverGRPCHandlerRegister.java new file mode 100644 index 0000000000000000000000000000000000000000..2638799dd85e21f2174a6497bec35ee86f1e4c6e --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/ReceiverGRPCHandlerRegister.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.oap.server.receiver.sharing.server; + +import io.grpc.*; +import lombok.Setter; +import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; + +/** + * @author peng-yongsheng + */ +public class ReceiverGRPCHandlerRegister implements GRPCHandlerRegister { + + @Setter private GRPCHandlerRegister grpcHandlerRegister; + + @Override public void addHandler(BindableService handler) { + grpcHandlerRegister.addHandler(handler); + } + + @Override public void addHandler(ServerServiceDefinition definition) { + grpcHandlerRegister.addHandler(definition); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/ReceiverJettyHandlerRegister.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/ReceiverJettyHandlerRegister.java new file mode 100644 index 0000000000000000000000000000000000000000..8d7f98124bc4fb23040cf9c8d956e044f5b042e3 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/ReceiverJettyHandlerRegister.java @@ -0,0 +1,35 @@ +/* + * 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.oap.server.receiver.sharing.server; + +import lombok.Setter; +import org.apache.skywalking.oap.server.core.server.JettyHandlerRegister; +import org.apache.skywalking.oap.server.library.server.jetty.JettyHandler; + +/** + * @author peng-yongsheng + */ +public class ReceiverJettyHandlerRegister implements JettyHandlerRegister { + + @Setter private JettyHandlerRegister jettyHandlerRegister; + + @Override public void addHandler(JettyHandler serverHandler) { + jettyHandlerRegister.addHandler(serverHandler); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..7e4cb5f8673762ae9c87029e460af51f68a349b5 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerConfig.java @@ -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. + * + */ + +package org.apache.skywalking.oap.server.receiver.sharing.server; + +import lombok.*; +import org.apache.skywalking.oap.server.library.module.ModuleConfig; + +/** + * @author peng-yongsheng + */ +@Getter +@Setter +public class SharingServerConfig extends ModuleConfig { + private String restHost; + private int restPort; + private String restContextPath; + private String gRPCHost; + private int gRPCPort; + private int maxConcurrentCallsPerConnection; + private int maxMessageSize; +} diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModule.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModule.java new file mode 100644 index 0000000000000000000000000000000000000000..cd858dc9d503c8cc1a302f8b02f8541c19ce170e --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModule.java @@ -0,0 +1,38 @@ +/* + * 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.oap.server.receiver.sharing.server; + +import org.apache.skywalking.oap.server.core.server.*; +import org.apache.skywalking.oap.server.library.module.ModuleDefine; + +/** + * @author peng-yongsheng + */ +public class SharingServerModule extends ModuleDefine { + + public static final String NAME = "receiver-sharing-server"; + + public SharingServerModule() { + super(NAME); + } + + @Override public Class[] services() { + return new Class[] {GRPCHandlerRegister.class, JettyHandlerRegister.class}; + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..adc429afb3b7db1b8accd2d13a5442ca3c30684d --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/sharing/server/SharingServerModuleProvider.java @@ -0,0 +1,116 @@ +/* + * 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.oap.server.receiver.sharing.server; + +import java.util.Objects; +import org.apache.logging.log4j.util.Strings; +import org.apache.skywalking.oap.server.core.CoreModule; +import org.apache.skywalking.oap.server.core.remote.health.HealthCheckServiceHandler; +import org.apache.skywalking.oap.server.core.server.*; +import org.apache.skywalking.oap.server.library.module.*; +import org.apache.skywalking.oap.server.library.server.ServerException; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCServer; +import org.apache.skywalking.oap.server.library.server.jetty.JettyServer; + +/** + * @author peng-yongsheng + */ +public class SharingServerModuleProvider extends ModuleProvider { + + private final SharingServerConfig config; + private GRPCServer grpcServer; + private JettyServer jettyServer; + private ReceiverGRPCHandlerRegister receiverGRPCHandlerRegister; + private ReceiverJettyHandlerRegister receiverJettyHandlerRegister; + + public SharingServerModuleProvider() { + super(); + this.config = new SharingServerConfig(); + } + + @Override public String name() { + return "default"; + } + + @Override public Class module() { + return SharingServerModule.class; + } + + @Override public ModuleConfig createConfigBeanIfAbsent() { + return config; + } + + @Override public void prepare() { + if (config.getRestPort() != 0) { + jettyServer = new JettyServer(Strings.isBlank(config.getRestHost()) ? "0.0.0.0" : config.getRestHost(), config.getRestPort(), config.getRestContextPath()); + jettyServer.initialize(); + + this.registerServiceImplementation(JettyHandlerRegister.class, new JettyHandlerRegisterImpl(jettyServer)); + } else { + this.receiverJettyHandlerRegister = new ReceiverJettyHandlerRegister(); + this.registerServiceImplementation(JettyHandlerRegister.class, receiverJettyHandlerRegister); + } + + if (config.getGRPCPort() != 0) { + grpcServer = new GRPCServer(Strings.isBlank(config.getGRPCHost()) ? "0.0.0.0" : config.getGRPCHost(), config.getGRPCPort()); + if (config.getMaxMessageSize() > 0) { + grpcServer.setMaxMessageSize(config.getMaxMessageSize()); + } + if (config.getMaxConcurrentCallsPerConnection() > 0) { + grpcServer.setMaxConcurrentCallsPerConnection(config.getMaxConcurrentCallsPerConnection()); + } + grpcServer.initialize(); + + this.registerServiceImplementation(GRPCHandlerRegister.class, new GRPCHandlerRegisterImpl(grpcServer)); + } else { + this.receiverGRPCHandlerRegister = new ReceiverGRPCHandlerRegister(); + this.registerServiceImplementation(GRPCHandlerRegister.class, receiverGRPCHandlerRegister); + } + } + + @Override public void start() { + if (Objects.nonNull(grpcServer)) { + grpcServer.addHandler(new HealthCheckServiceHandler()); + } + + if (Objects.nonNull(receiverGRPCHandlerRegister)) { + receiverGRPCHandlerRegister.setGrpcHandlerRegister(getManager().find(CoreModule.NAME).provider().getService(GRPCHandlerRegister.class)); + } + if (Objects.nonNull(receiverJettyHandlerRegister)) { + receiverJettyHandlerRegister.setJettyHandlerRegister(getManager().find(CoreModule.NAME).provider().getService(JettyHandlerRegister.class)); + } + } + + @Override public void notifyAfterCompleted() throws ModuleStartException { + try { + if (Objects.nonNull(grpcServer)) { + grpcServer.start(); + } + if (Objects.nonNull(jettyServer)) { + jettyServer.start(); + } + } catch (ServerException e) { + throw new ModuleStartException(e.getMessage(), e); + } + } + + @Override public String[] requiredModules() { + return new String[] {CoreModule.NAME}; + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine new file mode 100644 index 0000000000000000000000000000000000000000..b76d82c013f622662945754353d685a7c2e5bd4e --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine @@ -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.oap.server.receiver.sharing.server.SharingServerModule \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider new file mode 100644 index 0000000000000000000000000000000000000000..215a987541bb0e029707da05fa6ff265ae25e600 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-sharing-server-plugin/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider @@ -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.oap.server.receiver.sharing.server.SharingServerModuleProvider \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/pom.xml b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/pom.xml index 66170078f2dac8a0b46e2e134fe48a910e54f8e3..9e0a5b7f82921c9598ae5798981636fc6cb0cca0 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/pom.xml +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/pom.xml @@ -17,7 +17,8 @@ ~ --> - + server-receiver-plugin org.apache.skywalking @@ -27,4 +28,12 @@ skywalking-trace-receiver-plugin jar + + + + org.apache.skywalking + skywalking-sharing-server-plugin + ${project.version} + + \ No newline at end of file diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java index 367702dcc97e9a5d9da7dfc8e1d29a94a9951576..e346503a979c3fdfd36cf1e47ae3d6d24d2e3a02 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java @@ -22,6 +22,7 @@ import java.io.IOException; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.server.*; import org.apache.skywalking.oap.server.library.module.*; +import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; import org.apache.skywalking.oap.server.receiver.trace.module.TraceModule; import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.grpc.TraceSegmentServiceHandler; import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.TraceSegmentServletHandler; @@ -79,8 +80,8 @@ public class TraceModuleProvider extends ModuleProvider { } @Override public void start() throws ModuleStartException { - GRPCHandlerRegister grpcHandlerRegister = getManager().find(CoreModule.NAME).provider().getService(GRPCHandlerRegister.class); - JettyHandlerRegister jettyHandlerRegister = getManager().find(CoreModule.NAME).provider().getService(JettyHandlerRegister.class); + GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); + JettyHandlerRegister jettyHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(JettyHandlerRegister.class); try { grpcHandlerRegister.addHandler(new TraceSegmentServiceHandler(segmentProducer)); @@ -106,6 +107,6 @@ public class TraceModuleProvider extends ModuleProvider { } @Override public String[] requiredModules() { - return new String[] {TelemetryModule.NAME, CoreModule.NAME}; + return new String[] {TelemetryModule.NAME, CoreModule.NAME, SharingServerModule.NAME}; } } diff --git a/oap-server/server-starter/src/main/assembly/application.yml b/oap-server/server-starter/src/main/assembly/application.yml index 3f12d5aa19172c509d3c18c6db484034b115da86..b6d963916a4f8bfe0fc6e3923d5a279076a6063e 100644 --- a/oap-server/server-starter/src/main/assembly/application.yml +++ b/oap-server/server-starter/src/main/assembly/application.yml @@ -66,6 +66,8 @@ storage: # flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests # concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests # mysql: +receiver-sharing-server: + default: receiver-register: default: receiver-trace: diff --git a/oap-server/server-starter/src/main/resources/application.yml b/oap-server/server-starter/src/main/resources/application.yml index 616cddaa1aa0701c26dc2bbe5cd180914ccb23a1..4309e37627b0ae55a83c64bcabe6471b53ca1ee1 100644 --- a/oap-server/server-starter/src/main/resources/application.yml +++ b/oap-server/server-starter/src/main/resources/application.yml @@ -66,6 +66,8 @@ storage: # url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db} # user: ${SW_STORAGE_H2_USER:sa} # mysql: +receiver-sharing-server: + default: receiver-register: default: receiver-trace: