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 extends ModuleDefine> 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: