分布式集群架构场景化解决方案学习:分布式调度框架Elastic-Job

本文介绍了Elastic-Job,一个由当当网开源的分布式调度解决方案,基于Quartz实现。主要功能包括分布式环境中任务的协调执行、故障转移、任务分片等。文章详细讲解了Elastic-Job-Lite的使用,包括安装Zookeeper、引入jar包、创建定时任务实例以及程序开发。此外,还阐述了Elastic-Job-Lite的轻量级去中心化特点,任务分片策略以及弹性扩容机制。
摘要由CSDN通过智能技术生成

1. Elastic-Job介绍

Elastic-Job是当当网开源的一个分布式调度解决方案,基于Quartz二次开发的,由两个相互独立的子项目ElasticJob-LiteElastic-Job-Cloud组成。Elastic-Job-Lite,它定位为轻量级无中心化解决方案,使用Jar包的形式提供分布式任务的协调服务,而Elastic-Job-Cloud子项目需要结合 Mesos 以及Docker在云环境下使用。

Elastic-Job的github地址∶https://github.com/elasticjob

1.1 主要功能

  • 分布式调度协调
    在分布式环境中,任务能够按指定的调度策略执行,并且能够避免同一任务多实例重复执行
  • 丰富的调度策略 基于成熟的定时任务作业框架Quartz cron表达式执行定时任务
  • 弹性扩容缩容 当集群中增加某一个实例,它应当也能够被选举并执行任务;当集群减少一个实例时,它所执行的任务能被转移到别的实例来执行。
  • 失效转移 某实例在任务执行失败后,会被转移到其他实例执行
  • 错过执行作业重触发 若因某种原因导致作业错过执行,自动记录错过执行的作业,并在上次作业完成后自动触发。
  • 支持并行调度 支持任务分片,任务分片是指将一个任务分为多个小任务项在多个实例同时执行。
  • 作业分片一致性 当任务被分片后,保证同一分片在分布式环境中仅一个执行实例。

2. Elastic-Job-Lite应用

Elastic-Job依赖于Zookeeper进行分布式协调,所以需要安装Zookeeper软件(3.4.6版本以上)

2.1 安装Zookeeper

  • 在linux平台解压下载的zookeeper-3.6.2-bin.tar.gz
  • 进入conf目录,cp zoo_sample.cfg zoo.cfg
  • 进入bin目录,启动zk服务
#启动
./zkServer.sh start

#停止
./zkServer.sh stop

#查看状态
./zkServer.sh status
  • Zookeeper的树形节点结构图
    在这里插入图片描述

2.2 引入相关 jar 包

<dependency>
	<groupId>com.dangdang</groupId>
	<artifactId>elastic-job-lite-core</artifactId>
	<version>2.1.5</version>
</dependency>

2.3 定时任务实例

  • 需求:每隔两秒钟执行一次定时任务(resume表中未归档的数据归档到resume_bak表中,每次归档1条记录)
    • resume_bak 和 resume表结构完全一样
    • resume表中数据归档之后不删除,只将state置为"已归档"
  • 表结构
-- ----------------------------
-- Table structure for resume
-- ----------------------------
DROP TABLE IF EXISTS `resume`;
CREATE TABLE `resume` (
	`id` bigint(20) NOT NULL AUTO_INCREMENT,
	`name` varchar(255) DEFAULT NULL,
	`sex` varchar(255) DEFAULT NULL,
	`phone` varchar(255) DEFAULT NULL,
	`address` varchar(255) DEFAULT NULL,
	`education` varchar(255) DEFAULT NULL,
	`state` varchar(255) DEFAULT NULL,
	PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;

2.4 程序开发

  • 定时任务类
package com.study;

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.study.utils.JdbcUtil;

import java.util.List
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值