Skip to content

Develop #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 18, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,13 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
```java
final JobTracker jobTracker = new JobTracker();
// 节点信息配置
jobTracker.setZookeeperAddress("localhost:2181");
jobTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");
// jobTracker.setListenPort(35001); // 默认 35001
// jobTracker.setClusterName("lts");

// mongo 配置
Config config = new Config();
config.setAddresses(new String[]{"localhost:27017"});
config.setAddresses(new String[]{"127.0.0.1:27017"});
config.setUsername("lts");
config.setPassword("lts");
config.setDbName("job");
Expand All @@ -83,7 +83,7 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
<bean id="mongoConfig" class="com.lts.job.store.Config">
<property name="addresses">
<array>
<value>localhost:27017</value>
<value>127.0.0.1:27017</value>
</array>
</property>
<property name="username" value="lts"/>
Expand All @@ -93,11 +93,11 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
<bean id="jobTracker" class="com.lts.job.spring.JobTrackerFactoryBean" init-method="start">
<!--<property name="clusterName" value="lts"/>--> <!-- 集群名称 -->
<!--<property name="listenPort" value="35001"/>--> <!-- 默认 35001 -->
<property name="zookeeperAddress" value="localhost:2181"/>
<property name="registryAddress" value="zookeeper://127.0.0.1:2181"/>
<property name="storeConfig" ref="mongoConfig"/>
<property name="masterNodeChangeListeners">
<property name="masterChangeListeners">
<array>
<bean class="com.lts.job.example.support.MasterNodeChangeListenerImpl"/>
<bean class="com.lts.job.example.support.MasterChangeListenerImpl"/>
</array>
</property>
</bean>
Expand All @@ -108,7 +108,7 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
TaskTracker taskTracker = new TaskTracker();
taskTracker.setJobRunnerClass(TestJobRunner.class);
// jobClient.setClusterName("lts");
taskTracker.setZookeeperAddress("localhost:2181");
taskTracker.setRegistryAddress("zookeeper://127.0.0.1:2181");
taskTracker.setNodeGroup("test_trade_TaskTracker");
taskTracker.setWorkThreads(20);
taskTracker.start();
Expand Down Expand Up @@ -136,12 +136,12 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
<bean id="taskTracker" class="com.lts.job.spring.TaskTrackerFactoryBean" init-method="start">
<!--<property name="clusterName" value="lts"/>-->
<property name="nodeGroup" value="test_trade_TaskTracker"/><!-- 所属节点组名称 -->
<property name="zookeeperAddress" value="localhost:2181"/>
<property name="registryAddress" value="zookeeper://127.0.0.1:2181"/>
<property name="jobRunnerClass" value="com.lts.job.example.support.TestJobRunner"/> <!-- 任务执行类 -->
<property name="workThreads" value="1"/> <!-- 工作线程个数 -->
<property name="masterNodeChangeListeners"> <!-- 所属节点组中master节点变化监听器,可以不用配置 -->
<property name="masterChangeListeners"> <!-- 所属节点组中master节点变化监听器,可以不用配置 -->
<array>
<bean class="com.lts.job.example.support.MasterNodeChangeListenerImpl"/>
<bean class="com.lts.job.example.support.MasterChangeListenerImpl"/>
</array>
</property>
</bean>
Expand All @@ -153,7 +153,7 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
// JobClient jobClient = new JobClient();
jobClient.setNodeGroup("test_JobClient");
// jobClient.setClusterName("lts");
jobClient.setZookeeperAddress("localhost:2181");
jobClient.setRegistryAddress("zookeeper://127.0.0.1:2181");
jobClient.start();

// 提交任务
Expand All @@ -170,13 +170,13 @@ LTS 轻量级分布式任务调度框架(Light Task Schedule)
<property name="clientType" value="retry"/> <!-- 取值: 为空(默认normal), normal, retry -->
<!--<property name="clusterName" value="lts"/>--> <!-- 默认 defaultCluster -->
<property name="nodeGroup" value="test_JobClient"/> <!-- 节点组名称 -->
<property name="zookeeperAddress" value="localhost:2181"/>
<property name="registryAddress" value="zookeeper://127.0.0.1:2181"/>
<property name="jobFinishedHandler">
<bean class="com.lts.job.example.support.JobFinishedHandlerImpl"/> <!-- 任务完成处理器 -->
</property>
<property name="masterNodeChangeListeners"><!-- 所属节点组中master节点变化监听器 -->
<property name="masterChangeListeners"><!-- 所属节点组中master节点变化监听器 -->
<array>
<bean class="com.lts.job.example.support.MasterNodeChangeListenerImpl"/>
<bean class="com.lts.job.example.support.MasterChangeListenerImpl"/>
</array>
</property>
</bean>
Expand Down
62 changes: 62 additions & 0 deletions job-admin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,67 @@
<packaging>war</packaging>
<artifactId>job-admin</artifactId>

<properties>
<spring.version>3.2.4.RELEASE</spring.version>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<path>/</path>
<port>8080</port>
<server>tomcat</server>
<warFile>lts-admin.war</warFile>
<uriEncoding>utf-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>com.lts</groupId>
<artifactId>job-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.lts.job.web.controller;

/**
* @author Robert HG ([email protected]) on 5/9/15.
*/
public class AbstractController {


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.lts.job.web.controller;

import org.springframework.stereotype.Controller;

/**
* @author Robert HG ([email protected]) on 5/11/15.
*/
@Controller
public class NodeController extends AbstractController{


}
69 changes: 69 additions & 0 deletions job-admin/src/main/java/com/lts/job/web/support/AppConfigurer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.lts.job.web.support;

import java.util.*;

/**
* @author Robert HG ([email protected]) on 5/11/15.
*/
public class AppConfigurer {

private static final Map<String, String> CONFIG = new HashMap<String, String>();

static {
try {
List<String> configList = new ArrayList<String>(2);
configList.add("config");
Locale locale = Locale.getDefault();
for (String config : configList) {
try {
ResourceBundle localResource = ResourceBundle.getBundle(config, locale);
for (Object o : localResource.keySet()) {
String key = o.toString();
String value = localResource.getString(key);
CONFIG.put(key, value);
}
} catch (MissingResourceException e) {
// ignore
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

public static String getProperties(String name) {
return CONFIG.get(name);
}

public static String getProperties(String name, String defaultValue) {
String returnValue = CONFIG.get(name);
if (returnValue == null || returnValue.equals("")) {
returnValue = defaultValue;
}
return returnValue;
}

public static int getInteger(String name, int defaultValue) {
String returnValue = CONFIG.get(name);
if (returnValue == null || returnValue.equals("")) {
return defaultValue;
}
return Integer.parseInt(returnValue.trim());
}

public static int getInteger(String name) {
return Integer.parseInt(CONFIG.get(name));
}

public static boolean getBoolean(String name, boolean defaultValue) {
String returnValue = CONFIG.get(name);
if (returnValue == null || returnValue.equals("")) {
return defaultValue;
}
return Boolean.valueOf(CONFIG.get(name));
}

public static boolean getBoolean(String name) {
return Boolean.valueOf(CONFIG.get(name));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.lts.job.web.support.node;

import com.lts.job.core.cluster.Node;
import com.lts.job.core.cluster.NodeType;

import java.util.List;
import java.util.Map;

/**
* @author Robert HG ([email protected]) on 5/11/15.
*/
public interface NodeManager {

/**
* 得到所有节点
* @param cluster
* @return
*/
public Map<NodeType, List<Node>> getAllNodes(String cluster);

/**
* 启用节点
* @param node
*/
public void enableNode(Node node);

/**
* 禁用节点
* @param node
*/
public void disableNode(Node node);

/**
* 更改节点的工作线程
* @param node
*/
public void updateWorkThreads(Node node);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.lts.job.web.support.node;

import com.lts.job.core.cluster.Node;
import com.lts.job.core.cluster.NodeType;
import com.lts.job.core.registry.NodeRegistryUtils;
import com.lts.job.core.util.CollectionUtils;
import com.lts.job.zookeeper.ZookeeperClient;
import com.lts.job.zookeeper.zkclient.ZkClientZookeeperClient;
import com.lts.job.web.support.AppConfigurer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author Robert HG ([email protected]) on 5/11/15.
*/
public class ZkNodeManager implements NodeManager {

private ZookeeperClient zkClient;

public ZkNodeManager() {
this.zkClient = new ZkClientZookeeperClient(AppConfigurer.getProperties("zookeeper.address"));
}

@Override
public Map<NodeType, List<Node>> getAllNodes(String clusterName) {
String basePath = NodeRegistryUtils.getRootPath(clusterName);
List<String> nodeTypes = zkClient.getChildren(basePath);
Map<NodeType, List<Node>> nodeMap = new HashMap<NodeType, List<Node>>();
if (CollectionUtils.isNotEmpty(nodeTypes)) {
for (String nodeType : nodeTypes) {
List<String> nodes = zkClient.getChildren(basePath + "/" + nodeType);
if (CollectionUtils.isEmpty(nodes)) {
List<Node> nodeList = new ArrayList<Node>(nodes.size());
for (String node : nodes) {
nodeList.add(NodeRegistryUtils.parse(node));
}
nodeMap.put(NodeType.valueOf(nodeType), nodeList);
}
}
}
return nodeMap;
}

@Override
public void enableNode(Node node) {

}

@Override
public void disableNode(Node node) {

}

@Override
public void updateWorkThreads(Node node) {

}

public static void main(String[] args) {


}
}
3 changes: 3 additions & 0 deletions job-admin/src/main/resources/config.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

#zookeeper地址
zookeeper.address=127.0.0.1:2181
Loading