Mossrose,高可用分布式调度框架
环境要求:
Zookeeper
Java 8
安装
<dependency> <groupId>com.jiuxian</groupId> <artifactId>mossrose</artifactId> <version>1.1.0-RELEASE</version> </dependency>
核心概念
SimpleJob
简单任务
DistributedJob
分布式任务,通过slice()方法将作业分隔成多个子任务,子任务在集群内分布执行
MossroseProcess
多个MossroseProcess组成集群,集群保证有且只有一个节点竞选成为主节点,主节点负责触发作业;所有节点都是工作节点,主节点触发的任务会在所有工作节点上分布执行
MossroseConfig
Mossrose配置,包括集群元信息和任务元信息
快速上手
实现一个简单任务
public class SomeJob implements SimpleJob { @Override public void execute() { System.out.println("SimpleJob: " + UUID.randomUUID()); } }
配置任务 - mossrose.yaml
# Mossrose config info --- cluster: name: mossrose-example # 集群命名空间 loadBalancingMode: ROUND_ROBIN # 集群负载均衡策略,可选:ROUND_ROBIN/RANDOM jobs: - id: 1 # 作业ID group: test # 作业分组(可选) cron: 0/5 * * * * ? # 作业cron表达式 runInCluster: true # 是否在集群中分布执行,如果为false,则只在主节点上执行 main: com.jiuxian.mossrose.test.SomeJob # 作业类全名
运行mossrose主类
public class MainTest { @Test public void test() throws Exception { String zks = "localhost"; // zookeeper集群地址 try (MossroseProcess process = new MossroseProcess( MossroseConfigFactory.fromClasspathYamlFile("mossrose.yaml"), new ZookeeperClusterDiscovery("/mossrose/jobtest", zks), zks)) { process.run(); try { // Block the unit test Thread.sleep(60 * 60 * 1000); } catch (InterruptedException e) { } } } }
分布式任务
实现一个分布式任务
public class SomeDistributedJob implements DistributedJob { @Override public List slice() { return Splitter.on(" ").splitToList("This is a test on the mossrose distributed job, how are you feeling?"); } @Override public void execute(String item) { System.out.println(Thread.currentThread() + " DistributedJob: " + item); } }
使用mossrose构建分布式作业集群 社区 Yahoo Group: https://groups.yahoo.com/group/mossrose QQ群:595011342 文档 Wiki: https://github.com/jiuxiantuan/mossrose/wiki Requirement Zookeeper Java 8 Spring 3.x+ 非Spring用户:[http
问题内容: 允许用户调整窗口的宽度和高度。是否存在允许用户仅调整高度大小的方法? 谢谢。 编辑: 下面的解决方案似乎不起作用。在360x600 JFrame上, 仍然允许完全拉伸JFrame的宽度,而设置则不允许任何拉伸。 问题答案: 下面的代码可以正确完成工作。
一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架,用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。 MapReduce 作业通过将输入的数据集拆分为独立的块,这些块由 map 以并行的方式处理,框架对 map 的输出进行排序,然后输入到 reduce 中。MapReduce 框架专门用于 <key,value> 键值
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。不过,略有遗憾的是,据说在淘宝内部,dubbo由于跟淘宝另一个类似的框架HSF(非开源)有竞争关系,导致dubbo团队已经解散(参见http://www.oschina.net/news/55059/druid-1-0-9 中的评论),反到是
类型 实现框架 应用场景 批处理 MapReduce 微批处理 Spark Streaming 实时流计算 Storm
其于职业介绍所、工头、工人、工作模型的分布式计算框架。 职业介绍所有两种,一种是本地职业介绍所,一种是远程职业介绍所。顾名思义,本地职业介绍所就是在当前计算机上的,远程职业介绍所用于连接到远程职业介绍所的。 工人、工头都可以加入到职业介绍所,所以加到本地或远程种业介绍所都是可以的。 在同一个职业介绍所中,具有同样类型的工人、工头和工作都存在的时候,工作就可以被安排下去执行。当然,有两种安排方式,一
我已经开始为绘制温度数据编程这个应用程序,当屏幕调整大小时,画布也应该调整大小。它初始化正确,但当我想调整窗口大小时,draw()方法只会根据它绑定的stackpanes高度值调整高度大小,但它将完全忽略宽度。听者甚至不会开火。这我觉得很奇怪。此外,我必须为StackPane设置最小大小,否则将不会绘制任何东西。我没有使用FXML。 编辑我将第58行从setRight()更改为setCenter,