范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

分布式任务调度框架选型,如何选择一个合适的框架?

  首先,这种框架现在市面上是有的。强烈建议,不要重复造轮子。
  先介绍几种比较主流的。
  Elastic-Job,是当当网开源的分布式调度解决方案,支持任务分片功能,可以充分利用资源。Elastic-Job有两个独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。具体实现可以参考官方教程。其整体架构图如下。
  Elastic-Job的特点:
  1、分布式调度 2、作业高可用 3、任务分片执行。
  另外,还有其他的一些框架,可以对比使用。比如TBSchedule是阿里巴巴开源的分布式调度框架,完全由java实现,目前被应用于淘宝,阿里巴巴,支付宝,京东,汽车之家等。大众点评开源的xxl-job,也是应用比较广泛的分布式调度任务。
  目前我使用过的有 Elastic-Job和xxl-job。两者功能都很强大,后台管理也比较完善。很容易上手。都可以满足日常的工作需要。区别就是 Elastic-Job依赖zk,但是xxl-job不依赖zk,只依赖数据库。
  目前市面上应该还有一些其他的框架,但是以上是比较主流的,可以根据自己的需要来选择。切记不要重复造轮子,造轮子需要大量的时间去验证。会让你在坑里爬不出来。
  谢谢,希望对你有帮助,有问题可以留言,我们一起讨论!
  1.XXL-JOBXXL-JOB 是一个轻量级分布式任务调度框架,支持通过 Web 页面对任务进行 CRUD 操作,支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,支持在线配置调度任务入参和在线查看调度结果。主要特性
  简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;
  调度中心HA(中心式):调度采用中心式设计,"调度中心"基于集群Quartz实现并支持集群部署,可保证调度中心HA;
  执行器HA(分布式):任务分布式执行,任务"执行器"支持集群部署,可保证任务执行HA;
  弹性扩容缩容:一旦有新执行器机器上线或者下线,下次调度时将会重新分配任务;
  分片广播任务:执行器集群部署时,任务路由策略选择"分片广播"情况下,一次任务调度将会广播触发集群中所有执行器执行一次任务,可根据分片参数开发分片任务;
  动态分片:分片广播任务以执行器为维度进行分片,支持动态扩容执行器集群从而动态增加分片数量,协同进行业务处理;在进行大数据量业务操作时可显著提升任务处理能力和速度。
  动态:支持动态修改任务状态、暂停/恢复任务,以及终止运行中任务,即时生效;
  注册中心: 执行器会周期性自动注册任务, 调度中心将会自动发现注册的任务并触发执行。同时,也支持手动录入执行器地址;
  一致性:"调度中心"通过DB锁保证集群分布式调度的一致性, 一次任务调度只会触发一次执行;
  其他特性
  路由策略:执行器集群部署时提供丰富的路由策略,包括:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移、忙碌转移等;
  故障转移:任务路由策略选择"故障转移"情况下,如果执行器集群中某一台机器故障,将会自动Failover切换到一台正常的执行器发送调度请求。
  阻塞处理策略:调度过于密集执行器来不及处理时的处理策略,策略包括:单机串行(默认)、丢弃后续调度、覆盖之前调度;
  任务超时控制:支持自定义任务超时时间,任务运行超时将会主动中断任务;
  任务失败重试:支持自定义任务失败重试次数,当任务失败时将会按照预设的失败重试次数主动进行重试;其中分片任务支持分片粒度的失败重试;
  任务失败告警;默认提供邮件方式失败告警,同时预留扩展接口,可方面的扩展短信、钉钉等告警方式;
  事件触发:除了"Cron方式"和"任务依赖方式"触发任务执行之外,支持基于事件的触发任务方式。调度中心提供触发任务单次执行的API服务,可根据业务事件灵活触发。
  任务进度监控:支持实时监控任务进度;
  脚本任务:支持以GLUE模式开发和运行脚本任务,包括Shell、Python、NodeJS、PHP、PowerShell等类型脚本;
  调度线程池:调度系统多线程触发调度运行,确保调度精确执行,不被堵塞;
  数据加密:调度中心和执行器之间的通讯进行数据加密,提升调度信息安全性;
  邮件报警:任务失败时支持邮件报警,支持配置多邮件地址群发报警邮件;
  运行报表:支持实时查看运行数据,如任务数量、调度次数、执行器数量等;以及调度报表,如调度日期分布图,调度成功分布图等;
  全异步:任务调度流程全异步化设计实现,如异步调度、异步运行、异步回调等,有效对密集调度进行流量削峰,理论上支持任意时长任务的运行;
  功能齐全,文档也很齐全,有使用教程,但是上手门槛稍微高了;
  2.Elastic-Job
  Elastic-Job 是一个分布式调度解决方案,由两个相互独立的子项目 Elastic-Job-Lite 和 Elastic-Job-Cloud 组成。
  定位为轻量级无中心化解决方案,使用 jar 包的形式提供分布式任务的协调服务。
  支持分布式调度协调、弹性扩容缩容、失效转移、错过执行作业重触发、并行调度、自诊断和修复等等功能特性。
  分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
  Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。选择该项目可以满足大多数it企业的需求。
  Elastic-Job-Cloud使用Mesos + Docker的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。
  轻量级无中心化:Elastic-Job-Lite并无作业调度中心节点,而是基于部署作业框架的程序在到达相应时间点时各自触发调度。
  灵活的增删改查作业,集中式管理调度作业
  支持高可用:一旦执行作业的服务器崩溃,等待执行的服务器将会在下次作业启动时替补执行。开启失效转移功能效果更好,可以保证在本次作业执行时崩溃,备机立即启动替补执行。
  支持分片:作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
  任务监控:通过监听Elastic-Job-Lite的zookeeper注册中心的几个关键节点即可完成作业运行状态监控功能
  一致性:使用zookeeper作为注册中心,为了保证作业的在分布式场景下的一致性,一旦作业与注册中心无法通信,运行中的作业会立刻停止执行,但作业的进程不会退出,这样做的目的是为了防止作业重分片时,将与注册中心失去联系的节点执行的分片分配给另外节点,导致同一分片在两个节点中同时执行。
  同时支持动态扩容,将任务拆分为n个任务项后,各个服务器分别执行各自分配到的任务项。一旦有新的服务器加入集群,或现有服务器下线,elastic-job将在保留本次任务执行不变的情况下,下次任务开始前触发任务重分片
  3.opencron
  opencron是一个功能完善且通用的开源定时任务调度系统,拥有先进可靠的自动化任务管理调度功能,提供可操作的 web 图形化管理满足多种场景下各种复杂的定时任务调度,同时集成了 linux 实时监控、webssh 等功能特性
  4.quartz
  支持集群和分布式,但是没有友好的管理界面,功能单一,对于管理调用的任务比较困难。
  quartz使用数据库锁。在quartz的集群解决方案里有张表scheduler_locks,quartz采用了悲观锁的方式对triggers表进行行加锁,以保证任务同步的正确性。一旦某一个节点上面的线程获取了该锁,那么这个Job就会在这台机器上被执行,同时这个锁就会被这台机器占用。同时另外一台机器也会想要触发这个任务,但是锁已经被占用了,就只能等待,直到这个锁被释放。
  quartz的分布式调度策略是以数据库为边界资源的一种异步策略。各个调度器都遵守一个基于数据库锁的操作规则从而保证了操作的唯一性。同时多个节点的异步运行保证了服务的可靠。但这种策略有自己的局限性:集群特性对于高CPU使用率的任务效果很好,但是对于大量的短任务,各个节点都会抢占数据库锁,这样就出现大量的线程等待资源。这种情况随着节点的增加会越来越严重。
  缺点:quartz的分布式只是解决了高可用的问题,并没有解决任务分片的问题,还是会有单机处理的极限。
  5.Saturn
  Saturn
  基于当当Elastic Job代码基础上自主研发的任务调度系统,是唯品会开源的分布式作业调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到统一配置,统一监控,任务高可用以及分片并发处理。主要是去中心化,高可用,可分片,动态扩容,有认证和授权功能。
  主要特性
  支持多种语言作业,语言无关(Java/Go/C++/PHP/Python/Ruby/shell)
  支持秒级调度
  支持作业分片并行执行
  支持依赖作业串行执行
  支持作业高可用和智能负载均衡
  支持异常检测和自动失败转移
  支持异地容灾
  支持多个集群部署
  支持跨机房区域部署
  支持弹性动态扩容
  支持优先级和权重设置
  支持docker容器,容器化友好
  支持cron时间表达式
  支持多个时间段暂停执行控制
  支持超时告警和超时强杀控制
  支持灰度发布
  支持异常、超时和无法高可用作业监控告警和简易的故障排除
  支持失败率最高、最活跃和负荷最重的各域各节点TOP10的作业统计
  优点:源码清晰,学习入手容易。应用部署简单,提供运维控制台,集中管理作业,运维控制台功能强大,提供作业统计报表 ,告警,增删改查作业,作业统一配置。
  最后一个是国内团队封装的
  前端时间研究了两款分布式任务调度框架,一个是XXL-Job,现在非常主流,很多常见的一些公司都在使用,像滴滴美团这样的公司都在用,这也是一款开源产品,下载下来导入IDEA就可以使用,分调度器和执行器和管理UI,有很美观的UI界面,可以对任务做增删改查,以及支持自定义开发,有很详细的帮助文档,还提供有demo,傻瓜式的,很简单,亮点是提供了管理界面。
  另一个是Quartz,这个组件单机和集群都支持,单机的话是RAMJobStore任务存储,而要支持集群的话,就要将配置改成数据库方式,Quartz提供的有十几张表,其分布式的原理是利用了数据库的行锁,Quartz很简单,也是一款轻量级的开源产品,我们公司一直用这款组件,很成熟无Bug,推荐使用!
  springcloudtask,springclouddataflow,正在学习中

P60Ultra现身!华为全新超大杯旗舰折叠屏新机待发布目前,华为已经发布了多款全新手机产品。不过,随着时间的推进,不少用户也将关注集中在了华为后续的MateX3折叠屏手机P60系列旗舰等产品上。近日,博主厂长是关同学在爆料中提到,这次
聚焦南充制造业蓬安制造业求变求新迎来飞跃发展封面新闻记者赵紫君火热的项目,奋进的春天。2月27日,2023年南充市制造业高质量发展暨投资促进大会项目拉练走进蓬安县。蓬安金坛冶金迁建扩能技改项目旺达饲料年产50万吨饲料厂建设项80后杨惠妍正式掌舵!碧桂园要打翻身仗?3月1日,碧桂园控股有限公司发布公告称,公司主席及执行董事杨国强因年龄原因提出辞任其于公司担任的主席及执行董事职务,由2023年3月1日起生效。杨国强将在辞任后以特别顾问的形式继续老旧小区改造利于扩内需老旧小区改造不仅是民生工程,更是一项发展工程。2022年年底的中央经济工作会议提出,要把恢复和扩大消费摆在优先位置增强消费能力,改善消费条件,创新消费场景要通过政府投资和政策激励有百度首席战略官余正钧离职,曾任首席财务官2月27日,百度在港交所发布公告,余正钧已因个人原因辞任公司的首席战略官职位,于2023年3月1日生效,将协助公司完成其工作职责的平稳过渡。百度在公告中指出,余正钧辞任并非因与公司从亏40亿,到赚14亿,海底捞经历了什么本期看点1海底捞2022年预赚14亿2火锅行业最近的两次热搜3消费降级降到哪儿了第1308期文张冬田果从亏40亿,到赚14亿海底捞经历了什么2月24日,海底捞发布盈利预告,沸腾了餐谋和才能止战台海不能成战场台军空军防卫台海,推动凤展计划斥资逾1400亿新台币,将现有140架F16战机性能,提升至F16V等级。(图片来源台湾中央社)美国不断预测台海战争时间点,对台军售声声催,台湾民进党90后当代老师讲课偷吃太搞笑了90后当代老师讲课偷吃太搞笑了你个单手狗给我走开小姐姐你这是要泡泡变身啊晋孝武帝司马曜酒后因一句玩笑话,被爱妃拿被子捂死晋孝武帝司马曜,这真是一个刷新我认知的皇帝,手握一副好牌却打的稀碎,死法更是奇葩,居然因为一句玩笑话被自己的贵妃给杀了,这种死法真是没谁了。他是东晋第九任皇帝,简文帝第六个儿子,母律师谈尤文处罚扣15分将被取消,但尤文可能因违规注册被罚降级直播吧3月1日讯意大利律师吉吉马伦戈在谈到尤文财务造假案时认为,尤文的15个扣分处罚将被取消,但尤文可能被罚降级。尤文此前因财务造假被扣15分,目前尤文正在为此上诉。而马伦戈律师表喜讯!中国马术队包英凤收获这项国际赛桂冠第一赛马网获悉,2月26日至28日,中国马术三项赛队包英凤华天孙华东参加了在意大利蒙泰利雷布雷蒂举行的国际马术三项赛系列比赛。这是三项赛队自2022年冬歇期后第一场FEI级别赛事。iOS微信8。0。33正式版更新,有哪些变化?继安卓微信更新之后,微信团队发布了iOS微信8。0。33正式版,距离上一个正式版发布已过去近50天的时间。01主要更新内容目前没有在iOS微信8。0。33正式版中发现可见的变化。微