[Java 探索者之路] 一个大厂都在用的分布式任务调度平台

简介: [Java 探索者之路] 一个大厂都在用的分布式任务调度平台

分布式任务调度平台是一种能够在分布式计算环境中调度和管理任务的系统,在此环境下,各个任务可以在独立的节点上运行。它有助于提升资源利用率,增强系统扩展性以及提高系统对错误的容忍度。

1. 分布式任务调度平台

1. 基本概念

1.1 任务调度

任务调度,是指在多任务的环境下,合理地分配系统资源,调度各个任务在什么时候,由哪一个处理器处理,以达到满足用户需求、提高系统资源利用率、提高系统吞吐量的目的。

1.2 分布式计算

分布式计算是指多个计算机系统之间通过网络连接,共享系统资源来实现高性能计算的技术。这种计算技术可以应对大数据量、高并发量、高I/O的场景。

2. 分布式任务调度平台的功能

分布式任务调度平台主要用于管理和调度任务,其主要功能包括:

  • 任务调度:按照预设的规则(如:时间点、时间间隔等)触发任务的执行。
  • 负载均衡:根据系统的负载情况,自动调整任务在各节点间的分配,均衡各节点的负载。
  • 容错处理:当某个节点出现故障时,能自动将该节点上的任务转移到其他节点上执行。
  • 任务监控:能够实时监控任务的运行状况,如运行时间、运行结果等。

3. 分布式任务调度平台的应用场景

以下是一些常见的应用场景:

  • 定时任务:在特定时间执行某项任务,例如每天晚上12点备份数据库。
  • 周期性任务:周期性地执行某项任务,例如每隔一小时统计网站的访问量。
  • 流量控制:在系统流量大量增长时,分布式任务调度平台可以按照预定的规则,调度更多的资源来处理任务,以应对流量峰值。

总的来说,分布式任务调度平台是大型分布式系统不可或缺的一部分,是分布式环境中任务管理的关键组件。

4. 简而言之

分布式调度平台,就是有个老大决定一个定时任务在多台机器中的哪一台机器执行

2. 什么是 xxl-job

XXL-JOB是一个全功能、高扩展性的开源分布式任务调度框架,也是一个优秀的定时任务调度平台,给开发者带来便捷的定时任务管理和控制能力。它的核心目标是开发迅速、学习简单、轻量级、易扩展。


2.1 XXL-JOB的架构

XXL-JOB的系统架构设计清晰明了,可以粗略的分为三层:

  • 调度中心:调度中心是XXL-JOB的核心,负责触发调度操作,同时提供操作界面。
  • 执行器:执行器是任务运行的载体,负责接收调度中心的触发信号并执行相应的任务。
  • 调度数据库:用于记录调度信息,如任务信息、调度日志等。

值得一提的是,XXL-JOB支持自定义任务处理逻辑,得益于这一点,它能用于各种场景,例如常见的数据同步、数据清洗等。

3. xxl-job 的简单使用

进入(xxl-job 的官网) ,如果想了解下的可以了解下,不想了解的就直接开始吧。

因为是开源项目,所以我接下来也是直接拉取的源码进行实验。如果是线上环境建议使用容器进行集群部署。

1. 源码拉取

  1. 打开 github 官网,选择 realease 版本,因为 master 可能存在不稳定代码,但是实验嘛,其实也无所谓。https://github.com/xuxueli/xxl-job/
  2. 获取到下载链接进行下载


  1. 拉取到的项目结构大概是以下这样,其中 docker目录是我 docker-compose的数据库相关文件,方便测试。

以下是我的 docker-compose相关文件信息

2. 启动 db

进入到指定目录 docker 目录, 一键启动目录

3. 初始化调度中心数据库

复制源码文件中的 db 文件到数据库中执行初始化。


我这里就直接到 http://127.0.0.1:3307phpmyadmin 进行数据库操作了。

执行前后

4. 修改调度中心的数据库配置以及 logback 的日志地址


5. 成功启动调度中心

6. 打开调度中心的 web 页面

浏览器打开 http://127.0.0.1:8080/xxl-job-admin/, 输入初始账号 admin 密码 123456

登录成功

7. 启动示例执行器代码

可以看到启动了两个服务分别在 9998的无框架服务以及 9999spring 项目。回到调度中心的 web 页面,你会发现两个执行器已经自动注册到了调度中心。

在数据库中的表现为

此时,假如我们去修改其中一个调度器的名称,重新启动会怎样呢?

可以看到只剩 9999 的服务


这时候我们需要手动把新的执行器添加上。

刷新可以看到新的执行器自动注册

8. 随便找一个任务注册

启动任务

9. 查看日志信息,发现执行结果失败了

10. 回去看一眼源码,发现是

相关文章
|
1月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
SQL 监控 数据可视化
完全开源!国内首个完全开源JAVA企业级低代码平台
JeeLowCode 是一款专为企业打造的 Java 企业级低代码开发平台,通过五大核心引擎(SQL、功能、模板、图表、切面)和四大服务体系(开发、设计、图表、模版),简化开发流程,降低技术门槛,提高研发效率。平台支持多端适配、国际化、事件绑定与动态交互等功能,广泛适用于 OA、ERP、IoT 等多种管理信息系统,帮助企业加速数字化转型。
|
1月前
|
消息中间件 监控 数据可视化
Apache Airflow 开源最顶级的分布式工作流平台
Apache Airflow 是一个用于创作、调度和监控工作流的平台,通过将工作流定义为代码,实现更好的可维护性和协作性。Airflow 使用有向无环图(DAG)定义任务,支持动态生成、扩展和优雅的管道设计。其丰富的命令行工具和用户界面使得任务管理和监控更加便捷。适用于静态和缓慢变化的工作流,常用于数据处理。
Apache Airflow 开源最顶级的分布式工作流平台
|
28天前
|
SQL 安全 Java
JavaSecLab 一款综合Java漏洞平台
JavaSecLab是一款综合型Java漏洞学习平台,涵盖多种漏洞场景,提供漏洞代码、修复示例、安全编码规范及友好UI。适用于安全服务、甲方安全培训、安全研究等领域,助于理解漏洞原理与修复方法。支持跨站脚本、SQL注入等多种漏洞类型……
|
1月前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
1月前
|
人工智能 监控 数据可视化
Java智慧工地信息管理平台源码 智慧工地信息化解决方案SaaS源码 支持二次开发
智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三大体系为基础应用,实现全面高效的工程管理需求,满足工地多角色、多视角的有效监管,实现工程建设管理的降本增效,为监管平台提供数据支撑。
43 3
|
22天前
|
人工智能 移动开发 安全
家政上门系统用户端、阿姨端源码,java家政管理平台源码
家政上门系统基于互联网技术,整合大数据分析、AI算法和现代通信技术,提供便捷高效的家政服务。涵盖保洁、月嫂、烹饪等多元化服务,支持多终端访问,具备智能匹配、在线支付、订单管理等功能,确保服务透明、安全,适用于家庭生活的各种需求场景,推动家政市场规范化发展。
|
1月前
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
99 1
|
2月前
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
75 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁