`

分布式任务调度框架—SkySchedule介绍(二)

阅读更多

概述

 

SkySchedule发布之后(详见《分布式任务调度框架--SkySchedule介绍》),已有部分用户在使用,收到一些反馈意见。比如iteye网友sxp2558发现的.properties配置文件使用了“user.name”作为key,会被系统变量“user.name”覆盖,实际取到的是主机名,目前该问题已经修复。

 

目前反馈最多的问题是SkySchedule没有管理界面,不方便查看当前的任务分配情况。今天抽时间写了一个简单的管理页面,由于前端技术水平有限,比较简陋。下面简单展示下,如果还不了解SkySchedule工作原理的朋友请移步上一篇介绍文章《分布式任务调度框架--SkySchedule介绍》

 

准备阶段

 

首先从githubhttps://github.com/gantianxing/skySchedule.git获取最新代码;

使用jdk1.8 +maven编译打包;

然后把SkySchedule服务端sky-server子工程对应的warsky-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.portgroup.id对应的值:

server.ip.port为服务端nettyip和端口,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.1ip,数据uuid1590479018)。

 

添加多个客户端

 

现在再加一个group.id1000的客户端实例(在ip10.14.140.6的机器上启动一个tomcat实例),再次刷新服务端管理页面http://localhost:8080/,页面内容如下:



 

 

现在有两个客户端节点,其中ip192.168.21.1客户端将执行任务表中id尾数为偶数的任务,ip10.14.140.6的客户端将执行任务表中id尾数为奇数的任务。

 

以此类推,如果再启动一个实例,任务表中任务将被分为3份分别由不同的客户端执行。如果任务多,添加更多个客户端实例即可,注意这些客户端实例的group.id要相同,才能执行同一个任务表中的任务。

 

减少客户端

 

由于业务量减少,任务表中的任务数相应的会减少,这时可能更少的客户端就可以满足业务需求。这时直接对部分客户端下线即可,SkySchedule会自动感知客户端个数的变化,对任务进行重新分配。

 

同样的场景还有某一个客户端突然出现故障down掉,这时SkySchedule会自动感知,并重新进行任务分配。如果这个客户端故障解除,客户端重启后,SkySchedule也会自动感知,再次对任务进行重新分配。

 

比如这里停止ip10.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管理页面的使用介绍就到次为止,如有问题、意见或者建议,欢迎留言交流,谢谢。

 

转载请注明出处:

http://moon-walker.iteye.com/blog/2391954

  • 大小: 7.8 KB
  • 大小: 17.5 KB
  • 大小: 23.5 KB
  • 大小: 11.4 KB
  • 大小: 34.3 KB
0
0
分享到:
评论

相关推荐

    基于Java的分布式任务调度框架设计源码

    本源码项目是基于Java的分布式任务调度框架设计,包含1201个文件,主要使用Java、CSS、JavaScript和Shell编程语言。该项目是一个分布式任务调度框架,旨在帮助开发者更高效地管理和调度任务。系统提供了实时任务、...

    分布式任务调度框架 集合

    LTS是一个轻量级分布式任务调度框架。有三种角色, JobClient, JobTracker, TaskTracker。 4. uncode-schedule 基于zookeeper+spring task的分布式任务调度组件,非常小巧,无需任何修改就可以使spring task具备...

    分布式任务调度框架elastic-job-lite

    分布式任务调度框架Elastic-Job-Lite是当当网推出的一款轻量级无中心化任务调度解决方案,旨在解决大规模分布式环境下的任务调度问题。这款框架的设计理念是将任务的执行与调度分离,使得任务调度器无需关注具体的...

    分布式任务调度框架 ElasticJob 中文文档 PDF 带目录

    分布式任务调度框架 ElasticJob 中文文档 PDF 带目录

    基于Java与多语言支持的PowerJob分布式任务调度框架设计源码

    本项目为基于Java开发的多语言支持的PowerJob分布式任务调度框架设计源码,共计640个文件,涵盖542个Java源文件、30个XML配置文件、15个JavaScript脚本、7个Markdown文档、7个SQL脚本、7个属性文件、5个YAML文件、5...

    Tasker:基于golang的分布式任务调度框架

    Tasker是一个基于Golang开发的分布式任务调度框架,它的设计目标是为复杂的企业级系统提供稳定、高效的任务调度能力。Golang作为一种现代化的编程语言,以其并发性能强、内存管理优秀以及编译速度快等特性,成为了...

    灵活,可靠和快速的分布式任务重试和分布式任务调度平台

    灵活,可靠和快速的分布式任务重试和分布式任务调度平台。其核心采用分区模式实现,具备高度可伸缩性和容错性的分布式系统。拥有完善的权限管理、强大的告警监控功能和友好的界面交互。欢迎大家接入并使用。 可重放...

    分布式任务调度

    XXL-JOB是一个专为此目的设计的轻量级分布式任务调度框架。它以其快速的开发速度、简单的学习曲线、轻量级的架构和易于扩展性为特点,已经广泛应用于各种线上产品线。 XXL-JOB的核心概念包括以下几个方面: 1. **...

    基于Java语言的XXL-JOB分布式任务调度框架设计源码

    该项目是采用Java语言编写的XXL-JOB分布式任务调度框架设计源码,共包含304个文件,涵盖了136个Java源文件、36个PNG图片文件、33个JavaScript文件、27个XML文件、12个CSS文件、11个Freemarker模板文件、9个属性文件...

    基于Java开发的轻量级分布式任务调度框架设计源码

    AutoJob是一个基于Java开发的轻量级分布式任务调度框架,包含460个文件,其中435个为Java源文件,辅以少量XML、SQL、YML、properties、md、jpeg、jpg等配置和资源文件。它具备分布式、全异步、易拓展、易集成等特性...

    niubi-job, 一个高可用的,专门针对定时任务的分布式任务调度框架.zip

    niubi-job是一个强大的开源分布式任务调度框架,专为处理定时任务而设计,具有高可用性和扩展性。在深入了解niubi-job之前,我们先来看看“分布式任务调度”这一概念。分布式任务调度是将任务分解到多个节点上进行...

    面向计算密集型任务的分布式任务调度平台设计与实现.pdf

    然而,在实际的工程实践中,分布式计算集群也带来了新的挑战,例如如何进行合理的资源调度,充分利用计算资源以及如何编排和执行复杂的计算任务等问题。 分布式任务调度平台的出现,就是为了应对上述挑战。它通过...

    spring分布式任务调度

    改分布式任务调度特性如下: 1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手; 2、动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效; 3、调度中心HA(中心式):调度...

    实时处理系统分布式任务调度PPT

    实时处理系统分布式任务调度PPT主要探讨了在大数据背景下,如何高效、稳定地处理电信运营商生产系统的实时数据。这一主题涵盖了大数据技术、计费系统、实时处理、Hadoop/HBase以及分布式计算等多个重要知识点。 ...

    XXL-JOB分布式任务调度系统培训PPT

    "XXL-JOB分布式任务调度系统培训PPT" XXL-JOB分布式任务调度系统是当前 Java 生态中的一种流行的分布式任务调度系统。它提供了多种功能特性,如支持 cron 表达式、支持多种任务类型、支持任务优先级、支持任务依赖...

    大数据平台:分布式任务调度系统.zip

    本压缩包"大数据平台:分布式任务调度系统.zip"内包含的"Taier-master"可能是一个开源的大数据分布式任务调度框架,名为Taier。下面将详细探讨分布式任务调度系统以及Taier的相关知识点。 1. **分布式任务调度系统*...

    阿里云 专有云企业版 V3.8.1 分布式任务调度ScheduleX 用户指南 20190910

    快速入门部分介绍了分布式任务调度SchedulerX 的基本概念和使用方法,包括如何安装和配置分布式任务调度SchedulerX、如何创建和执行任务等。 分组管理部分介绍了分布式任务调度SchedulerX 的分组管理功能,包括如何...

    基于动态负载均衡的分布式任务调度算法研究.pdf

    本文研究了基于动态负载均衡的分布式任务调度算法,旨在解决传统分布式任务调度中节点负载不均衡问题,从而提高系统性能。 动态负载均衡是指在任务调度过程中,根据系统内各节点的实时性能指标,如CPU利用率、内存...

    分布式任务调度平台XXL-JOB

    分布式任务调度平台XXL-JOB

    Elastic-Job分布式任务调度视频教程

    有了任务调度即可解放更多的人力由系统自动去执行任务,Elastic-job是当当网基于quartz 二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片。2、课程价值本着从...

Global site tag (gtag.js) - Google Analytics