分布式任务调度框架选型,如何选择一个合适的框架?
首先,这种框架现在市面上是有的。强烈建议,不要重复造轮子。
先介绍几种比较主流的。
ElasticJob,是当当网开源的分布式调度解决方案,支持任务分片功能,可以充分利用资源。ElasticJob有两个独立的子项目ElasticJobLite和ElasticJobCloud组成。具体实现可以参考官方教程。其整体架构图如下。
ElasticJob的特点:
1、分布式调度2、作业高可用3、任务分片执行。
另外,还有其他的一些框架,可以对比使用。比如TBSchedule是阿里巴巴开源的分布式调度框架,完全由java实现,目前被应用于淘宝,阿里巴巴,支付宝,京东,汽车之家等。大众点评开源的xxljob,也是应用比较广泛的分布式调度任务。
目前我使用过的有ElasticJob和xxljob。两者功能都很强大,后台管理也比较完善。很容易上手。都可以满足日常的工作需要。区别就是ElasticJob依赖zk,但是xxljob不依赖zk,只依赖数据库。
目前市面上应该还有一些其他的框架,但是以上是比较主流的,可以根据自己的需要来选择。切记不要重复造轮子,造轮子需要大量的时间去验证。会让你在坑里爬不出来。
谢谢,希望对你有帮助,有问题可以留言,我们一起讨论!
1。XXLJOBXXLJOB是一个轻量级分布式任务调度框架,支持通过Web页面对任务进行CRUD操作,支持动态修改任务状态、暂停恢复任务,以及终止运行中任务,支持在线配置调度任务入参和在线查看调度结果。主要特性
简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
调度中心HA(中心式):调度采用中心式设计,调度中心基于集群Quartz实现并支持集群部署,可保证调度中心HA;
执行器HA(分布式):任务分布式执行,任务执行器支持集群部署,可保证任务执行HA;
弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
分片广播任务:执行器集群部署时,任务路由策略选择分片广播情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
动态:支持动态修改任务状态、暂停恢复任务,以及终止运行中任务,即时生效;
注册中心:执行器会周期性自动注册任务,调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
一致性:调度中心通过DB锁保证集群分布式调度的一致性,一次任务调度只会触发一次执行;
其他特性
路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;
故障转移:任务路由策略选择故障转移情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。
阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;
任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方面的扩展短信、钉钉等告警方式;
事件触发:除了Cron方式和任务依赖方式触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。
任务进度监控:支持实时监控任务进度;
脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;
功能齐全,文档也很齐全,有使用教程,但是上手门槛稍微高了;
2。ElasticJob
ElasticJob是一个分布式调度解决方案,由两个相互独立的子项目ElasticJobLite和ElasticJobCloud组成。
定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。
支持分布式调度协调、弹性扩容缩容、失效转移、错过执行作业重触发、并行调度、自诊断和修复等等功能特性。
分布式调度解决方案,由两个相互独立的子项目ElasticJobLite和ElasticJobCloud组成。
ElasticJobLite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。选择该项目可以满足大多数it企业的需求。
ElasticJobCloud使用MesosDocker的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。
轻量级无中心化:ElasticJobLite并无作业调度中心节点,而是基于部署作业框架的程序在到达相应时间点时各自触发调度。
灵活的增删改查作业,集中式管理调度作业
支持高可用:一旦执行作业的服务器崩溃,等待执行的服务器将会在下次作业启动时替补执行。开启失效转移功能效果更好,可以保证在本次作业执行时崩溃,备机立即启动替补执行。
支持分片:作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
任务监控:通过监听ElasticJobLite的zookeeper注册中心的几个关键节点即可完成作业运行状态监控功能
一致性:使用zookeeper作为注册中心,为了保证作业的在分布式场景下的一致性,一旦作业与注册中心无法通信,运行中的作业会立刻停止执行,但作业的进程不会退出,这样做的目的是为了防止作业重分片时,将与注册中心失去联系的节点执行的分片分配给另外节点,导致同一分片在两个节点中同时执行。
同时支持动态扩容,将任务拆分为n个任务项后,各个服务器分别执行各自分配到的任务项。一旦有新的服务器加入集群,或现有服务器下线,elasticjob将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片
3。opencron
opencron是一个功能完善且通用的开源定时任务调度系统,拥有先进可靠的自动化任务管理调度功能,提供可操作的web图形化管理满足多种场景下各种复杂的定时任务调度,同时集成了linux实时监控、webssh等功能特性
4。quartz
支持集群和分布式,但是没有友好的管理界面,功能单一,对于管理调用的任务比较困难。
quartz使用数据库锁。在quartz的集群解决方案里有张表schedulerlocks,quartz采用了悲观锁的方式对triggers表进行行加锁,以保证任务同步的正确性。一旦某一个节点上面的线程获取了该锁,那么这个Job就会在这台机器上被执行,同时这个锁就会被这台机器占用。同时另外一台机器也会想要触发这个任务,但是锁已经被占用了,就只能等待,直到这个锁被释放。
quartz的分布式调度策略是以数据库为边界资源的一种异步策略。各个调度器都遵守一个基于数据库锁的操作规则从而保证了操作的唯一性。同时多个节点的异步运行保证了服务的可靠。但这种策略有自己的局限性:集群特性对于高CPU使用率的任务效果很好,但是对于大量的短任务,各个节点都会抢占数据库锁,这样就出现大量的线程等待资源。这种情况随着节点的增加会越来越严重。
缺点:quartz的分布式只是解决了高可用的问题,并没有解决任务分片的问题,还是会有单机处理的极限。
5。Saturn
Saturn
基于当当ElasticJob代码基础上自主研发的任务调度系统,是唯品会开源的分布式作业调度平台,取代传统的LinuxCronSpringBatchJob的方式,做到统一配置,统一监控,任务高可用以及分片并发处理。主要是去中心化,高可用,可分片,动态扩容,有认证和授权功能。
主要特性
支持多种语言作业,语言无关(JavaGoCPHPPythonRubyshell)
支持秒级调度
支持作业分片并行执行
支持依赖作业串行执行
支持作业高可用和智能负载均衡
支持异常检测和自动失败转移
支持异地容灾
支持多个集群部署
支持跨机房区域部署
支持弹性动态扩容
支持优先级和权重设置
支持docker容器,容器化友好
支持cron时间表达式
支持多个时间段暂停执行控制
支持超时告警和超时强杀控制
支持灰度发布
支持异常、超时和无法高可用作业监控告警和简易的故障排除
支持失败率最高、最活跃和负荷最重的各域各节点TOP10的作业统计
优点:源码清晰,学习入手容易。应用部署简单,提供运维控制台,集中管理作业,运维控制台功能强大,提供作业统计报表,告警,增删改查作业,作业统一配置。
最后一个是国内团队封装的
前端时间研究了两款分布式任务调度框架,一个是XXLJob,现在非常主流,很多常见的一些公司都在使用,像滴滴美团这样的公司都在用,这也是一款开源产品,下载下来导入IDEA就可以使用,分调度器和执行器和管理UI,有很美观的UI界面,可以对任务做增删改查,以及支持自定义开发,有很详细的帮助文档,还提供有demo,傻瓜式的,很简单,亮点是提供了管理界面。
另一个是Quartz,这个组件单机和集群都支持,单机的话是RAMJobStore任务存储,而要支持集群的话,就要将配置改成数据库方式,Quartz提供的有十几张表,其分布式的原理是利用了数据库的行锁,Quartz很简单,也是一款轻量级的开源产品,我们公司一直用这款组件,很成熟无Bug,推荐使用!
springcloudtask,springclouddataflow,正在学习中
生活中的传统文化三年级作文350字说到生活中的传统文化,不得不提的就是春节这个节日吧!每年临近春节,学校放假,工厂休息,人们宰鸡杀羊,办年货,买新衣,还把家里打扮的漂漂亮亮。这时候,大小商家各类商品琳琅满……
糟糕的中国移动通信体验本人2021年4月在佛山拨打中国移动10086客服热线报装宽带电视网络服务,该服务于今年4月20号到期。在3月就有中国移动的客服给我打电话询问是否续费,我明确表示到期要取消。……
注意!微信有大动作4月29日,据微信微信珊瑚安全公告显示,为维护网络传播秩序,进一步打击仿冒搬运、造谣传谣等行为,微信公众平台将显示用户发布内容时的IP属地,境内账号展示到省(自治区、直辖市),……
最新资讯看看这周知识产权界发生了什么?5月7日,商标局与中国政法大学联合开展知识产权与青年主题交流活动;为贯彻落实习总书记关于知识产权保护和考察调研中国政法大学时的重要讲话精神,在第22个世界知识产权日之际,……
热门难忘的中秋节作文300字集锦十篇难忘的中秋节作文300字篇1那天一大早,我就早早地起来去超市买月饼,一到超市,我发现最显眼处摆的都是月饼,可以说是琳琅满目,应有尽有。口味有豆沙的,年荣的,蛋黄的,五仁的……
亚马逊云科技筑牢中小企业上云出海数字化底座日前,基于长期服务中国出海企业的洞察以及委托第三方调研机构中桥咨询的调研数据,亚马逊云科技联合第三方调研机构中桥咨询,共同发布的中国企业上云出海趋势显示,越来越多的中国企业开始……
借助AI人类能听懂动物的喜怒哀乐?谭茗洲远望智库人工智能事业部部长、图灵机器人首席战略官在《安徒生童话》等文学作品,以及不少优秀的影视作品中都反映了同一个主题人与动物的交流互动。如今,世界各地的学者们试图……
商翔科技2021年净利487。61万同比增长1450。86美挖贝网5月9日,商翔科技(870100)近日发布2021年度报告,报告期内公司实现营业收入93,078,137。30元,同比增长24。69;归属于挂牌公司股东的净利润4,876……
爸爸妈妈我爱你小学生作文500字我很喜欢看书。例如:《戴小桥和他的哥儿们》、《草房子》但我还是被一本叫《感恩父母》的书给吸引住了。如果你问我为什么喜欢看这本书,那理由就说不完了,这本书讲了许多感恩故事,使我感……
数字货币这盘大旗能否撼动美元霸权?今天,我们来聊聊数字货币背后的意义到底是什么?其实有很多老铁已经对这个数字货币有一定了解了。说白了它就是人民币的电子版,但是与某信某宝比起来更安全,私密性更好,只有央行通过后台……
熟悉的陌生人作文优秀范文我们变成了世界上最熟悉的陌生人,今后,各自曲折,各自悲哀。是否,这便是我们的结局?最熟悉的陌生人,多么可悲的称呼。下面一起随小编来欣赏关于熟悉的陌生人的作文吧。熟悉的陌生人作文……
三体读后感关于维度的思考最近又刷了一遍三体,再次引发了对多维空间的思考。我们生活的空间是三维,在三维的空间中思维。对二维,一维和四维习惯性的在后面加上空间两个字,文字的桎梏限制了想象力。甚至为了在三维……
小学英语作文春天来了TheSpringIsComingDuringtheSpringFestival,theweatherwassocold,Ihadtostayindoorsmostofthetime。Theworldlooke……
跟我交个朋友吧四年级作文我是一个温柔可爱的。小女孩,一副小小的眼镜遮住了我那双水灵灵的大眼睛,还被同学们取笑为四眼田鸡。我最大的特点就是个子高,四年级时就有一米五几了,个子高的好处:大家都认为我是大孩……
2分钟带你学习pygame第一课一。Pygame简介Pygame是跨平台Python模块,专为电子游戏设计。包含图像、声音。创建在SDL基础上,允许实时电子游戏研发而无需被低级语言二。Pygame……
虫梦奇缘秋夜,我滞留在乡间的一块空地上。蝈蝈肆无忌惮地在我脚边活动着,还时不时跳上我的腿,漫无目的地找着乐子。只见它微欠身躯,稍稍弹起四肢,倚在我的腿上,同时又把头触在我的膝盖上,仿佛……
关于给哥哥的一封信500字亲爱的哥哥:你好!不知不觉中我与你离开已有好几个月了。这儿的人对我都十分好,你不用担心我。对了,你最近过得还好吗?身体怎么样?哥哥,我好想你,只要我闭上双睛,便会出……
小贷公司的兴衰是资本的无序扩张还是技术不当利用?小额贷款公司一直是普惠金融的重要组成部分。2005年,联合国在国际小额信贷年上率先正式提出普惠金融理念。2013年,十八届三中全会首次正式提出发展普惠金融,标志着我国发展普惠金……
全球游戏巨头军备竞赛升级索尼36亿美元收购Bungie对抗微《科创板日报》2月1日讯在微软收购动视暴雪的那一天,索尼的股票遭到了市场的无情抛售。美国当地时间周一,索尼宣布计划斥资36亿美元收购热门游戏《光环》、《命运》开发商Bungie……
神笔马良故事续写会用神笔画画的马良让昏庸贪财的皇帝葬身大海之后。皇帝的儿子继承了王位。新皇帝的年纪和马良的差不多,却十分有心计。他知道用什么方法也管束不了马良,就和马良做了朋友。而且把马……
一点星光亮小学作文750字如果我的天空只剩下了一颗星星,那么它就是宇宙中最耀眼的明星。我会以守望的姿势将它铭记在心。无论是小时候还是现在,我都对漫天的星辰情有独钟。它的浪漫和惬意,它的美好与希翼,……
玫瑰的谎言精选人生,本是一张白纸,但自从蓝给了我友谊,黄教会了我忠义,粉红给了我希望。我的生活变成了一幅彩图。但却缺一种颜色mdash;mdash;红,应该是什么呢?当我的哭声第……
高中军训小结600字高中的军训,会比小学和初中的更加艰苦。下面是小编为您推荐的作文:【高中军训小结作文一】艰苦的军训结束了,我十分感谢学校学校能够给我们高一学生这样一个感受部队生活的舞……
想换个屏幕好点的手机,什么推荐的吗?感谢邀请本人买手机看重屏幕,所以想换一部屏幕好的手机,有推荐吗?题主问题的核心是自己买手机看重屏幕,所以想换一部屏幕好的手机,有推荐吗?iQOO8pro怎么样?客观一点来……