概述
SkySchedule发布之后(详见《分布式任务调度框架--SkySchedule介绍》),已有部分用户在使用,收到一些反馈意见。比如iteye网友sxp2558发现的.properties配置文件使用了“user.name”作为key,会被系统变量“user.name”覆盖,实际取到的是“主机名”,目前该问题已经修复。
目前反馈最多的问题是SkySchedule没有管理界面,不方便查看当前的任务分配情况。今天抽时间写了一个简单的管理页面,由于前端技术水平有限,比较简陋。下面简单展示下,如果还不了解SkySchedule工作原理的朋友请移步上一篇介绍文章《分布式任务调度框架--SkySchedule介绍》。
准备阶段
首先从github:https://github.com/gantianxing/skySchedule.git获取最新代码;
使用jdk1.8 +maven编译打包;
然后把SkySchedule服务端sky-server子工程对应的war包sky-server-1.0-SNAPSHOT.war部署到tomcat8,启动程序;
访问服务端管理页面http://localhost:8080/,初始界面如下:
由于还没有接入客户端,这里客户端列表为空。
添加一个客户端
这里还是以sky-test工程模拟客户端工程(实际工作中请在自己需要做“分布式任务调度”的工程里引入sky-client工程对应的客户端jar包:sky-client-1.0-SNAPSHOT.jar)。
修改客户端配置文件SkySchedule-client.properties中的server.ip.port和group.id对应的值:
server.ip.port为服务端netty的ip和端口,ip为刚才启动的服务端对应的ip,端口默认为9991。如果有多个服务端实例,请以”,”间隔。
group.id可以理解为客户端分组,每个系统对应一个分组id,每个分组id下有多个客户端,分布式任务调度就是把一批任务平均分配给这些客户端执行,我这里配置的第一个group.id=1000,首先启动一个sky-test实例,刷新服务端管理页面http://localhost:8080/(每隔15秒自动刷新),页面内容如下:
现在只有1个客户端节点,获取任务的sql语句为select * from xxx where id%1=0,改客户端将执行xxx任务表里所有的任务。这里客户端id是由客户端ip:uuid组成(192.168.21.1为ip,数据uuid为1590479018)。
添加多个客户端
现在再加一个group.id为1000的客户端实例(在ip为10.14.140.6的机器上启动一个tomcat实例),再次刷新服务端管理页面http://localhost:8080/,页面内容如下:
现在有两个客户端节点,其中ip为192.168.21.1客户端将执行任务表中id尾数为偶数的任务,ip为10.14.140.6的客户端将执行任务表中id尾数为奇数的任务。
以此类推,如果再启动一个实例,任务表中任务将被分为3份分别由不同的客户端执行。如果任务多,添加更多个客户端实例即可,注意这些客户端实例的group.id要相同,才能执行同一个任务表中的任务。
减少客户端
由于业务量减少,任务表中的任务数相应的会减少,这时可能更少的客户端就可以满足业务需求。这时直接对部分客户端下线即可,SkySchedule会自动感知客户端个数的变化,对任务进行重新分配。
同样的场景还有某一个客户端突然出现故障down掉,这时SkySchedule会自动感知,并重新进行任务分配。如果这个客户端故障解除,客户端重启后,SkySchedule也会自动感知,再次对任务进行重新分配。
比如这里停止ip为10.14.140.6的客户端,刷新服务端管理页面http://localhost:8080/,页面内容如下:
这时所有的任务会分布到192.168.21.1上(原理依然是id%1=0)。
如果有多个系统、或者多个任务表要实现分布式调度怎么办呢,可以通过添加不同的group.id实现,如下:
添加多个客户端分组
假设现在有另外一个系统也需要接入“分布式任务调度”,可以把这个系统的配置文件SkySchedule-client.properties中的group.id配置为另一个值(不要和已有的重复)。
比如,这里测试还是用sky-test,只是把group.id设为2000,再次启动一个tomcat实例,刷新服务端管理页面http://localhost:8080/,页面内容如下:
以此类推,可以接入更多的客户端系统,进行互不干涉的分布式任务调度。
最后
服务端的管理页面http://localhost:8080/,会每隔15秒自动刷新,获取最新的客户端列表。如果需要调整这个时间间隔,可以自行修改sky-server子工程中的hello.jsp中的相关代码:
//循环执行,每隔15秒钟执行一次check window.setInterval(check, 15000);
关于SkySchedule管理页面的使用介绍就到次为止,如有问题、意见或者建议,欢迎留言交流,谢谢。
转载请注明出处:
相关推荐
本源码项目是基于Java的分布式任务调度框架设计,包含1201个文件,主要使用Java、CSS、JavaScript和Shell编程语言。该项目是一个分布式任务调度框架,旨在帮助开发者更高效地管理和调度任务。系统提供了实时任务、...
LTS是一个轻量级分布式任务调度框架。有三种角色, JobClient, JobTracker, TaskTracker。 4. uncode-schedule 基于zookeeper+spring task的分布式任务调度组件,非常小巧,无需任何修改就可以使spring task具备...
分布式任务调度框架Elastic-Job-Lite是当当网推出的一款轻量级无中心化任务调度解决方案,旨在解决大规模分布式环境下的任务调度问题。这款框架的设计理念是将任务的执行与调度分离,使得任务调度器无需关注具体的...
分布式任务调度框架 ElasticJob 中文文档 PDF 带目录
本项目为基于Java开发的多语言支持的PowerJob分布式任务调度框架设计源码,共计640个文件,涵盖542个Java源文件、30个XML配置文件、15个JavaScript脚本、7个Markdown文档、7个SQL脚本、7个属性文件、5个YAML文件、5...
Tasker是一个基于Golang开发的分布式任务调度框架,它的设计目标是为复杂的企业级系统提供稳定、高效的任务调度能力。Golang作为一种现代化的编程语言,以其并发性能强、内存管理优秀以及编译速度快等特性,成为了...
灵活,可靠和快速的分布式任务重试和分布式任务调度平台。其核心采用分区模式实现,具备高度可伸缩性和容错性的分布式系统。拥有完善的权限管理、强大的告警监控功能和友好的界面交互。欢迎大家接入并使用。 可重放...
XXL-JOB是一个专为此目的设计的轻量级分布式任务调度框架。它以其快速的开发速度、简单的学习曲线、轻量级的架构和易于扩展性为特点,已经广泛应用于各种线上产品线。 XXL-JOB的核心概念包括以下几个方面: 1. **...
该项目是采用Java语言编写的XXL-JOB分布式任务调度框架设计源码,共包含304个文件,涵盖了136个Java源文件、36个PNG图片文件、33个JavaScript文件、27个XML文件、12个CSS文件、11个Freemarker模板文件、9个属性文件...
AutoJob是一个基于Java开发的轻量级分布式任务调度框架,包含460个文件,其中435个为Java源文件,辅以少量XML、SQL、YML、properties、md、jpeg、jpg等配置和资源文件。它具备分布式、全异步、易拓展、易集成等特性...
niubi-job是一个强大的开源分布式任务调度框架,专为处理定时任务而设计,具有高可用性和扩展性。在深入了解niubi-job之前,我们先来看看“分布式任务调度”这一概念。分布式任务调度是将任务分解到多个节点上进行...
然而,在实际的工程实践中,分布式计算集群也带来了新的挑战,例如如何进行合理的资源调度,充分利用计算资源以及如何编排和执行复杂的计算任务等问题。 分布式任务调度平台的出现,就是为了应对上述挑战。它通过...
改分布式任务调度特性如下: 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效; 3、调度中心HA(中心式):调度...
实时处理系统分布式任务调度PPT主要探讨了在大数据背景下,如何高效、稳定地处理电信运营商生产系统的实时数据。这一主题涵盖了大数据技术、计费系统、实时处理、Hadoop/HBase以及分布式计算等多个重要知识点。 ...
"XXL-JOB分布式任务调度系统培训PPT" XXL-JOB分布式任务调度系统是当前 Java 生态中的一种流行的分布式任务调度系统。它提供了多种功能特性,如支持 cron 表达式、支持多种任务类型、支持任务优先级、支持任务依赖...
本压缩包"大数据平台:分布式任务调度系统.zip"内包含的"Taier-master"可能是一个开源的大数据分布式任务调度框架,名为Taier。下面将详细探讨分布式任务调度系统以及Taier的相关知识点。 1. **分布式任务调度系统*...
快速入门部分介绍了分布式任务调度SchedulerX 的基本概念和使用方法,包括如何安装和配置分布式任务调度SchedulerX、如何创建和执行任务等。 分组管理部分介绍了分布式任务调度SchedulerX 的分组管理功能,包括如何...
本文研究了基于动态负载均衡的分布式任务调度算法,旨在解决传统分布式任务调度中节点负载不均衡问题,从而提高系统性能。 动态负载均衡是指在任务调度过程中,根据系统内各节点的实时性能指标,如CPU利用率、内存...
分布式任务调度平台XXL-JOB
有了任务调度即可解放更多的人力由系统自动去执行任务,Elastic-job是当当网基于quartz 二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片。2、课程价值本着从...