SpringBoot教程(二十二) | SpringBoot实现分布式定时任务之elastic-job

SpringBoot教程(二十二) | SpringBoot实现分布式定时任务之elastic-job

  • 简介
  • 适用场景
  • 前置条件:需要ZooKeeper配合
  • 1、引入相关依赖
  • 2、application.yml中配置注册中心和作业调度
  • 巨坑(配置修改无效)
  • 3、job实例
  • 4、ElasticJob-UI监控平台 (相当于管理端页面)

参考文章:
【1】SpringBoot整合分布式任务调度Elastic-Job
【2】ElasticJob3.0整合SpringBoot,ElasticJob-Lite【ElasticJob入门篇】

简介

  • elastic-job是当当网基于quartz 二次开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片。
  • Elastic-Job是一个分布式调度的解决方案,由当当网开源,它由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
  • 使用Elastic-Job可以快速实现分布式任务调度。
  • ElasticJob 已于 2020 年 5 月 28 日成为 Apache ShardingSphere 的子项目。
  • 官方文档:https://shardingsphere.apache.org/elasticjob/index_zh.html

适用场景

Elastic-Job是一个分布式任务调度框架,它基于Quartz和Zookeeper实现,提供了简单易用的任务调度和分布式任务处理能力。

前置条件:需要ZooKeeper配合

zk在elastic-job的作用

Elastic-Job依赖ZooKeeper完成对执行任务信息的存储(如任务名称、任务参与实例、任务执行策略等);
Elastic-Job依赖ZooKeeper实现选举机制,在任务执行实例数量变化时(如在快速上手中的启动新实例或停止实例),会触发选举机制来决定让哪个实例去执行该任务。

我这边主要讲SpringBoot,所以肯定会采用场景启动器starter的

什么是场景启动器?
也就是spring-boot-starter- 开头的依赖,
以下是一些常见的Spring Boot场景启动器示例:
(1)spring-boot-starter-data-jpa:包含Spring Data JPA和Hibernate的依赖,用于简化数据库访问和JPA(Java Persistence API)的使用。
(2)spring-boot-starter-data-mongodb:包含Spring Data MongoDB的依赖,用于简化MongoDB数据库的访问。
(3)spring-boot-starter-security:包含Spring Security的依赖,用于添加安全功能,如用户认证和授权。
(4)… … … …

使用Spring Boot的场景启动器确实可以让您避免手动添加所需的依赖,因为它已经为您预先定义并包含了这些依赖。这样,您就可以更专注于业务逻辑的实现,而不是花费大量时间在依赖管理和配置上了。

1、引入相关依赖

我本地的SpringBoot为2.6.4版本,zk版本为3.7版本
此处的版本elasticjob就使用了3.0.1 ,我之前尝试换了3.0.2 发现项目启动报错了(具体原因暂未发现)

<dependency>
    <groupId>org.apache.shardingsphere.elasticjobgroupId>
    <artifactId>elasticjob-lite-spring-boot-starterartifactId>
    <version>3.0.1version>
dependency>

2、application.yml中配置注册中心和作业调度

server:
  port: 9999

#elasticjob配置
elasticjob:
  # 注册中心配置
  reg-center:
    # 连接 ZooKeeper 服务器的列表, 包括 IP 地址和端口号,多个地址用逗号分隔
    server-lists: 127.0.0.1:2188
    # ZooKeeper 的命名空间
    namespace: elastic-job

你可能感兴趣的:(#,SpringBoot学习篇,spring,boot,分布式,后端)