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

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


文章目录

    • 1. 分布式任务调度平台
      • 1. 基本概念
        • 1.1 任务调度
        • 1.2 分布式计算
      • 2. 分布式任务调度平台的功能
      • 3. 分布式任务调度平台的应用场景
      • 4. 简而言之
    • 2. 什么是 xxl-job
      • 2.1 XXL-JOB的架构
    • 3. xxl-job 的简单使用
      • 1. 源码拉取
      • 2. 启动 db
      • 3. 初始化调度中心数据库
      • 4. 修改调度中心的数据库配置以及 logback 的日志地址
      • 5. 成功启动调度中心
      • 6. 打开调度中心的 web 页面
      • 7. 启动示例执行器代码
      • 8. 随便找一个任务注册
      • 9. 查看日志信息,发现执行结果失败了
      • 10. 回去看一眼源码,发现是


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支持自定义任务处理逻辑,得益于这一点,它能用于各种场景,例如常见的数据同步、数据清洗等。
image.png

3. xxl-job 的简单使用

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

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

1. 源码拉取

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

image.png

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

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

2. 启动 db

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

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

复制源码文件中的 db 文件到数据库中执行初始化。
image.png
我这里就直接到 http://127.0.0.1:3307phpmyadmin 进行数据库操作了。
执行前后
image.png

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

image.png
image.png

5. 成功启动调度中心

image.png

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

浏览器打开 http://127.0.0.1:8080/xxl-job-admin/, 输入初始账号 admin 密码 123456
image.png
登录成功
image.png

7. 启动示例执行器代码

image.png
可以看到启动了两个服务分别在 9998的无框架服务以及 9999spring 项目。回到调度中心的 web 页面,你会发现两个执行器已经自动注册到了调度中心。
image.png
在数据库中的表现为
image.png
此时,假如我们去修改其中一个调度器的名称,重新启动会怎样呢?
image.png
可以看到只剩 9999 的服务
image.png
这时候我们需要手动把新的执行器添加上。
image.png
刷新可以看到新的执行器自动注册
image.png

8. 随便找一个任务注册

image.png
image.png
启动任务
image.png

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

image.png

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

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/506337.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVPR2023 | 提升图像去噪网络的泛化性,港科大上海AILab提出 MaskedDenoising,已开源!

作者 | 顾津锦 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/o4D4mNM3jL6sYuhUC6VgoQ 当前深度去噪网络存在泛化能力差的情况,例如,当训练集噪声类型和测试集噪声类型不一致时,模型的性能会大打折扣。作者认为其原因在于网络倾向于过度…

数据结构与算法学习【算法思想之二分法基础】

文章目录 数据结构与算法学习【算法思想之二分查找基础】本文学习目标或巩固的知识点 最基础的二分查找🟢通过题目可知题解结果验证 数据结构与算法学习【算法思想之二分查找基础】 本文学习目标或巩固的知识点 学习二分法类题目 巩固基础的二分法 提前说明&#…

git根据文件改动将文件自动添加到缓冲区

你需要修改以下脚本中的 use_cca: false 部分 #!/bin/bash# 获取所有已修改但未暂存的文件 files$(git diff --name-only)for file in $files; do# 检查文件中是否存在"use_cca: false"if grep -q "use_cca: false" "$file"; thenecho "Ad…

matplotlib从起点出发(14)_Tutorial_imshow_origin_extent

0 总述 imshow()允许你将图像(将进行颜色映射——基于norm和cmap——的2D数组或将按原样使用的3D RGB(A)的数组)渲染到数据空间中的矩形区域。最终渲染中图像的方向由原点和范围关键字参数(以及生成的AxesImage实例上的属性)和Ax…

复合机器人是一种集成了移动机器人

复合机器人是一种集成了移动机器人、协作机器人和机器视觉等多项功能的新型机器人。它的开发目的是为了解决工厂物流中最后一米的问题,提供智能搬运解决方案。复合机器人不仅集成了自主移动机器人(AMR)、机械臂等工作单元,还使用了…

Springboot+vue的高校教师教研信息填报系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的高校教师教研信息填报系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller&am…

TypeScript08:在TS中使用模块化

前言:tsconfig.json中的配置 一、前端领域中的模块化标准 前端领域中的模块化标准有: ES6、commonjs、amd、umd、system、esnext 二、 TS中如何书写模块化语句 TS 中,导入和导出模块,统一使用 ES6 的模块化标准。 myModule.ts &a…

k8s-kubeapps图形化管理 21

结合harbor仓库 由于kubeapps不读取hosts解析,因此需要添加本地仓库域名解析(dns解析) 更改context为全局模式 添加repo仓库 复制ca证书 添加成功 图形化部署 更新部署应用版本 再次进行部署 上传nginx 每隔十分钟会自动进行刷新 在本地仓库…

云主机和传统主机到底有什么区别呢?

随着信息技术的快速发展,企业对IT基础设施的要求越来越高,许多问题等待解决:政府传统部署扩容升级麻烦、公司服务器维护周期长、建设和维护成本低等。运营成本高; 安全稳定性差、数据易丢失等问题亟待解决。 云主机的出现很大程度…

绘制一下包络线

clear clc close all % 生成衰减信号 % 生成衰减曲线带有随机信号 fs 50; % 采样率 t 0:1/fs:100; % 时间向量,总时长为5秒 frequency0.5; signal exp(-0.05* t).*sin(2*pi*frequency*t); % 衰减曲线带有随机信号 % 计算包络线 [upper_envelope, lower_…

6.5 共享数据

本节介绍Android的四大组件之一ContentProvider的基本概念和常见用法:首先说明如何使用内容提供器封装内部数据的外部访问接口,然后阐述如何使用内容解析器通过外部接口操作内部数据,最后叙述如何利用内容解析器读写联系人信息,以…

LVS+Keepalived高可用群集

一、Keepalived简介 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务&…