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

主流定时任务解决方案全横评

  定时任务作为一种按照约定时间执行预期逻辑的通用模式,在企业级开发中承载着丰富的业务场景,诸如后台定时同步数据生成报表,定时清理磁盘日志文件,定时扫描超时订单进行补偿回调等。程序开发人员在定时任务领域有着诸多框架和方案可供选择,并借此快速实现业务功能实现产品上线。本文将就当前主流定时任务解决方案进行介绍和分析,期望可以在企业技术选型和项目架构重构时作为参考。
  01  Crontab
  Aliware
  01
  目标定位   Crontab 作为 Linux 内置的可执行命令,可以实现按照 cron 表达式生成的时间执行指定的系统指令或 shell 脚本。   02
  使用方式   crontab 命令语法: crontab [-u username] [-l | -e | -r ] 参数: -u : 只有root用户才能进行这个任务,编辑某个用户的crontab -e : 编辑 crontab 的工作内容 -l : 查阅 crontab 的工作内容 -r : 移除所有的 crontab 的工作内容   配置文件示例: * * * * * touch ~/crontab_test * 3 * * * ~/backup 0 */2 * * * /sbin/service httpd restart   03
  实现原理   crond 守护进程是通过 Linux 启动时的 init 进程启动,由 cornd 每分钟会检查/etc/crontab 配置文件中是否有需要执行的任务,并通过 /var/log/cron 文件输出定时任务的执行情况。用户可以使用 Crontab 命令管理/etc/crontab 配置文件。   04
  方案分析   借助 Crontab 用户可以十分便利地快速实现简易的定时任务功能,但存在以下痛点: 定时任务与指定 linux 机器绑定,当机器扩容或者更换时需要重新配置 contab,同时存在单点故障风险 随着定时任务规模增多,无法统一视角对其进行任务进度的追踪和管控,难以维护 功能过于简单,没有超时,重试,阻塞等任务的高级特性 可观测能力差,问题排查定位困难 任务常驻,当无任务执行时造成不必要的资源成本浪费   02 Spring Task   Aliware   01
  目标定位   Spring 框架提供了开箱即用的定时调度功能,用户可以通过 xml 或者@Scheduled 注解的方式标识指定方法执行的周期。Spring Task 支持多种任务执行模式,包括带时区配置的 corn,固定延迟,固定速率等。   02
  使用方式   代码实例如下: @EnableScheduling @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } } @Component public class MyTask { @Scheduled(cron = "0 0 1 * * *") public void test() { System.out.println("test"); } }   03
  实现原理   Spring Task 原理是在初始化 bean 时借助 ScheduledAnnotationBeanPostProcessor 拦截@Scheduled 注解所标识的方法,并根据每个方法及其注解配置构建相应的 Task 实例注册到 ScheduledTaskRegistrar 中,并在单例 bean 初始化完成后通过 afterSingletonsInstantiated 回调设置 ScheduledTaskRegistrar 中的调度器 TaskScheduler,其底层依赖于 jdk 并发包中的 ScheduledThreadPoolExecutor 实现,并在 afterPropertiesSet 时将所有 Task 添加到 TaskScheduler 中调度执行。   04
  方案分析   借助 Spring Task 用户可以通过注解快速实现对指定方法的周期性执行,支持多种周期性策略。但与 crontab 相似,同样有如下的痛点: 默认为单线程执行,若前一个任务执行时间较长会导致后续任务阻塞,需要用户自行配置线程池 各个节点独立运行,存在单点风险,无分布式协调机制,要考虑禁止并发执行 随着定时任务规模增多,无法统一视角对其进行任务进度的追踪和管控,难以维护 功能过于简单,没有超时,重试,阻塞等任务的高级特性 可观测能力差,问题排查定位困难 任务常驻,当无任务执行时造成不必要的资源成本浪费   03 ElasticJob   Aliware   01
  目标定位   ElasticJob 作为当当网开源的一款分布式任务框架,提供弹性调度,资源管控,作业治理等诸多特性,其已经成为 Apache Shardingsphere 的子项目。ElasticJob 目前由 2 相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成,ElasticJob-Lite 定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务;ElasticJob-Cloud 使用 Mesos 的解决方案,额外提供资源治理、应用分发以及进程隔离等服务。一般使用 ElasticJob-Lite 即可满足需求。   02
  使用方式   使用者需要在 yaml 中配置注册中心 zk 地址以及任务的配置信息: elasticjob: regCenter: serverLists: localhost:6181 namespace: elasticjob-lite-springboot jobs: simpleJob: elasticJobClass: org.apache.shardingsphere.elasticjob.lite.example.job.SpringBootSimpleJob cron: 0/5 * * * * ? timeZone: GMT+08:00 shardingTotalCount: 3 shardingItemParameters: 0=Beijing,1=Shanghai,2=Guangzhou   实现对应的接口即可标识对应的任务,同时通过配置监听器来实现任务执行前后回调: public class MyElasticJob implements SimpleJob { @Override public void execute(ShardingContext context) { switch (context.getShardingItem()) { case 0: // do something by sharding item 0 break; case 1: // do something by sharding item 1 break; case 2: // do something by sharding item 2 break; // case n: ... } } } public class MyJobListener implements ElasticJobListener { @Override public void beforeJobExecuted(ShardingContexts shardingContexts) { // do something ... } @Override public void afterJobExecuted(ShardingContexts shardingContexts) { // do something ... } @Override public String getType() { return "simpleJobListener"; } }   03
  实现原理   ElasticJob 底层时间调度基于 Quartz,Quartz 需要持久化业务 Bean 到底层数据表中,系统侵入性相当严重,同时通过 db 锁定进行任务抢占,不支持并行调度,不具备可扩展性。而 ElasticJob 通过数据分片以及自定义分片参数的特性完成了水平扩展,可以将一个任务拆分为 N 独立的任务项,由分布式的服务器并行执行各自分配到的分片项。比如一个数据库中有 1 亿条数据,需要将这些数据读取出来并进行计算,就可以将这 1 亿条数据划分成 10 个分片,每一个分片读取其中的 1 千万条数据,然后计算后写入数据库。如果有三台机器执行,A 机器分到分片(0,1,2,9),B 机器分到分片(3,4,5),C 机器分到分片(6,7,8),这也是相比于 Quartz 最显著的优势。   实现上 ElasticJob 使用 zookeeper 作为注册中心进行分布式调度协调以及 leader 节点的选举,通过注册中心的临时节点的变化来感知服务器的增减,每当 leader 节点选举,服务器上下线,分片总数变更时均会触发后续的重新分片,由 leader 节点在下次定时任务触发时进行具体的分片划分,再由各节点从注册中心中获取分片信息,作为任务的运行参数进行执行。   04
  方案分析   ElasticJob 作为分布式任务框架,解决了上述单节点任务无法保证任务执行过程中的高可用和高并发下执行的性能的问题,并支持失败转移(failover)和错过执行的作业重新执行(misfire)等高级机制,但在使用过程中仍存在以下痛点: 框架整体较重,需要依赖外置注册中心zk,增加了至少三台服务器的使用成本和维护复杂度 随着任务量的不断增多,zk 作为有状态中间件将会成为性能瓶颈 可观测能力弱,需要额外引入 db 并配置事件追踪 任务常驻,当无任务执行时造成不必要的资源成本浪费   04 XXLJob   Aliware   01
  目标定位   XXLJob 作为大众点评员工开源的一款分布式任务框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXLJob 具备丰富的功能,如任务分片广播,超时控制,失败重试,阻塞策略等,并通过体验友好的白屏化控制台对任务进行管理和维护。   02
  使用方式   XXLJob 分为中心式调度器和分布式执行器两部分组成,在使用时需要分别启动,在调度中心启动时需要配置所依赖的 db 配置。   执行器需要配置调度中心的地址: xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin xxl.job.accessToken= xxl.job.executor.appname=xxl-job-executor-sample xxl.job.executor.address= xxl.job.executor.ip= xxl.job.executor.port=9999 xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler xxl.job.executor.logretentiondays=30   通过 bean 模式方法形式创建任务和前后回调的使用方式如下: @XxlJob(value = "demoJobHandler2", init = "init", destroy = "destroy") public void demoJobHandler() throws Exception { int shardIndex = XxlJobHelper.getShardIndex(); int shardTotal = XxlJobHelper.getShardTotal(); XxlJobHelper.log("分片参数:当前分片序号 = {}, 总分片数 = {}", shardIndex, shardTotal); } public void init(){ logger.info("init"); } public void destroy(){ logger.info("destory"); }   创建任务完成后,需要在控制台上配置任务的执行策略:   03
  实现原理   XXLJob 实现上将调度系统与任务解耦,其自研调度器负责管理调度信息,按照调度配置发出调度请求,支持可视化、简单且动态的管理调度信息,自动发现和路由,调度过期策略,重试策略,支持执行器 Failover。执行器负责接收调度请求并执行任务逻辑,并接收任务终止请求和日志请求,负责任务超时,阻塞策略等。调度器和执行器通过 restful api 进行通信,调度器本身无状态支持集群部署,提升调度系统容灾和可用性,通过 mysql 维护锁信息和持久化。执行器无状态支持集群部署,提升调度系统可用性,同时提升任务处理能力。   XXLJob 一次完整的任务调度通讯流程:首先调度中心向执行器内嵌 Server 发送 http 调度请求,然后执行器执行对应的任务逻辑,待任务执行完成或超时后执行器发送 http 回调向调度中心返回调度结果。   04
  方案分析   XXLJob 在开源社区广泛流行,凭借其简单的操作和丰富的功能已在多家公司投入使用,可以较好的满足生产级别的需求,但下面的一些痛点需要改进: 需要依赖外置 DB,增加了数据库的使用成本和维护复杂度 依赖 DB 锁保证集群分布式调度的一致性,当短时任务量不断增多将对 db 造成较大压力,成为性能瓶颈 相较于无中心模式需要额外部署调度器,调度器和执行器均需要常驻同时为保证高可用均至少两台,当无任务执行时造成不必要的资源成本浪费   05 Serverless Job   Aliware   01
  目标定位   Serverless 作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势使得其在云原生时代备受推崇。SAE (Serverless 应用引擎)Job 作为首款面向任务的 Serverless PaaS 平台,提供传统的用户体验。当前聚焦支持单机、广播、并行分片模型的任务,同时支持事件驱动、并发策略和超时重试等诸多特性,提供低成本、多规格、高弹性的资源实例来满足短时任务的执行。   02
  使用方式   对于使用上述所有方案的存量应用,SAE (Serverless 应用引擎) Job 在兼容功能体验的同时支持零改造无感迁移,无论用户使用的是 Crontab,Spring Task,还是 ElasticJob, XXLJob,均可将代码包或者镜像直接部署到 SAE (Serverless 应用引擎) Job中,直接升级成为 Serverless 架构, 从而即刻拥有 Serverless 所带来的技术上的优势,节省资源成本和运维成本。   对于运完即停的程序,无论是 Java,还是 Shell,Python,Go,Php 均可以直接部署到 SAE (Serverless 应用引擎) Job 中, 从而即刻拥有白屏化管控,全托管免运维的完备体验以及开箱即用的可观测功能。   03
  实现原理   SAE (Serverless 应用引擎)Job 底层为多租 Kubernetes,使用神龙裸金属安全容器、VK 对接 ECI 两种方式提供集群计算资源。用户在 SAE(Serverless 应用引擎)中运行的任务会映射到 Kubernetes 中相应的资源。其中多租能力是借助系统隔离、数据隔离、服务隔离和网络隔离实现租户间的隔离。SAE (Serverless 应用引擎)Job 通过 Event Bridge 作为事件驱动源,在支持丰富调用方式的同时避免了 Kubernetes 内置定时器不保证准时触发以及精度时区上的问题。同时不断完善 Job 控制器的企业级特性,新增自定义分片,注入配置,差异化 GC,sidecar 主动退出,实时日志持久化,事件通知等机制。并借助 Java 字节码增强技术接管任务调度,实现通用的 Java 目标框架的零改造 Serverless 化。使用 KubeVela 软件交付平台作为任务发布和管理的载体,以任务为中心,以开源开放的标准,通过声明式的方式完成整个云原生交付。SAE (Serverless 应用引擎)Job 将持续优化 etcd 以及调度器在短时任务高并发创建场景下的效率以及实例启动的极致弹性能力,结合弹性资源池保证任务调度的低延迟和高可用。   04
  方案分析   SAE (Serverless 应用引擎)Job 解决了上述定时任务解决方案的各种痛点,用户无需关注任务的调度和集群资源,无需部署的额外的运维依赖组件,也无需自建一整套监控告警系统,同时更重要的是无需云主机 7*24h 常驻,在低资源利用率的环境下持续消耗闲置资源。   SAE (Serverless 应用引擎)Job 相较于传统定时任务解决方案提供了三大核心价值: 完备全托管:提供了一站式全托管的管理界面,其任务生命周期管理、可观测性开箱即用,用户可以低心智负担、零成本地学习使用 SAE (Serverless 应用引擎)。 简单免运维:屏蔽了底层资源,用户只需关注其核心的业务逻辑开发,无需操心集群可用性、容量、性能等方面的问题。 超高性价比:采用按需使用、按量付费的模式,只有任务执行业务逻辑时才会拉起收费,其余时间不收取任何费用,极大节省了资源的成本开销。   06 总结   Aliware   本文对主流定时任务解决方案(Crontab, Spring Task, ElasticJob, XXLJob, Serverless Job)的目标定位、使用方式、实现原理进行了阐述,同时就企业密切关注的功能体验,性能成本方面的问题进行横评分析。最后期望大家选用 Serverless Job,感受其对传统任务所带来的新变革。   点击下方了解更多 SAE Job 的功能优势,和众多开源任务框架"低门槛"迁移的方案!

春如花开(组诗)春如花开作者罗洪标(广东)主播碧莹清冽春意有了迷人的芳香多情的花朵总等待着温柔的春风摇曳着美妙身姿打开灿烂笑脸露出最美的春光陶醉了这季节风含情水含笑脉脉柔情心在跳燃烧的青春在这最美气候变暖将大幅削弱湿地温室气体汇功能科技日报北京3月20日电(记者陆成宽)气候变暖会减弱湿地碳汇功能吗?答案是肯定的!20日,记者从中科院大气物理所获悉,基于19902022年间在167个自然湿地站点开展的人为增温模吉安赏花春色满园关不住桂竹园内垂丝海棠花开正艳吉安赏花春色满园关不住桂竹园内垂丝海棠花开正艳吉安赏花春色满园关不住桂竹园内垂丝海棠花开正艳吉安赏花春色满园关不住桂竹园内垂丝海棠花开正艳吉安赏花春色满园关不住桂竹园内垂丝海棠花开河北衡水湖国家一级重点保护动物白鹤再临生态湿地白鹤在衡水湖上结伴飞翔。白鹤在衡水湖栖息。小天鹅大雁在衡水湖湿地和睦相处。灰鹤在衡水湖附近田间觅食。记者14日从衡水湖国家级自然保护区资源保护局获悉,国家一级重点保护动物白鹤再度飞3。21失落城堡春分活动即将开启,一起来城堡踏青吧!3月21日更新简报1。春分活动吃香蕉大赛开启,挑战吃香蕉赢取丰厚奖励2。套装人气投票亚军返场,体验全新风格装扮!3。春分主题套装重磅返场,体验森林系的特殊装扮!1。春分吃香蕉大赛开OPPOFindX6系列最全汇总不止有极致影像,其它体验也全面高能?在3月21日14点,OPPO将发布FindX6系列旗舰机型。而在官微预热和大V爆料之后,OPPOFindX6系列引起了诸多网友的期待。那么,定位开启移动影像新时代的OPPOFind世界上湖泊最多的水系,集中了芬兰大半的大湖泊!说到湖泊最多的国家,大家应该准会想到是芬兰。是的,毕竟芬兰有数万个大小湖泊,尤其是东南部,河流与湖泊看似已经连成了一片。如果我告诉你们其中大多数的湖泊同属一个水系,你们会相信吗?并新疆为什么有这么大的吸引力,让数亿人蜂拥而至?文远山隐史编辑远山隐史文章约3300字阅读时长约7min前言爱上新疆的理由有千万种,浓郁的异域风情牛羊成群的大草原独特的旅游资源美味可口的食物作为我国面积最大的省级行政区,原来新疆呼和浩特候鸟北归还3月20日,在内蒙古自治区呼和浩特市托克托县黄河沿岸,大雁在空中飞翔。随着天气转暖,在内蒙古自治区呼和浩特市托克托县黄河沿岸,大批候鸟北归到此觅食。近年来,随着当地生态环境持续改善太白湖新区综合执法分局为群众赏花路保驾护航阳春三月,春色盎然,百花盛开,正是踏春出游好时节。太白湖新区渔皇路两侧樱花斗艳,正值最佳观赏期,吸引了大批群众和游客前来打卡拍照。为更好地享受大自然的馈赠,感受春日气息,太白湖新区消散结节有妙法啦!结节就是包块的意思,一般是实性结节,质地比较硬,有可能是良性的结节,也有可能是恶性肿瘤,通常在体表比较容易多见,比如皮脂腺囊肿甲状腺结节乳腺结节等。那么,长了结节该怎么消散呢?图片
定调!国家严控都市圈盲目扩张规模,南宁都市圈或将面临大幅缩水文城市情报社原创出品,欢迎关注!上期社长盘点了郑州都市圈重要信号!国家防止都市圈盲目扩张规模,郑州都市圈或将大幅缩水,本期再说说另一个即将缩水的都市圈南宁都市圈。说到南宁都市圈,不三分钟带你读懂什么是国央企混改自混合所有制改革被列为国企改革的重要突破口以来,央企和地方国企混改呈现多点开花的态势。目前很多企业通过国企央企混改挂靠方式,取得了初步成效,今天小编就来为大家介绍下国企央企混改知识亿纬锂能拟100亿元投建储能与动力电池项目亿纬锂能拟100亿元投建储能与动力电池项目财联社9月27日电,亿纬锂能公告,公司拟与沈阳市政府沈阳经开区管委会就公司在沈阳经开区管委会范围内投建亿纬锂能储能与动力电池项目相关事宜签美股开盘道指涨逾200点中概股多走高拼多多哔哩哔哩涨逾3金融界9月27日消息,投资者关注日内经济数据和美联储主席鲍威尔讲话,同时美国十年期国债收益率从高点回落以及投资者逢低做多带动了期指反弹的脚步,美股一扫之前几个交易日的颓势大幅高开,任职要求强调11遍肤白貌美大长腿?公司招聘岂能儿戏任职要求强调11遍肤白貌美大长腿公司招聘岂能儿戏招聘公告不仅是对外发布用工需求,相关内容表述和价值取向,也会折射出企业的用工文化,关乎企业的社会形象。近日,长沙一家公司在招聘APP国乒新消息!59岁的李隼接班人找到了,刘国梁爱徒走马上任今天是北京时间的九月二十七号,根据最近赛程的安排,我们成都的世乒赛也是即将要开赛了。而且本次会分为男队的团体赛和女队的团体赛。当然,我们国乒的目标肯定是拿下两个比赛的冠军的。因为说聘用猫主子当店员,新华书店跨界新业态2022年9月25日,北京市新华书店首家宠物主题书店亮相,吸引了众多萌宠爱好者前来打卡。该店打破了传统书店的经营服务方式,尝试跨界新型业态合作模式,将书香文化与宠物主题相融合,带领饮尽杯中甘甜,与你一朝轰轰烈烈时间裂出一道缺口让思念自由,不曾恐惧爱恨交集接受创痛的洗礼,凝视你的举动把温柔写在了眼中,许下一生不变只求换你今生红妆,冻裂崩塌等待爱散落满地,心都已不再回头再也看不见有你,触碰爱人到中年,如果还没喝过这3款酒,那你得豪横一把,真的值我们从小就被教导好好学习,长大了学本事找个好工作,有了好工作慢慢的去争取属于自己的好生活,好日子,属于我们一直期盼着那好日子,并一切以那为动力努力面对生活的困境,在这种平凡的人生轨展中人逛展览感受好家风力量广东省作家协会的观展者用手机拍下焦裕禄同志珍贵的家庭照片。来自广东省公安厅的观众仔细观看展柜中的家书等展品。海关总署广东分署的观众在展览现场留下寄语。40位精选自广东各行各业展中人前8月汽车企业出口超180万辆中国汽车加速驶向海外市场原标题前8月汽车企业出口超180万辆,同比增长52。8中国汽车加速驶向海外市场近日,国内最大批量纯电动汽车在上海海通码头装船起运,出口欧洲。这次出口欧洲市场的是上汽集团定位全球市场重庆万州女富豪彭蕾发家史扔掉铁饭碗追随马云,如今身家225亿她是支付宝女王,更是阿里巴巴18罗汉之一,被称为马云最信赖的女人。她就是彭蕾,是和马云一起打下互联网江山的开国元老。根据2022年胡润全球富豪榜显示,彭蕾以身家225亿登榜。彭蕾曾男孩投喂消防员,顺便还送来个任务来源人民网江西近日江西抚州一名小男孩给消防员送奶茶结果被卡进栅栏里获得众多网友关注9月22日抚州市东乡区消防救援大队门口来了一个提着袋子的小男孩只见他俯身钻过门口的栅栏想将手里的东鱼与熊掌兼得海信U8H定义全场景超画质得画质者得天下,画质革新始终是电视竞争的核心。近年来,随着5G快速普及,加速了8K时代来临,也让画质的内涵与外延都发生了巨大的变化。未来该如何定义好画质呢。9月20日,海信给出了答乱炖洗衣怎么能忍?TCL双子舱Q10分区洗护更安心近日,张踩铃发布了一个抖音视频,里面讲述了踩铃和她的大胖媳妇儿居然因为洗衣服的争执而差点离婚?大胖媳妇儿对乱炖的执着是不是你也看不下去了?TCL双子舱Q10了解一下,专治乱炖,给你天津9月23日在全市范围开展核酸检测9月22日,记者从天津市疫情防控指挥部获悉,市疫情防控指挥部发布天津市新型冠状病毒肺炎疫情防控指挥部第34号通告。通告全文如下当前,我市本轮本土疫情新增感染者数量持续减少,社区传播河南开封明日在主城区范围开展全员核酸检测关于开展主城区全员核酸检测的通告(2022年51号)近期我市疫情总体平稳可控,但国内多地疫情频发,为保障人民群众身体健康和生命安全,经市疫情指挥部研究,决定在主城区范围组织开展全员阜南县主城区9月23日增设临时核酸便民采样点大皖新闻讯据阜南发布微信公众号消息9月22日,阜南县新冠肺炎疫情防控指挥部办公室发布关于9月23日在阜南县主城区增设临时核酸便民采样点的公告。根据当前疫情防控形势,为确保常态化核酸2022年书香重庆全民阅读系列推荐活动获奖名单出炉渝中多个最美多名点灯人榜上有名重庆之声9月20日讯近日,2022年书香重庆全民阅读系列推荐活动获奖名单出炉。经层层推荐专家评审和公示,位于渝中的重庆书城问闻书店获评十佳最美书店,重庆红岩革命历史博物馆获评十佳全湖人媒体日詹皇回应一系列问题三巨头合影佩总希望浓眉领导球队北京时间9月27日,湖人正式举办2223赛季媒体日,湖人三巨头合影以及和新帅哈姆一起拍摄定妆照詹姆斯回应提前续约新赛季有望加冕历史得分王等话题威少亮相开怀大笑并且回应是否被需要,未5个堪称神器的国产软件,款款精挑细选,让你的电脑更好用软件推荐(第45期)你的电脑上一定安装了很多软件,哪些是你觉得好用的?今天我就给大家推荐5个堪称神器的国产软件,款款精挑细选,让你的电脑更好用。01IDM(下载神器)网址httpw安徽某某健康产业有限公司无真实业务情况下取得19份虚开专票被查安徽某某健康产业有限公司于2016年6月在没有发生真实业务的情况下,取得安徽某某中药材有限公司开具的已被定性为虚开的19份增值税专用发票,你单位利用对公帐户走资金,在资金到帐后回流