提交 50c14dd0 编写于 作者: P peng-yongsheng

Naming module and zookeeper provider in cluster module test successful.

上级 bd9d21fc
......@@ -72,10 +72,19 @@
<version>${project.version}</version>
</dependency>
<!-- jetty manager provider -->
<!-- naming jetty provider -->
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-naming-jetty-provider</artifactId>
<version>${project.version}</version>
</dependency>
<!-- naming jetty provider -->
<!-- ui jetty provider -->
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-ui-jetty-provider</artifactId>
<version>${project.version}</version>
</dependency>
<!-- ui jetty provider -->
</dependencies>
</project>
\ No newline at end of file
......@@ -2,11 +2,11 @@ cluster:
zookeeper:
hostPort: localhost:2181
sessionTimeout: 100000
#agent_server:
# jetty:
# host: localhost
# port: 10800
# context_path: /
naming:
jetty:
host: localhost
port: 10800
context_path: /
#agent_stream:
# grpc:
# host: localhost
......
......@@ -20,7 +20,6 @@ package org.skywalking.apm.collector.cluster;
import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.Service;
......@@ -36,6 +35,6 @@ public class ClusterModule extends Module {
}
@Override public Class<? extends Service>[] services() {
return new Class[] {ModuleListenerService.class, ModuleRegisterService.class, ModuleRegistrationGetService.class};
return new Class[] {ModuleListenerService.class, ModuleRegisterService.class};
}
}
......@@ -21,7 +21,6 @@ package org.skywalking.apm.collector.cluster.redis;
import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegisterService;
import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegistrationGetService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleProvider;
......@@ -42,7 +41,6 @@ public class ClusterModuleRedisProvider extends ModuleProvider {
@Override public void prepare(Properties config) throws ServiceNotProvidedException {
this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegisterService());
this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegistrationGetService());
}
@Override public void start(Properties config) throws ServiceNotProvidedException {
......
......@@ -22,7 +22,6 @@ import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegisterService;
import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegistrationGetService;
import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleProvider;
import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
......@@ -42,7 +41,6 @@ public class ClusterModuleStandaloneProvider extends ModuleProvider {
@Override public void prepare(Properties config) throws ServiceNotProvidedException {
this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegisterService());
this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegistrationGetService());
}
@Override public void start(Properties config) throws ServiceNotProvidedException {
......
......@@ -24,10 +24,8 @@ import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException;
import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleListenerService;
import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegisterService;
import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegistrationGetService;
import org.skywalking.apm.collector.core.CollectorException;
import org.skywalking.apm.collector.core.UnexpectedException;
import org.skywalking.apm.collector.core.module.Module;
......@@ -67,7 +65,6 @@ public class ClusterModuleZookeeperProvider extends ModuleProvider {
this.registerServiceImplementation(ModuleListenerService.class, new ZookeeperModuleListenerService(dataMonitor));
this.registerServiceImplementation(ModuleRegisterService.class, new ZookeeperModuleRegisterService(dataMonitor));
this.registerServiceImplementation(ModuleRegistrationGetService.class, new ZookeeperModuleRegistrationGetService());
}
@Override public void start(Properties config) throws ServiceNotProvidedException {
......
......@@ -33,7 +33,6 @@ import org.skywalking.apm.collector.client.Client;
import org.skywalking.apm.collector.client.ClientException;
import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient;
import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException;
import org.skywalking.apm.collector.client.zookeeper.util.PathUtils;
import org.skywalking.apm.collector.cluster.ClusterModuleListener;
import org.skywalking.apm.collector.cluster.ClusterNodeExistException;
import org.skywalking.apm.collector.cluster.DataMonitor;
......@@ -130,7 +129,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher {
}
@Override public void addListener(ClusterModuleListener listener) {
String path = PathUtils.convertKey2Path(listener.path());
String path = BASE_CATALOG + listener.path();
logger.info("listener path: {}", path);
listeners.put(path, listener);
}
......@@ -140,7 +139,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher {
}
@Override public ClusterModuleListener getListener(String path) {
path = PathUtils.convertKey2Path(path);
path = BASE_CATALOG + path;
return listeners.get(path);
}
......
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.cluster.zookeeper.service;
import java.util.Set;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
/**
* @author peng-yongsheng
*/
public class ZookeeperModuleRegistrationGetService implements ModuleRegistrationGetService {
@Override public Set<String> get(String path) {
return null;
}
}
......@@ -22,6 +22,7 @@ import java.net.InetSocketAddress;
import javax.servlet.http.HttpServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.servlet.ServletMapping;
import org.skywalking.apm.collector.server.Server;
import org.skywalking.apm.collector.server.ServerException;
import org.skywalking.apm.collector.server.ServerHandler;
......@@ -73,6 +74,9 @@ public class JettyServer implements Server {
@Override public void start() throws ServerException {
try {
for (ServletMapping servletMapping : servletContextHandler.getServletHandler().getServletMappings()) {
logger.info("jetty servlet mappings: {} register by {}", servletMapping.getPathSpecs(), servletMapping.getServletName());
}
server.start();
} catch (Exception e) {
throw new JettyServerException(e.getMessage(), e);
......
......@@ -2,11 +2,11 @@ cluster:
h2:
hostPort: localhost:2181
sessionTimeout: 100000
#agent_server:
# jetty:
# host: localhost
# port: 10800
# context_path: /
naming:
jetty:
host: localhost
port: 10800
context_path: /
#agent_stream:
# grpc:
# host: localhost
......
......@@ -20,19 +20,20 @@ package org.skywalking.apm.collector.naming;
import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.Service;
import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
/**
* @author peng-yongsheng
*/
public class NamingModule extends Module {
public static final String NAME = "Naming";
public static final String NAME = "naming";
@Override public String name() {
return NAME;
}
@Override public Class<? extends Service>[] services() {
return new Class[0];
return new Class[] {NamingHandlerRegisterService.class};
}
}
......@@ -16,14 +16,14 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.cluster.service;
package org.skywalking.apm.collector.naming.service;
import java.util.Set;
import org.skywalking.apm.collector.core.module.Service;
import org.skywalking.apm.collector.server.ServerHandler;
/**
* @author peng-yongsheng
*/
public interface ModuleRegistrationGetService extends Service {
Set<String> get(String path);
public interface NamingHandlerRegisterService extends Service {
void register(ServerHandler namingHandler);
}
......@@ -38,17 +38,7 @@
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-cluster-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-server-manager-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>server-component</artifactId>
<artifactId>collector-jetty-manager-define</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
......
......@@ -18,20 +18,21 @@
package org.skywalking.apm.collector.naming.jetty;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
import org.skywalking.apm.collector.core.module.ModuleProvider;
import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
import org.skywalking.apm.collector.jetty.manager.JettyManagerModule;
import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService;
import org.skywalking.apm.collector.naming.NamingModule;
import org.skywalking.apm.collector.naming.jetty.handler.AgentGRPCNamingHandler;
import org.skywalking.apm.collector.naming.jetty.handler.AgentJettyNamingHandler;
import org.skywalking.apm.collector.naming.jetty.handler.UIJettyNamingHandler;
import org.skywalking.apm.collector.naming.jetty.service.NamingJettyHandlerRegisterService;
import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
import org.skywalking.apm.collector.server.Server;
import org.skywalking.apm.collector.server.manager.ServerManagerModule;
import org.skywalking.apm.collector.server.manager.service.JettyServerConfig;
import org.skywalking.apm.collector.server.manager.service.JettyServerManagerService;
import org.skywalking.apm.collector.server.ServerHandler;
/**
* @author peng-yongsheng
......@@ -41,9 +42,10 @@ public class NamingModuleJettyProvider extends ModuleProvider {
private static final String HOST = "host";
private static final String PORT = "port";
private static final String CONTEXT_PATH = "context_path";
private final List<ServerHandler> handlers = new ArrayList<>();
@Override public String name() {
return "Jetty";
return "jetty";
}
@Override public Class<? extends Module> module() {
......@@ -51,33 +53,28 @@ public class NamingModuleJettyProvider extends ModuleProvider {
}
@Override public void prepare(Properties config) throws ServiceNotProvidedException {
this.registerServiceImplementation(NamingHandlerRegisterService.class, new NamingJettyHandlerRegisterService(handlers));
}
@Override public void start(Properties config) throws ServiceNotProvidedException {
String host = config.getProperty(HOST);
String port = config.getProperty(PORT);
Integer port = (Integer)config.get(PORT);
String contextPath = config.getProperty(CONTEXT_PATH);
JettyServerConfig serverConfig = new JettyServerConfig(host, Integer.valueOf(port), contextPath);
try {
JettyServerManagerService managerService = getManager().find(ServerManagerModule.NAME).getService(JettyServerManagerService.class);
Server jettyServer = managerService.getElseCreateServer(serverConfig);
jettyServer.addHandler(new AgentGRPCNamingHandler());
jettyServer.addHandler(new AgentJettyNamingHandler());
jettyServer.addHandler(new UIJettyNamingHandler());
// ModuleRegistrationGetService registrationGetService = getManager().find(ClusterModule.NAME).getService(ModuleRegistrationGetService.class);
JettyManagerService managerService = getManager().find(JettyManagerModule.NAME).getService(JettyManagerService.class);
Server jettyServer = managerService.getElseCreateServer(host, port, contextPath);
handlers.forEach(jettyServer::addHandler);
} catch (ModuleNotFoundException e) {
throw new ServiceNotProvidedException(e.getMessage());
}
}
@Override public void start(Properties config) throws ServiceNotProvidedException {
}
@Override public void notifyAfterCompleted() throws ServiceNotProvidedException {
}
@Override public String[] requiredModules() {
return new String[] {ServerManagerModule.NAME, ClusterModule.NAME};
return new String[] {JettyManagerModule.NAME, ClusterModule.NAME};
}
}
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.naming.jetty.handler;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
/**
* @author peng-yongsheng
*/
public class AgentGRPCNamingHandler extends JettyHandler {
@Override public String pathSpec() {
return "/agentstream/grpc";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
// ModuleManager
// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
// Set<String> servers = reader.read(AgentStreamGRPCDataListener.PATH);
JsonArray serverArray = new JsonArray();
// servers.forEach(serverArray::add);
return serverArray;
}
@Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
throw new UnsupportedOperationException();
}
}
/*
* Copyright 2017, OpenSkywalking Organization All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.naming.jetty.handler;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
/**
* @author peng-yongsheng
*/
public class AgentJettyNamingHandler extends JettyHandler {
@Override public String pathSpec() {
return "/agentstream/jetty";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
// Set<String> servers = reader.read(AgentStreamJettyDataListener.PATH);
JsonArray serverArray = new JsonArray();
// servers.forEach(serverArray::add);
return serverArray;
}
@Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
throw new UnsupportedOperationException();
}
}
......@@ -16,17 +16,24 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.cluster.standalone.service;
package org.skywalking.apm.collector.naming.jetty.service;
import java.util.Set;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
import java.util.List;
import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
import org.skywalking.apm.collector.server.ServerHandler;
/**
* @author peng-yongsheng
*/
public class StandaloneModuleRegistrationGetService implements ModuleRegistrationGetService {
public class NamingJettyHandlerRegisterService implements NamingHandlerRegisterService {
@Override public Set<String> get(String path) {
return null;
private final List<ServerHandler> handlers;
public NamingJettyHandlerRegisterService(List<ServerHandler> handlers) {
this.handlers = handlers;
}
@Override public void register(ServerHandler namingHandler) {
handlers.add(namingHandler);
}
}
......@@ -22,5 +22,15 @@
<artifactId>apm-collector-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-cluster-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>server-component</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -46,5 +46,10 @@
<artifactId>collector-jetty-manager-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-naming-define</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty;
import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
......@@ -27,21 +28,26 @@ import org.skywalking.apm.collector.core.module.ModuleProvider;
import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
import org.skywalking.apm.collector.jetty.manager.JettyManagerModule;
import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService;
import org.skywalking.apm.collector.naming.NamingModule;
import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
import org.skywalking.apm.collector.server.Server;
import org.skywalking.apm.collector.ui.UIModule;
import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler;
import org.skywalking.apm.collector.ui.jetty.handler.naming.UIJettyNamingHandler;
import org.skywalking.apm.collector.ui.jetty.handler.naming.UIJettyNamingListener;
/**
* @author peng-yongsheng
*/
public class UIModuleJettyProvider extends ModuleProvider {
public static final String NAME = "jetty";
private static final String HOST = "host";
private static final String PORT = "port";
private static final String CONTEXT_PATH = "context_path";
@Override public String name() {
return "jetty";
return NAME;
}
@Override public Class<? extends Module> module() {
......@@ -62,6 +68,13 @@ public class UIModuleJettyProvider extends ModuleProvider {
ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class);
moduleRegisterService.register(UIModule.NAME, this.name(), new UIModuleRegistration(host, port, contextPath));
UIJettyNamingListener namingListener = new UIJettyNamingListener();
ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class);
moduleListenerService.addListener(namingListener);
NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class);
namingHandlerRegisterService.register(new UIJettyNamingHandler(namingListener));
} catch (ModuleNotFoundException e) {
throw new ServiceNotProvidedException(e.getMessage());
}
......@@ -72,6 +85,6 @@ public class UIModuleJettyProvider extends ModuleProvider {
}
@Override public String[] requiredModules() {
return new String[] {ClusterModule.NAME, JettyManagerModule.NAME};
return new String[] {ClusterModule.NAME, JettyManagerModule.NAME, NamingModule.NAME};
}
}
......@@ -16,10 +16,11 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.naming.jetty.handler;
package org.skywalking.apm.collector.ui.jetty.handler.naming;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
......@@ -29,15 +30,20 @@ import org.skywalking.apm.collector.server.jetty.JettyHandler;
*/
public class UIJettyNamingHandler extends JettyHandler {
private final UIJettyNamingListener namingListener;
public UIJettyNamingHandler(UIJettyNamingListener namingListener) {
this.namingListener = namingListener;
}
@Override public String pathSpec() {
return "/ui/jetty";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
// Set<String> servers = reader.read(UIJettyDataListener.PATH);
Set<String> servers = namingListener.getAddresses();
JsonArray serverArray = new JsonArray();
// servers.forEach(serverArray::add);
servers.forEach(serverArray::add);
return serverArray;
}
......
......@@ -16,17 +16,28 @@
* Project repository: https://github.com/OpenSkywalking/skywalking
*/
package org.skywalking.apm.collector.cluster.redis.service;
package org.skywalking.apm.collector.ui.jetty.handler.naming;
import java.util.Set;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
import org.skywalking.apm.collector.cluster.ClusterModuleListener;
import org.skywalking.apm.collector.ui.UIModule;
import org.skywalking.apm.collector.ui.jetty.UIModuleJettyProvider;
/**
* @author peng-yongsheng
*/
public class RedisModuleRegistrationGetService implements ModuleRegistrationGetService {
public class UIJettyNamingListener extends ClusterModuleListener {
public static final String PATH = "/" + UIModule.NAME + "/" + UIModuleJettyProvider.NAME;
@Override public String path() {
return PATH;
}
@Override public void serverJoinNotify(String serverAddress) {
}
@Override public void serverQuitNotify(String serverAddress) {
@Override public Set<String> get(String path) {
return null;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册