Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringCloud与elastic-job集成(一)

SpringCloud与elastic-job集成(一)

原创
作者头像
3号攻城狮
发布于 2018-06-10 10:16:37
发布于 2018-06-10 10:16:37
6.6K0
举报

背景

在项目初期,基于quartz我们做了一个原始的job调度服务,用以执行我们的定时任务,但是随着业务的扩充,对性能及稳定性有了更高的要求.

就目前而言,除了优化代码,调整单机硬件设备外,已经没有其他方式了,对定时任务代改造势在必行.

elastic-job

elastic-job相关资料可以从如下博文中获取,总结的非常好,就不在重复赘述,本文仅仅解决如何与SpringCloud集成的问题.

代码语言:txt
AI代码解释
复制
官网:http://elasticjob.io/docs/elastic-job-lite/00-overview
参考资料:https://blog.csdn.net/lovelong8808/article/category/7670721
项目开源地址:https://github.com/elasticjob

elastic-job-spring-boot-starter

将elastic-job以组件的形式引入,在该过程中参考了:

代码语言:txt
AI代码解释
复制
项目开源地址:https://github.com/yinjihuan/elastic-job-spring-boot-starter

将源码克隆下来后,按照readme文件,配置zookeeper及其他信息:

image.png
image.png
image.png
image.png

与SpringCloud集成

基于elastic-job-spring-boot-starter及我们自身的实际情况,我重写了该starter,添加了我们自己的处理方式,具体处理会在下一篇的文章中与大家分享.

在集成过程中需要注意的是,插件自身的:curator-client,curator-framework,curator-recipes与SpringCloud组件中的curator-client,curator-framework,curator-recipes有版本冲突.

排查问题过程很痛苦.最终在开源中国中得到了解答:

代码语言:txt
AI代码解释
复制
https://www.oschina.net/question/3711138_2268227?sort=time
代码语言:txt
AI代码解释
复制
<properties>
   <elastic-job.version>2.1.5</elastic-job.version>
   <curator.version>2.10.0</curator.version>
</properties>

<dependencies>
     <dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-core</artifactId>
            <version>${elastic-job.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>curator-client</artifactId>
                    <groupId>org.apache.curator</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>curator-framework</artifactId>
                    <groupId>org.apache.curator</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>curator-recipes</artifactId>
                    <groupId>org.apache.curator</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${curator.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>${curator.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${curator.version}</version>
        </dependency>
</dependencies>

elastic-job-lite-console

这是个elastic-job的管理台控制工具.

image.png
image.png

具体安装部署可参考:

代码语言:txt
AI代码解释
复制
https://blog.csdn.net/u013274055/article/details/77767506?locationNum=5&fps=1

elastic-job-lite-lifecycle

该插件配合elastic-job-lite-console使用,可以通过API操控JOB运行状态

插件引入

代码语言:txt
AI代码解释
复制
<dependency>
            <groupId>com.dangdang</groupId>
            <artifactId>elastic-job-lite-lifecycle</artifactId>
            <version>2.1.5</version>
</dependency>

核心代码

代码语言:txt
AI代码解释
复制
JobOperateAPI jobAPIService= JobAPIFactory.createJobOperateAPI("zookeeper地址", "任务命名空间", Optional.fromNullable(null));
jobAPIService.trigger(Optional.of("定时任务类的全类名"), Optional.<String>absent())
代码语言:txt
AI代码解释
复制
public interface JobOperateAPI {
    void trigger(Optional<String> var1, Optional<String> var2);

    void disable(Optional<String> var1, Optional<String> var2);

    void enable(Optional<String> var1, Optional<String> var2);

    void shutdown(Optional<String> var1, Optional<String> var2);

    void remove(Optional<String> var1, Optional<String> var2);
}

结语

本篇仅做一个简单介绍,以及一个思路梳理,在下一篇文章中,就我们当前项目会给出一个实际的解决方案.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
集成elastic-job分布式调度定时任务
定时任务这一组件在工作过程中经常使用到,在单机节点上可以直接选择使用Spring自带的定时任务组件hubble-task,而这种定时任务一旦确定固化了定时触发策略,也无法动态开启关闭,所以后来有了Quartz。
余生大大
2022/11/02
7410
集成elastic-job分布式调度定时任务
分布式调度Elastic-Job攻略
昨天虽然试用了一下唯品会的“土星”,但是我实在没想明白他的Job该怎么用Spring来托管,所以没有使用。今天来说一下当当的Elastic-Job.
算法之名
2019/08/20
8930
分布式作业 Elastic-Job 快速上手指南,从理论到实战一文搞定!
Elastic-Job支持 JAVA API 和 Spring 配置两种方式配置任务,这里我们使用 JAVA API 的形式来创建一个简单的任务入门,现在都是 Spring Boot 时代了,所以不建议使用 Spring 配置文件的形式。 Elastic-Job 需要依赖 Zookeeper 中间件,用于注册和协调作业分布式行为的组件,目前仅支持 Zookeeper。我们已经创建了 Zookeeper 集群! 环境要求 1、Java 请使用 JDK 1.7 及其以上版本。 2、Zookeeper 请使用
Java技术栈
2018/06/04
1.8K0
springboot2.x 整合 Elastic-Job 踩坑
原因: Elastic-Job项目基于开源产品Quartz和Zookeeper及其客户端Curator进行二次开发,如果与新版的Spring Boot一起使用,会出现Curator的版本冲突。
java干货
2021/02/19
1.3K0
dubbo-springboot入门级demo
1. dubbo-springboot入门级demo 1.1. 前言 最后一个做运维的朋友和我提起,他们公司想做个dubbo灰度发布的功能,而这个功能落到了他头上。在我的印象里,dubbo应该可以通过扩展代码来实现特定用户路由到特定服务器,来实现这方面的灰度功能,但完全由运维去做,可能就需要脚本了吧,dubbo是否支持脚本我还不清楚,趁着这个进一步熟悉dubbo的过程,我来系统的学一下dubbo的基本功能,由于现在基本都用springboot来开发了,所以直接从springboot入门级dubbo应用开始
老梁
2019/09/10
3780
引入分布式Id遇到的坑
common-base中的pom文件引入id-generator和id-generator-core的maven依赖
chenchenchen
2023/01/30
5070
elastic-job入门demo
以及在网上找了相关demo,基本上都是复制了官网的简单教程,没有一个明确的demo.
3号攻城狮
2018/05/29
2.1K6
elastic-job入门demo
Spring-boot整合elastic-job分布式调度解决方案
Spring-boot整合elastic-job分布式调度解决方案 文档地址:http://elasticjob.io/docs/elastic-job-lite/00-overview/intro/
林老师带你学编程
2019/05/25
3.6K0
分布式定时任务Elastic-Job框架在SpringBoot工程中的应用实践(一)
摘要:如何构建具备作业分片和弹性扩缩容的定时任务系统是每个大型业务系统在设计时需要考虑的重要问题? 对于构建一般的业务系统来说,使用Quartz或者Spring Task即可基本满足我们的单体服用应用需要。然而随着线上业务量的不断发展,这两种定时任务已经日渐无法满足我们的需求。一般,使用这两种定时任务框架都会遇到如下的两个痛点问题: (1)如果业务工程采用集群化的部署,可能会多次重复执行定时任务而导致系统的业务逻辑错误,并产生系统故障。 (2)Quartz的集群方案具备HA功能,可以实现定时任务的分发,但是通过增加机器节点数量的方式并不能提高每次定时任务的执行效率,无法实现任务的弹性分片。 一线互联网大厂都有他们自己为其业务定制化研发的分布式定时任务系统,业务研发工程师可以通过在其Web Console的界面上进行简单的任务配置即可使得大型业务系统实现定时任务的调度、分发、分片、监控和扩缩容等功能。那么,业界是否有开源的组件框架同样具备这些功能呢?答案是肯定的!本文将向大家介绍一款开源的分布式定时任务调度框架—Elastic-Job的功能和原理,同时通过一个简单的案例阐述如何在Spring Boot工程完成Elastic-Job的集成。
用户2991389
2018/09/05
2.9K1
分布式定时任务Elastic-Job框架在SpringBoot工程中的应用实践(一)
分布式任务调度框架Elastic-Job的简单实用
Elastic-Job <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-core</artifactId> <version>2.1.5</version> </dependency> public class MessagePushJob implements SimpleJob { @Over
用户1215919
2021/12/28
3880
一文搞懂Elastic-Job(内附源码解析)
Elastic-Job是当当基于Zookepper,Quartz开发并且开源的Java分布式定时任务,解决Quartz不支持分布式的弊端。它由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。
胖虎
2019/06/26
4.1K2
一文搞懂Elastic-Job(内附源码解析)
springboot整合mybatis配置_springboot 跨域
2.写好配置文件(一定要写上dubbo.scan.base-packages该配置会扫描你写的服务并注册到zookeeper)
全栈程序员站长
2022/08/03
3230
springboot整合mybatis配置_springboot 跨域
spring dubbo集成(nacos dubbo)
1 服务层生产者开发(hs-ldm-server-service) 1.1添加dubbo依赖包
全栈程序员站长
2022/08/01
7490
spring dubbo集成(nacos dubbo)
分布式定时任务 -- elastic-job
在我们的项目当中,使用定时任务是避免不了的,我们在部署定时任务时,通常只部署一台机器。部署多台机器时,同一个任务会执行多次。比如短信提醒,每天定时的给用户下发短信,如果部署了多台,同一个用户将发送多条。只部署一台机器,可用性又无法保证。今天向大家介绍一款开源产品,分布式定时任务解决方案---- elastic-job。
小忽悠
2019/02/25
9100
Elastic Job 入门详解
Elastic job是当当网架构师张亮,曹昊和江树建基于Zookepper、Quartz开发并开源的一个Java分布式定时任务,解决了Quartz不支持分布式的弊端。Elastic job主要的功能有支持弹性扩容,通过Zookepper集中管理和监控job,支持失效转移等,这些都是Quartz等其他定时任务无法比拟的。
全栈程序员站长
2022/07/05
3480
Curator实现基于zookeeper leader选举
Curator Framework是一个针对zookeeper做的搞层次的API,极大地简化了zookeeper的使用。它基于zookeeper构建了很多功能,处理复杂的链接管理,重试操作。下面是它的一些特点:
Spark学习技巧
2020/04/24
9320
基于zookeeper leader选举方式一
一,基本介绍 Curator Framework是一个针对zookeeper做的搞层次的API,极大地简化了zookeeper的使用。它基于zookeeper构建了很多功能,处理复杂的链接管理,重试操作。下面是它的一些特点: 1,自动连接管理。 A),存在的潜在错误情况,需要ZooKeeper客户端创建连接和/或重试操作。Curator 自动和透明(主要)处理这些情况。 B),监视NodeDataChanged事件,并根据需要调用updateServerList()。 C),Watches 会被Curato
Spark学习技巧
2018/01/30
1.2K0
基于zookeeper leader选举方式一
SpringBoot集成Apache Dubbo
2018年2月份,Dubbo进入Apache孵化,2019年5月,Apache Dubbo框架正式从孵化器中毕业,代表着Apache Dubbo正式成为Apache的顶级项目
星哥玩云
2022/09/15
5710
大数据ZooKeeper(五):ZooKeeper Java API操作
这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端框架 Curator ,解决了很多Zookeeper客户端非常底层的细节开发工作 。
Lansonli
2021/10/11
9140
大数据ZooKeeper(五):ZooKeeper Java API操作
doubbo+zookeeper服务注册发现
UserServiceImpl.java 将provider-server下 ITicketService 拷贝至consumer-server下(interface的目录一定要对应)
鱼找水需要时间
2023/02/16
2550
doubbo+zookeeper服务注册发现
相关推荐
集成elastic-job分布式调度定时任务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档