• elastic-job简单入门


    简介

      Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。

      Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。

    功能列表:

    • 分布式调度协调
    • 弹性扩容缩容
    • 失效转移
    • 错过执行作业重触发
    • 作业分片一致性,保证同一分片在分布式环境中仅一个执行实例
    • 自诊断并修复分布式不稳定造成的问题
    • 支持并行调度
    • 支持作业生命周期操作
    • 丰富的作业类型
    • Spring整合以及命名空间提供
    • 运维平台

    入门开发

      

    pom文件
         <dependency>
          <groupId>com.dangdang</groupId>
          <artifactId>elastic-job-lite-core</artifactId>
          <version>2.1.5</version>
        </dependency>
        <!-- 使用springframework自定义命名空间时引入 -->
        <dependency>
          <groupId>com.dangdang</groupId>
          <artifactId>elastic-job-lite-spring</artifactId>
          <version>2.1.5</version>
        </dependency>
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:job="http://www.dangdang.com/schema/ddframe/job"
           xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.dangdang.com/schema/ddframe/job
           http://www.dangdang.com/schema/ddframe/job/job.xsd
           http://www.dangdang.com/schema/ddframe/reg
           http://www.dangdang.com/schema/ddframe/reg/reg.xsd">
        <!--Zookeeper注册中心 -->
        <reg:zookeeper id="regCenter" server-lists="127.0.0.1:2181"
                       namespace="elastic-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />
        <!-- 配置作业-->
        <job:simple id="myElasticJob" class="com.job.MyElasticJob" registry-center-ref="regCenter"
                    cron="0/30 * * * * ?" sharding-total-count="1" overwrite="true"
                    event-trace-rdb-data-source="dataSource"/>
    </beans>
    

     当在<job:simple>中配置了数据源(如上)时,会自动创建两张数据库表分别是JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG

     JOB_EXECUTION_LOG记录每次作业的执行历史。分为两个步骤:

    1. 作业开始执行时向数据库插入数据,除failure_cause和complete_time外的其他字段均不为空。

    2. 作业完成执行时向数据库更新数据,更新is_success, complete_time和failure_cause(如果作业执行失败)。

     JOB_STATUS_TRACE_LOG记录作业状态变更痕迹表。可通过每次作业运行的task_id查询作业状态变化的生命周期和运行轨迹。

    实现SimleJob接口

    public class MyElasticJob implements SimpleJob {
        public void execute(ShardingContext shardingContext) {
            //1.当分片数为1时,在同一个zookepper和jobname情况下,多台机器部署了Elastic job时,
            // 只有拿到shardingContext.getShardingItem()为0的机器得以执行,其他的机器不执行
            //总片数
            int shardingTotalCount = shardingContext.getShardingTotalCount();
            //当前分片项
            int shardingItem = shardingContext.getShardingItem();
            switch (shardingItem){
                case 0:
                    run();
                    break;
                case 1:
                    break;
            }
        }
        private void run(){
            //dosometing
        }
    }
    
  • 相关阅读:
    剑指offer5-用两个栈实现队列
    剑指offer4-重建二叉树
    剑指offer3-从尾到头打印链表
    MATLAB曲线拟合函数
    贪心算法训练(九)——Best Cow Line(字典序最小问题)
    贪心算法训练(八)——智力大冲浪(带期限和罚款的单位时间调度问题)
    贪心算法训练(七)——加工生产调度(流水作业调度问题)
    贪心算法训练(六)——喷水装置(区间覆盖问题)
    贪心算法训练(五)——种树(区间选点问题)
    贪心算法训练(四)——(HDU1050)Moving Tables
  • 原文地址:https://www.cnblogs.com/2nao/p/8241945.html
Copyright © 2020-2023  润新知