| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> XXL-JOB 分布式任务调度 详解 -> 正文阅读 |
|
[Java知识库]XXL-JOB 分布式任务调度 详解 |
1、为什么要有分布式任务调度? 要想知道为什么会有分布式任务调度,就需要先了解任务调度这个概念,任务调度也可以称为定时任务,简单来说:任务调度(定时任务)就是在某一时刻部署的服务自动执行对应的任务(操作)。 但是对于分布式微服务的部署也同样的会存在一系列的问题:
当然既然存在相对的问题也会有对应的解决方案:
2、调度中心搭建 XXL-JOB源码下载地址:https://github.com/xuxueli/xxl-job 源码结构如下(对于不同版本而言会存在一些出入):
在进行使用的时候我们需要在本地先部署web管理后台,先下载源码,在doc下的db目录下,首先需要创建相对应的数据库跟表。首先启动xxl-job-admin调度中心,我们只需要将这个springboot项目的配置文件当中关于数据库的配置进行修改,修改完成之后直接启动项目。项目启动之后就可以通过配置的默认端口+项目名称进行访问项目了:http://localhost:8088/xxl-job-admin/ 使用默认登录账号 “admin/123456”进行登录 3、SpringBoot集成 在源码当中其实也有一个springboot集成的案例:/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot 而当我们自己搭建springboot项目进行集成时,第一步还是导入xxl-job的核心包:
之后添加相对应的配置,这个可以从前面说的源码的案例当中复制过来,根据本地机器进行相对于的修改。这里只展示xxljob相关配置。
并且还需要加入一个config配置类,这个可以直接从案例当中复制过来。最后就是编写定时任务了,使用@XxlJob注解用来标识该任务的名称,并且返回的是一个包装类ReturnT,并且可以在这里进行接收调用任务传递过来的参数。
到这里定时任务也就编写完成了,之后就是对定时任务的相关配置了,首先添加一个执行器,这里的appname对应的是配置文件当中的appname,对应的机器地址可以使用自动注册,也可以使用手动注册,这里127.0.0.1表示本机地址,端口也是在配置文件当中进行配置的。 4、一致性HASH 在xxljob客户端配置当中有一个路由配置,这里面就提供了一系列的分布式调用任务执行策略。其余的都比较好理解,这里就主要介绍一下这个一致性HASH。这里的一致性HASH主要是用来解决分布式存储结构下动态增减节点带来的问题的解决方案。 首先我们需要知道传统的HASH,传统的HASH主要是对分布式部署的多台机器进行编号排序,获取机器的一个HASH值,通过HASH值对指定数进行取余,将得到的余数作为这个机器的编号。 而这样也存在一定的缺陷:当某一台机器宕机的时候,这时的服务指令就无法分发到指定的机器,这时需要重新对机器的HASH值进行计算编号,之前的编号全部失效,重新计算获取到新的缓存,如果机器分布很多这样的话就很容易会导致缓存雪崩。简单来说:就是不方便来进行动态的增减节点。 一致性HASH对于传统HASH的改变就是,获取HASH值之后对2^32进行取余,获取到所有的节点将其首尾相连构建成一个圆环。之后再对加进来的机器HASH进行取余数,将其固定到圆环上的某一个点。而后续所发生的请求(比如获取业务id)会根据对应的业务id取余数再进行顺时针寻找最近的一个节点机器作为执行该命令的机器。 解决问题:主要解决的是当某一个机器宕机时,只有当前机器所占节点与前一个节点之间的数据需要进行迁移,而其余数据可以不进行处理,解决了一定程度上缓存雪崩的问题。 但是这样的话也会存在一个问题:就是机器节点分布不均的问题,这里一致性HASH引入了一个新的解决方案——虚拟节点,也就是当节点过少时会复制已有的节点作为一个镜像节点,这样做可以使数据分布的更加均匀。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:41:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |