`

clover分布式任务调度系统

阅读更多

1、clover分布式调度介绍

 

clover分布式任务调度是完全使用Java技术自主开发

特点如下:

1、防单点故障

2job可部署多台,但任务调度时,只有一台参执行。如果一台下线,

clover选择其他已在zookeeper注册job来执行。

3、可管理监控程序 ,相关负责人的job不可用会发送邮件通知

4、提供管理后台,可手动停止任务,设置任务执行频率、恢复策

略。人工干预指定哪些job工作,可查看任务执行进度、任务执行失败时会收到报警并记录日志。

5、执行中的任务,但未执行完成,不会再次调度任务

6、支持灾难重现,server端不可用,但client端注册job信息会存储到临时DB中,当server重启后立即去读临时DB并执行相应job

7job支持LOCALREMOTE模式以及ADDUPDATEDELETE操作

8、支持动态创建jobspring配置文件和注解方式注册job

9、可以查询所有运行报错日志查询

10、管理后台可以创建、修改、删除job

 

 

2、 总体框架分析

 



 

 

3、 总体框架分析-系统流程图

 

               

 

4、 技术-项目结构

 


 

 

 

5、 涉及技术

 

MongoDB集群:负责存储clover所有数据信息,当初想考虑使用LevelDB,但不方便管理,Redis完全放弃了,理由是对于频繁写操作性能下降、总有连接超时

ZK集群:负责serverclient启动注册信息,所有serverclient信息都是有读写操作权限,目的防止被他人或程序修改

ZeroMQ:负责serverclient消息通信&后台管理页面创建、修改、删除job通信

使用ZeroMQ的理由:就是快,就是那么任性,流式技术框架storm使用,未来会考虑使用Sparkakka消息通信框架

Monitor:负责死亡心跳检测,监控serverclient端,使用Java Timer实现

后台管理页面:bootstrap +jsp+highcharts

Spring:重新定义springxsd标签以及Annotation注解方式,注册job

Snappy:通信消息压缩方式,减少网络数据传输带宽

Curator:监听ZK数据包变更,并保持到内存中,方便程序快速获取serverclient端信息

Quartz:基于quartz重写底层定时任务调度,考虑处理各种任务执行规则问题,而选择quartz来调度任务

 

6、clover使用


 

6.3、 项目中定义ClientJobClass


 

6.4、 spring项目使用-启动clover-client




6.5、 spring项目使用-启动job


 

 

6.6、 spring项目使用-启动clover-client


 

 

6.7、spring项目使用-启动clover-client




7、后台管理页面

 

7.1、主页面


 

7.2、zk管理页面


 

7.3、job管理页面


 

7.4、联系人管理页面


 

7.5、日志管理页面


8、性能分析

 

8.1、clover server压力

 

Server端只负责任务定时执行和分发到指定client端,由于使用了quartzserver端在定时轮训执行任务以及解析定时任务时间方面,对性能压力减少了很多

Server端分发消息,使用zeromq非阻塞方式发送消息给指定client端,目前部署两台服务器完全胜任所有性能压力

Server端支持集群部署,每次client发送消息随机Hash到某一台server服务器

当所有的server都不可用,为了不影响client的使用,将会把clientjob信息存储到临时DB中,此刻还会发送邮件报警给相关server负责人,server立即重启后,会把所有临时DB中数据读取并执行,此刻client可以继续收到消息并执行业务逻辑

Server端监听所有clientZK消息后放入内存中,当clientzk数据信息发送变化后,才修改内存数据,这样可以提供server端获取clientzk信息速度,也减轻了zk不断被访问的压力

 

 

8.2zk压力

 

 

俺真心没啥压力,俺是一个大集群,你们这些大爷和土豪就每次启动容器时候将初始化信息放到我这边,而当你们数据信息发生变化(修改节点数据、节点数据不可用),监听者才会访问俺,其实想想你们没事 肯定不会经常变更数据滴,(*^__^*),不过 当你们挂了 或者关闭应用程序时候,我会把你们全部删除滴,这就会浪费伦家点时间和力气吧

 

 

8.3MongoDB

 


 

8.4zeromq

 


 

 

8.5zeromq push/pull模式

 

2
2
分享到:
评论
9 楼 lee3836 2015-11-18  
求源码,大牛
8 楼 luxianping 2015-08-03  
      大神   git上找不到了  求共享
7 楼 Stark_Summer 2015-02-05  
Stark_Summer 写道
james_lover 写道
开源了吗?最近更好再找分布式调度系统,
kettle的任务调度实在是太差了。
我在考虑给kettle加个分布式调度系统。用zookeeper来管理任务及任务依赖。
用fabric在浏览器上画任务流,提供任务调度管理,就像用kettle客户端一样,能支持任务单个执行,任务跳过。任务重试。任务暂停。

您好,目前我开发这个版本是为公司做的,后续我会做个分支专门开源的,使用技术,必须开源代码,请放心。

看这个你的这个架构 应该挺复杂的,我这边现在支持动态创建定时任务,使用spring注解方式创建定时任务,还有通过控制来删除或者停止任务
6 楼 Stark_Summer 2015-02-05  
lianglaiyang 写道
能不能把源码发出来?
我在考虑给kettle加个分布式调度系统。用zookeeper来管理任务及任务依赖。
用fabric在浏览器上画任务流,提供任务调度管理,就像用kettle客户端一样,能支持任务单个执行,任务跳过。任务重试。任务暂停。

您好,目前我开发这个版本是为公司做的,后续我会做个分支专门开源的,使用技术,必须开源代码,请放心。
5 楼 Stark_Summer 2015-02-05  
james_lover 写道
开源了吗?最近更好再找分布式调度系统,
kettle的任务调度实在是太差了。
我在考虑给kettle加个分布式调度系统。用zookeeper来管理任务及任务依赖。
用fabric在浏览器上画任务流,提供任务调度管理,就像用kettle客户端一样,能支持任务单个执行,任务跳过。任务重试。任务暂停。

您好,目前我开发这个版本是为公司做的,后续我会做个分支专门开源的,使用技术,必须开源代码,请放心。
4 楼 lianglaiyang 2015-02-05  
能不能把源码发出来?
3 楼 james_lover 2015-02-04  
开源了吗?最近更好再找分布式调度系统,
kettle的任务调度实在是太差了。
我在考虑给kettle加个分布式调度系统。用zookeeper来管理任务及任务依赖。
用fabric在浏览器上画任务流,提供任务调度管理,就像用kettle客户端一样,能支持任务单个执行,任务跳过。任务重试。任务暂停。
2 楼 Stark_Summer 2015-02-04  
semmy 写道
看起来挺酷的

还是以实用为主吧,最近还在苦逼优化和改造呢
1 楼 semmy 2015-02-04  
看起来挺酷的

相关推荐

    基于大数据的分布式文件系统技术研究.pdf

    - 分布式系统:一种由多个计算节点组成的系统,这些节点可以是个人计算机、服务器或者其他设备,它们相互协作以完成共同的任务。 - 分布式开发:是在分布式系统基础上进行的软件开发过程,强调多地点团队的合作、...

    面向大数据分析的分布式文件系统关键技术.pdf

    文章的关键词“分布式”、“分布式系统”和“分布式开发”都指向了这一领域,涉及技术的各个方面和应用场景。 文章主要探讨了大数据时代数据存储和处理技术的发展,以及传统分布式文件系统在可扩展性、可靠性和性能...

    Clover 强大的任务栏管理器

    Clover,这个名字可能对许多人来说并不陌生,它是一款功能强大的任务栏增强工具,旨在为Windows用户提供类似于谷歌任务栏的体验,尤其是在Windows 8系统上,它能带来极大的便利性。这款软件的核心价值在于它的多标签...

    Clover DX ETL

    - **定时任务调度**:用户可以设置定时任务,让数据作业自动执行,无需人工干预。 - **事件驱动处理**:支持基于事件触发的数据处理,例如当某个数据源发生变化时自动启动相应的处理流程。 - **错误处理机制**:具备...

    15款clover主题

    Clover是一款广受欢迎的引导加载程序,主要用于在非Apple硬件上安装和运行macOS系统,被称为“黑苹果”(Black Apple)系统。它的主要功能是让非Apple认证的硬件能够识别并加载macOS的安装镜像,使得用户可以在非Mac...

    免改bios,Clover让老电脑从NVME_SSD启动引导,倒计时不显示,不能自动进系统解决方法

    免改bios,Clover让老电脑从NVME_SSD启动引导方法 倒计时不显示,不能自动进系统解决方法

    Clover 安装包

    Clover是一款针对Mac系统的引导加载器,主要用于非Apple官方硬件上的Mac OS X或macOS(通常称为Hackintosh)安装。这个“Clover安装包”是专门为在非Apple计算机上搭建Hackintosh环境而设计的,其版本号为2.3k,r...

    java单元测试篇:使用clover为java代码的junit测试做覆盖率分析.pdf

    接下来,需要在 build.xml 文件中添加 Clover 任务,指定 Clover 的 classpath 和扩展包的位置。 构建 Java 源代码与 JUnit 单元测试代码 首先,需要创建一个 Java 项目目录,例如 sincky,然后在其中创建 src ...

    黑苹果系统macOS High Sierra 10.13.6 17G65 With Clover 4596.torrent.zip

    标题"黑苹果系统macOS High Sierra 10.13.6 17G65 With Clover 4596.torrent.zip"表明这是一款专为非苹果硬件安装的macOS High Sierra操作系统,版本号为10.13.6,补丁号17G65,且集成了Clover引导工具的版本4596。...

    Clover5.1.3

    首先,Clover是一个引导加载器,它的主要任务是帮助非苹果硬件(即采用非苹果官方认证的硬件构建的黑苹果系统)成功启动MacOSX系统。它弥补了这些非苹果硬件与苹果操作系统之间的兼容性问题,使得用户能够在非苹果...

    解决安装或者升级win10后,直接进win系统,不进clover的问题

    对于新版clover无效,请不要下载。事实上你只要下载对应版本的clover,然后替换EFI下的相应文件即可。解决安装或者升级win10后,直接进win系统,不进clover的问题

    Clover v2.4k r4093 PKG

    Clover的主要任务是帮助非苹果官方硬件配置的用户成功引导macOS操作系统。"v2.4k r4093"表示这是Clover的2.4k版本,其中的"r4093"代表这个分支或修订版的编号,通常意味着它是经过多次改进和修复后的稳定版本。 ...

    clover配置教程.zip

    本篇教程将深入探讨Clover配置的详细步骤,帮助用户在自己的电脑上成功安装并优化黑苹果系统。 首先,我们需要了解Clover的基本概念。Clover是基于UEFI的引导程序,它模拟了苹果原生的EFI环境,使得macOS能够在非...

    CLOVER10.11.2U盘安装MAC系统的方法教程

    根据提供的文件内容,本文将详细解释CLOVER10.11.2 U盘安装MAC系统的具体步骤及注意事项,并普及相关的黑苹果知识。 首先,CLOVER10.11.2是用于在个人电脑上安装MacOS的启动引导程序,这类安装通常被称为黑苹果。...

    Clover Configurator.zip

    《Clover Configurator:黑苹果系统的得力助手》 在苹果电脑的世界里,"黑苹果"(Hackintosh)是指在非苹果硬件上安装并运行Mac OS X或macOS的系统。这种操作通常需要对计算机硬件有深入理解,并且需要一些特殊工具...

    cloverETL实例

    CloverETL是一款强大的数据集成工具,主要用于数据转换和数据加载任务。在IT行业中,它以其易用性、高效性和可扩展性而受到广泛的赞誉。本实例深入探讨了CloverETL在实际项目中的应用,提供了极具价值的参考。 1. *...

    setup_clover_3.1.3.8251

    综上所述,"setup_clover_3.1.3.8251"软件安装程序通过引入Chrome样式的操作界面和快捷键功能,彻底改变了Windows任务管理器的传统形象,将其打造成为了一个现代化、高效的系统工具。对于追求操作便捷和高效率的现代...

    原版CLOVER 4895 EFI

    **CLOVER 4895 EFI:引导macOS与黑苹果系统的关键** CLOVER 4895 EFI是一个专为macOS和"黑苹果"(Hackintosh)系统设计的引导加载器,它允许非Apple硬件运行macOS操作系统。这个版本的CLOVER基于2019年的4895版本,...

    clover 5138.zip

    【标题】"clover 5138.zip"是一个与苹果电脑(Mac)非官方操作系统安装相关的压缩包,其中包含了Clover引导加载器的版本r5138。Clover是一个开源项目,主要目的是为了在非苹果硬件上,即我们常说的“黑苹果”...

Global site tag (gtag.js) - Google Analytics