Elastic JOB 目录结构


一、Elastic-job整体的目录划分

zk

||---------elastic-job-cloud(xx_cloud.properties zk_namespacep配置)

              ||------- config

                           ||------------/job(任务配置)

                           ||------------/app(运行APP配置)

               ||---------/state(作业状态)

                           ||--------ready(待运行)

                           ||----------/disable/app(禁用应用队列节点路径.)

                           ||----------/failover(待失效转移任务队列节点路径..)

                           ||----------/running(执行中的作业节点)



二、Elastic-job app节点内容

     APP节点内容,主要为APP name, cpu ,内存等情况
private final String appName;
private final String appURL;
private final String bootstrapScript;
private double cpuCount = 1;
private double memoryMB = 128;
private boolean appCacheEnable = true;
private int eventTraceSamplingCount;

三、Elastic-job 配置更新监听
    使用CloudJobConfigurationListener完成配置节点的更新动作,主要原理是使用curator中的TreeCache并使用一个线程监听zk目录变化

   getCache().getListenable().addListener(this, Executors.newSingleThreadExecutor());

四、定时作业的处理方式
  在ES中使用标准的Quatz表达式,解析CONFIG/JOB下的作业(已经在加载在内存中),并触发写入到READY目录下去。(在作业存储结构上,TransientProducerRepository中定义了ConcurrentHashMap<JobKey, List<String>> cronTasks ,其中cron采用了cron表达式,为key作业为LIST的方式,减少了表达式的数量

  private JobDetail buildJobDetail(final JobKey jobKey) {
        JobDetail result =
      JobBuilder.newJob(ProducerJob.class).withIdentity(jobKey).build();
        result.getJobDataMap().put("repository", repository);
        result.getJobDataMap().put("readyService", readyService);
        return result;
    }
    ProducerJob.class 类中

  @Setter
    public static final class ProducerJob implements Job {
       
        private TransientProducerRepository repository;
       
        private ReadyService readyService;
       
        @Override
        public void execute(final JobExecutionContext context) throws
     JobExecutionException {
            List<String> jobNames = repository.get(context.getJobDetail().getKey());
            for (String each : jobNames) {
                readyService.addTransient(each);
            }
        }
    }

猜你喜欢

转载自sunday1207.iteye.com/blog/2375528