分布式定时任务调度框架实践

Posted vivo互联网技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式定时任务调度框架实践相关的知识,希望对你有一定的参考价值。

OfflineTaskExecutorFacade offlineTaskExecutorFacade; ReturnT<String> Exception XxlJobLogger.log( offlineTaskExecutorFacade.executeOfflineTask(); (Exception e) XxlJobLogger.log(, e); FAIL; XxlJobLogger.log( SUCCESS; ReturnT<String> Exception ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo(); XxlJobLogger.log( (i = (i == shardingVO.getIndex()) XxlJobLogger.log( XxlJobLogger.log( SUCCESS; = = OfflineTaskExecutorFacade offlineTaskExecutorFacade;

SpringApplication.run(XxlJobExecutorApplication.class, args); ZookeeperRegistryCenter regCenter(String serverList, String namespace) new ZookeeperRegistryCenter(new ZookeeperConfiguration(serverList, namespace)); DataSourceProperties url; username; password; DataSource getDataSource() DruidDataSource dataSource = DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); dataSource; DataSource dataSource; JobEventConfiguration JobEventRdbConfiguration(dataSource); ElasticSimpleJob value() cron() jobName() int shardingTotalCount() shardingItemParameters() jobParameter() ElasticJobAutoConfiguration serverList; ApplicationContext applicationContext; DataSource dataSource; initElasticJob() ZookeeperRegistryCenter regCenter = ZookeeperRegistryCenter(ZookeeperConfiguration(serverList, regCenter.init(); Map< (Map.Entry< SimpleJob simpleJob = entry.getValue(); ElasticSimpleJob elasticSimpleJobAnnotation = simpleJob.getClass().getAnnotation(ElasticSimpleJob.class); cron = StringUtils.defaultIfBlank(elasticSimpleJobAnnotation.cron(), elasticSimpleJobAnnotation.value()); SimpleJobConfiguration simpleJobConfiguration = SimpleJobConfiguration(JobCoreConfiguration.newBuilder(simpleJob.getClass().getName(), cron, elasticSimpleJobAnnotation.shardingTotalCount()).shardingItemParameters(elasticSimpleJobAnnotation.shardingItemParameters()).build(), simpleJob.getClass().getCanonicalName()); LiteJobConfiguration liteJobConfiguration = LiteJobConfiguration.newBuilder(simpleJobConfiguration).overwrite( JobEventRdbConfiguration jobEventRdbConfiguration = JobEventRdbConfiguration(dataSource); SpringJobScheduler jobScheduler = SpringJobScheduler(simpleJob, regCenter, liteJobConfiguration, jobEventRdbConfiguration); jobScheduler.init(); cron = jobName = shardingTotalCount = jobParameter = shardingItemParameters = Logger logger = LoggerFactory.getLogger(OfflineTaskJob.class); OfflineTaskExecutorFacade offlineTaskExecutorFacade; offlineTaskExecutorFacade.executeOfflineTask(); logger.info(String.format(+ + , Thread.currentThread().getId(), shardingContext.getShardingTotalCount(), shardingContext.getShardingItem(), shardingContext.getShardingParameter(), shardingContext.getJobName(), shardingContext.getJobParameter() ));

(滑动可查看)



2.6 其余开源框架


(1)Saturn:Saturn是唯品会开源的一个分布式任务调度平台,在Elastic Job的基础上进行了改造。

(2)SIA-TASK:是宜信开源的分布式任务调度平台。


三、优劣势对比和业务场景适配思考



业务思考:

  1. 丰富任务监控数据和告警策略。

  2. 接入统一登录和权限控制。

  3. 进一步简化业务接入步骤。


四、结语


对于并发场景不是特别高的系统来说,xxl-job配置部署简单易用,不需要引入多余的组件,同时提供了可视化的控制台,使用起来非常友好,是一个比较好的选择。希望直接利用开源分布式框架能力的系统,建议根据自身的情况来进行合适的选型。


附:参考文献

  • quartz插件——实现任务之间的串行调度


  • END

    vivo互联网技术


    vivo移动互联网是基于vivo 智能手机所建立的完整移动互联网生态圈,围绕vivo大数据运营,打造包括应用、游戏、资讯、品牌、电商、内容、金融、搜索的全方位服务生态,满足海量用户的多样化需求。


    点一下你会更好看耶

    分布式定时任务调度框架 - Quartz学习及实战记录笔记

    目录

    1.Quartz入门
    2.Quartz中的常用组件之间的关系
    3.Trigger触发器的介绍
    4.Quartz配置资源介绍
    5.Quartz监听器
    6.SpringBoot整合Quartz实现动态的创建或删除定时任务并将定时调度任务持久化到MySQL以及Quartz集群配置
    7.分布式定时任务调度框架学习与实战记录完整篇

    以上是关于分布式定时任务调度框架实践的主要内容,如果未能解决你的问题,请参考以下文章

    分布式定时任务调度框架 - Quartz学习及实战记录笔记

    分布式定时任务调度框架 - Quartz学习及实战记录笔记

    分布式定时任务调度框架Quartz学习与实战记录完整篇

    分布式定时任务调度框架Quartz学习与实战记录完整篇

    分布式定时任务调度框架Quartz学习与实战记录完整篇

    分布式定时任务调度框架Quartz学习与实战记录完整篇