当前位置: 首页 > article >正文

ElasticJob个人总结

一、什么是ElasticJob

ElasticJob是一个轻量的、无中心化的分布式定时任务解决方案。

二、ElasticJob有何特点

1.无中心化

ElasticJob的特点是没有一个固定的主服务器。而是所有服务器都可以通过选举成为主服务器,当主服务器宕机时,重新选举出一个新的主服务器。因此不用担心主服务器宕机后导致其他服务器的业务停止的情况。

2.弹性调度

ElasticJob有任务分片的概念,可以将任务分成多片,然后在分布式环境下运行,每台任务服务器实际只运行分配给该服务器的分片。随着服务器的增加或宕机,ElasticJob 会近乎实时的感知服务器数量的变更,从而重新为分布式的任务服务器分配更加合理的任务分片项,使得任务可以随着资源的增加而提升效率。

3.失效转移

开启失效转移功能后。当作业执行过程中服务器宕机,失效转移允许将该次未完成的任务在另一作业节点上补偿执行。

4.错过任务重执行

ElasticJob 不允许作业在同一时间内叠加执行。 当作业的执行时长超过其运行间隔,错过任务重执行能够保证作业在完成上次的任务后继续执行逾期的作业。

三、入门Demo

如果你已经有一个SpringBoot集成的项目和zookeeper环境,那么你可以非常快速的给你的项目集成Elasticjob

1.环境要求

Java 8及以上版本
Maven 3.5.0及以上版本
ZooKeeper 3.6.0及以上版本

2.添加依赖

给你的项目添加elasticjob-lite-spring-boot-starter依赖

<dependency>
  <groupId>org.apache.shardingsphere.elasticjob</groupId>
  <artifactId>elasticjob-lite-spring-boot-starter</artifactId>
  <version>3.0.0</version>
</dependency>
3.作业开发

然后直接就可以开始你的定时任务开发了!

package org.example.job;

import org.apache.shardingsphere.elasticjob.api.ShardingContext;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.springframework.stereotype.Component;


@Component
public class HelloWorldJob implements SimpleJob {
    @Override
    public void execute(ShardingContext shardingContext) {
        System.out.println("执行定时任务");
    }
}

配置

elasticjob:
  regCenter:
    #zk地址和端口号
    serverLists: xxx.xxx.xxx.xxx:xxxx
    namespace: hello-world-elasticjob
    # 等待重试的间隔时间的初始值   单位:毫秒
    base-sleep-time-milliseconds: 10000
    # 等待重试的间隔时间的最大值
    max-sleep-time-milliseconds: 30000
    # 最大重试次数
    max-retries: 3
    # 会话超时时间 单位: 毫秒
    session-timeout-milliseconds: 600000
    # 连接超时时间 单位: 毫秒
    connection-timeout-milliseconds: 600000
  jobs:
    #任务名称
    HelloWorldJob:
      elasticJobClass: org.example.job.HelloWorldJob
      cron: 0/5 * * * * ?
      #分片数量
      shardingTotalCount: 1

附上官方文档地址:
ElasticJob官方文档


http://www.kler.cn/a/319045.html

相关文章:

  • 传奇996_21——龙岭事件
  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • 虚幻引擎 CEO 谈元宇宙:发展、策略与布局
  • MybatisPlus入门(十)MybatisPlus-逻辑删除和多记录操作
  • Linux 系统管理和监控命令---- auditctl命令
  • 更改Ubuntu22.04锁屏壁纸
  • Python(爬虫)正则表达式
  • python-比较月亮大小/数组下标/人见人爱a+b
  • 音视频入门基础:FLV专题(5)——FFmpeg源码中,判断某文件是否为FLV文件的实现
  • 第300篇文章,第365天
  • 网上超市设计与实现:SpringBoot案例分析
  • 详解机器学习经典模型(原理及应用)——决策树
  • 智能化引领等保测评新时代:AI与大数据的深度融合
  • Doris的Routine Load方式消费Kafka数据进入Doris
  • Linux 一键部署Mysql 5.7.44
  • Spring源码-ConfigurationClassPostProcessor类解析spring相关注解
  • 从事新闻、出版、教育、药品和医疗器械、文化、广播电影电视节目等互联网信息服务小程序备案说明
  • AI 文生图快速入门教程:让 Stable Diffusion 更易于上手
  • vue基础面试题
  • 简单水印通过python去除
  • 数造科技荣获“2024爱分析·数据智能优秀厂商”
  • 传输大咖45 | 跨国传输大文件的高效、安全传输系统
  • 大数据Flink(一百二十一):Flink CDC基本介绍
  • 数据在内存中的存储(上)
  • Spring Boot 学习和使用
  • 大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略