clover分布式任务调度系统
2016-10-20 12:10
344 查看
转载自:https://my.oschina.net/ghostmanyue/blog/375344
摘要: clover分布式任务调度系统
1、clover分布式调度介绍
clover分布式任务调度是完全使用Java技术自主开发
特点如下:
1、防单点故障
2、job可部署多台,但任务调度时,只有一台参执行。如果一台下线,
clover选择其他已在zookeeper注册job来执行。
3、可管理监控程序 ,相关负责人的job不可用会发送邮件通知
4、提供管理后台,可手动停止任务,设置任务执行频率、恢复策
略。人工干预指定哪些job来工作,可查看任务执行进度、任务执行失败时会收到报警并记录日志。
5、执行中的任务,但未执行完成,不会再次调度任务
6、支持灾难重现,server端不可用,但client端注册job信息会存储到临时DB中,当server重启后立即去读临时DB并执行相应job
7、job支持LOCAL、REMOTE模式以及ADD、UPDATE、DELETE操作
8、支持动态创建job、spring配置文件和注解方式注册job
9、可以查询所有运行报错日志查询
10、管理后台可以创建、修改、删除job
2、 总体框架分析
3、 总体框架分析-系统流程图
[b]4、 技术-项目结构
[/b]
[b]
[/b]
5、 涉及技术
MongoDB集群:负责存储clover所有数据信息,当初想考虑使用LevelDB,但不方便管理,Redis完全放弃了,理由是对于频繁写操作性能下降、总有连接超时
ZK集群:负责server和client启动注册信息,所有server、client信息都是有读写操作权限,目的防止被他人或程序修改
ZeroMQ:负责server和client消息通信&后台管理页面创建、修改、删除job通信
使用ZeroMQ的理由:就是快,就是那么任性,流式技术框架storm使用,未来会考虑使用Spark的akka消息通信框架
Monitor:负责死亡心跳检测,监控server、client端,使用Java
Timer实现
后台管理页面:bootstrap +jsp+highcharts
Spring:重新定义spring的xsd标签以及Annotation注解方式,注册job
Snappy:通信消息压缩方式,减少网络数据传输带宽
Curator:监听ZK数据包变更,并保持到内存中,方便程序快速获取server和client端信息
Quartz:基于quartz重写底层定时任务调度,考虑处理各种任务执行规则问题,而选择quartz来调度任务
6、clover使用
6.3、 项目中定义ClientJobClass
6.4、 非spring项目使用-启动clover-client
[b][b]6.5、 [/b]非spring项目使用-启动job
[/b]
[b]
[/b]
[b]6.6、 spring[/b]项目使用-启动clover-client
[b]6.7、spring[/b]项目使用-启动clover-client
[b]
[/b]
[b]
[/b]
[b]
[/b]
[b]7、后台管理页面[/b]
7.1、主页面
[b]7.2、zk管理页面[/b]
[b]
[/b]
[b]7.3、job管理页面[/b]
[b]
[/b]
7.4、联系人管理页面
7.5、日志管理页面
8、性能分析
8.1、clover server压力
Server端只负责任务定时执行和分发到指定client端,由于使用了quartz,server端在定时轮训执行任务以及解析定时任务时间方面,对性能压力减少了很多
Server端分发消息,使用zeromq非阻塞方式发送消息给指定client端,目前部署两台服务器完全胜任所有性能压力
Server端支持集群部署,每次client发送消息随机Hash到某一台server服务器
当所有的server都不可用,为了不影响client的使用,将会把clientjob信息存储到临时DB中,此刻还会发送邮件报警给相关server负责人,server立即重启后,会把所有临时DB中数据读取并执行,此刻client可以继续收到消息并执行业务逻辑
Server端监听所有client端ZK消息后放入内存中,当client端zk数据信息发送变化后,才修改内存数据,这样可以提供server端获取client端zk信息速度,也减轻了zk不断被访问的压力
8.2zk压力
俺真心没啥压力,俺是一个大集群,你们这些大爷和土豪就每次启动容器时候将初始化信息放到我这边,而当你们数据信息发生变化(修改节点数据、节点数据不可用),监听者才会访问俺,其实想想你们没事 肯定不会经常变更数据滴,(*^__^*),不过
当你们挂了 或者关闭应用程序时候,我会把你们全部删除滴,这就会浪费伦家点时间和力气吧
8.3MongoDB
8.4zeromq
8.5zeromq push/pull模式
摘要: clover分布式任务调度系统
1、clover分布式调度介绍
clover分布式任务调度是完全使用Java技术自主开发
特点如下:
1、防单点故障
2、job可部署多台,但任务调度时,只有一台参执行。如果一台下线,
clover选择其他已在zookeeper注册job来执行。
3、可管理监控程序 ,相关负责人的job不可用会发送邮件通知
4、提供管理后台,可手动停止任务,设置任务执行频率、恢复策
略。人工干预指定哪些job来工作,可查看任务执行进度、任务执行失败时会收到报警并记录日志。
5、执行中的任务,但未执行完成,不会再次调度任务
6、支持灾难重现,server端不可用,但client端注册job信息会存储到临时DB中,当server重启后立即去读临时DB并执行相应job
7、job支持LOCAL、REMOTE模式以及ADD、UPDATE、DELETE操作
8、支持动态创建job、spring配置文件和注解方式注册job
9、可以查询所有运行报错日志查询
10、管理后台可以创建、修改、删除job
2、 总体框架分析
3、 总体框架分析-系统流程图
[b]4、 技术-项目结构
[/b]
[b]
[/b]
5、 涉及技术
MongoDB集群:负责存储clover所有数据信息,当初想考虑使用LevelDB,但不方便管理,Redis完全放弃了,理由是对于频繁写操作性能下降、总有连接超时
ZK集群:负责server和client启动注册信息,所有server、client信息都是有读写操作权限,目的防止被他人或程序修改
ZeroMQ:负责server和client消息通信&后台管理页面创建、修改、删除job通信
使用ZeroMQ的理由:就是快,就是那么任性,流式技术框架storm使用,未来会考虑使用Spark的akka消息通信框架
Monitor:负责死亡心跳检测,监控server、client端,使用Java
Timer实现
后台管理页面:bootstrap +jsp+highcharts
Spring:重新定义spring的xsd标签以及Annotation注解方式,注册job
Snappy:通信消息压缩方式,减少网络数据传输带宽
Curator:监听ZK数据包变更,并保持到内存中,方便程序快速获取server和client端信息
Quartz:基于quartz重写底层定时任务调度,考虑处理各种任务执行规则问题,而选择quartz来调度任务
6、clover使用
6.3、 项目中定义ClientJobClass
6.4、 非spring项目使用-启动clover-client
[b][b]6.5、 [/b]非spring项目使用-启动job
[/b]
[b]
[/b]
[b]6.6、 spring[/b]项目使用-启动clover-client
[b]6.7、spring[/b]项目使用-启动clover-client
[b]
[/b]
[b]
[/b]
[b]
[/b]
[b]7、后台管理页面[/b]
7.1、主页面
[b]7.2、zk管理页面[/b]
[b]
[/b]
[b]7.3、job管理页面[/b]
[b]
[/b]
7.4、联系人管理页面
7.5、日志管理页面
8、性能分析
8.1、clover server压力
Server端只负责任务定时执行和分发到指定client端,由于使用了quartz,server端在定时轮训执行任务以及解析定时任务时间方面,对性能压力减少了很多
Server端分发消息,使用zeromq非阻塞方式发送消息给指定client端,目前部署两台服务器完全胜任所有性能压力
Server端支持集群部署,每次client发送消息随机Hash到某一台server服务器
当所有的server都不可用,为了不影响client的使用,将会把clientjob信息存储到临时DB中,此刻还会发送邮件报警给相关server负责人,server立即重启后,会把所有临时DB中数据读取并执行,此刻client可以继续收到消息并执行业务逻辑
Server端监听所有client端ZK消息后放入内存中,当client端zk数据信息发送变化后,才修改内存数据,这样可以提供server端获取client端zk信息速度,也减轻了zk不断被访问的压力
8.2zk压力
俺真心没啥压力,俺是一个大集群,你们这些大爷和土豪就每次启动容器时候将初始化信息放到我这边,而当你们数据信息发生变化(修改节点数据、节点数据不可用),监听者才会访问俺,其实想想你们没事 肯定不会经常变更数据滴,(*^__^*),不过
当你们挂了 或者关闭应用程序时候,我会把你们全部删除滴,这就会浪费伦家点时间和力气吧
8.3MongoDB
8.4zeromq
8.5zeromq push/pull模式
相关文章推荐
- clover分布式任务调度系统 - stark_summer的专栏 - 博客频道 - CSDN.NET
- 这些优秀的国产分布式任务调度系统,你用过几个?
- 分布式任务队列与任务调度系统Celery进阶——分布式爬虫
- 分布式系统大数据量计算抢占式任务调度
- 点我达分布式任务调度系统 - DaJob
- 分布式任务调度系统
- 企业级分布式任务调度系统介绍
- zookeeper实现分布式任务调度系统
- 分布式任务队列与任务调度系统Celery入门
- 学界| UC Berkeley提出新型分布式框架Ray:实时动态学习的开端—— AI 应用的系统需求:支持(a)异质、并行计算,(b)动态任务图,(c)高吞吐量和低延迟的调度,以及(d)透明的容错性。
- 这些优秀的国产分布式任务调度系统,你用过几个?
- 分布式任务调度系统分析(tbschedule)
- 【转载】基于Spring Boot + Quartz 的分布式任务调度系统
- 分布式定时任务调度系统 Saturn 安装部署
- 简单了解celery-分布式异步任务调度系统
- 分布式任务调度系统选型
- Gearman分布式任务处理系统(三)libevent介绍
- Gearman分布式任务处理系统(六)跨多种环境部署
- 使用MySQL UDFs来调用gearman分布式任务分发系统
- Gearman分布式任务处理系统(六)跨多种环境部署