zoukankan      html  css  js  c++  java
  • 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
        }
    }
    
  • 相关阅读:
    猴子得到一堆桃,当天吃了一半之后,又多吃了1个。以后每天,猴子都吃了剩余的一半桃子之>后,又多吃一个。在第10天,只剩下1个桃子。输出这堆桃最初有多少个。
    打印9 9乘法表
    尝试实现一个管理系统, 名字和电话号分别用两个列表存储 =======通讯录管理系统======= 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出
    求结果
    背景流动
    1
    zuoye
    假期 作业1220
    python1217作业
    pythonzuoye20181212
  • 原文地址:https://www.cnblogs.com/2nao/p/8241945.html
Copyright © 2011-2022 走看看