莆田有哪些网站建设公司,wordpress内置播放器,南通的电商网站建设,wordpress网站首页简介
针对分布式任务调度的需求#xff0c;市场上出现了很多的产品#xff1a; 1)TBSchedule#xff1a;淘宝推出的一款非常优秀的高性能分布式调度框架#xff0c;目前被应用于阿里#xff0c;京东#xff0c;支付宝#xff0c;国美等很多互联网企业的流程调度系统中。…简介
针对分布式任务调度的需求市场上出现了很多的产品 1)TBSchedule淘宝推出的一款非常优秀的高性能分布式调度框架目前被应用于阿里京东支付宝国美等很多互联网企业的流程调度系统中。但是已经多年未更新文档缺失严重缺少维护。 2)xxl-job大众点评的分布式任务调度平台是一个轻量级分布式任务调度平台其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线开箱即用。 3) Elastic-job当当网借鉴TBSchedule并基于quartz二次开发的弹性分布式任务调度系统功能丰富强大采用zookeeper实现分布式协调具有任务高可用以及分片功能。 4)Saturn唯品会开源的一个分布式任务调度平台基于Elastic-job,可以全域统一监控具有任务高可用以及分片功能。 xxl-job是一个分布式任务调度平台其核心设计目标是开发迅速学习简单轻最级易扩展。现已开放源代码并接入多家公司线上产品线开箱即用。 源码地址 文档地址
特性
简单灵活 提供web页面对任务进行管理管理系统支持用户管理权限控制 支持容器部署 支持通过通用http提供跨平台任务调度丰富的任务管理功能 支持页面对任务crud操作 支持在页面编写脚本任务命令行任务java代码任务并执行 支持任务级联编排父任务执行结束后触发子任务执行 支持设置指定任务执行节点路由策略包括轮询随机广播故障转移忙碌转移等 支持cron方式任务依赖调度中心api接口方式触发任务执行高性能 任务调度流程全异步化设计实现如异步调度异步运行异步回调等有效对密集调度进行流行削峰高可用 任务调度中心任务执行节点均集群部署支持动态扩展故障转移 支持任务配置路由故障转移策略执行器节点不可用是自动转移到其他节点执行 支持任务超时控制失败重试配置 支持任务处理阻塞策路调度当任务执行节点忙碌时来不及执行任务的处理策略包括串行抛弃覆盖策略易于监控运维 支持设置任务失败邮件告警预留接口支持短信钉钉告警 支持实时查看任务执行运行数据统计图表任务进度监控数据任务完整执行日志
快速入门 调度中心负责管理调度信息按照调度配置发出调度请求自身不承担业务代码。任务执行器负责接收调度请求并执行任务逻辑任务专注于任务的处理。调度中心会发出调度请求任务执行副接收到请求之后会去执行任务任务则专注于任务业务的处理。
环境搭建
调度中心环境要求
Maven 3jdk1.8MySQL 5.7
源码仓库地址
GitHub - xuxueli/xxl-job: A distributed task scheduling framework.分布式任务调度平台XXL-JOB许雪里/xxl-job
初始化调度数据库
执行这个sql文件 建完后的表 表解释
xxl_job_lock任务调度锁表xxl_job_group执行器信息表维护任务执行器信息xxl_job_info调度扩展信息表用于保存xxl-job调度任务的扩展信息如任务分组任务名器地址执行器执行入参和报警邮件等等xxl_job_log调度日志表用于保存xxl-job任务调度的历史信息如调度结果调度机器和执行器等等xxl-job_logglue任务GLUE日志用于保存GLUE更新历史用于支持GLUE的版本回溯功能xxl_job_registry执行器注册表维护在线的执行器和调度中心机器地址信息xxl_job_user系统用户表 调度中心支持集群部署集群情况下各节点务必连接同一个mysdl实例 如果mysql做主从调度中心集群节点务必强制走主库 编译源码
解压源码按照Maven格式导入IDE使用Maven编译即可。 修改配置为自己的admin项目application.properties 启动admin项目如果出现报错则解决对应的报错即可。 登录xxl-job 的admin控制台 默认账密 账号admin 密码123456
进入首页 也可以使用package去打包为jar包然后通过java -jar xxl-job-admin.jar的方式去启动
创建执行器和任务
执行器中可以有具体的任务去执行。 执行器负责接收调度中心的调度并去执行里面的任务。
创建执行器 自动注册调度中心会通过底层注册表去自动发现机器的地址。 创建执行器后要在当前执行下指定具体的任务。
新增任务 路由策略 阻塞处理策略调度过于密集执行器没资源去处理当下的请求咋整 JobHandler用来关联后台的java代码
SpringBoot集成
可以直接使用这个项目也可以自己单独创建一个SpringBoot项目。 先安装到本地后续要依赖这个包 新建一个SpringBoot项目xxl-job-core的版本可以看示例代码中的core版本 application的配置文件可以直接参考 执行器名称需要修改为之前我们自己创建的执行器 port在集群模式下需要注意不要重复。 核心配置 可以参考xxl-job的代码示例
package com.itheima.xxl.job.config;import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** xxl-job config** author xuxueli 2017-04-28*/
Configuration
public class XxlJobConfig {private Logger logger LoggerFactory.getLogger(XxlJobConfig.class);Value(${xxl.job.admin.addresses})private String adminAddresses;Value(${xxl.job.accessToken})private String accessToken;Value(${xxl.job.executor.appname})private String appName;Value(${xxl.job.executor.address})private String address;Value(${xxl.job.executor.ip})private String ip;Value(${xxl.job.executor.port})private int port;Value(${xxl.job.executor.logpath})private String logPath;Value(${xxl.job.executor.logretentiondays})private int logRetentionDays;Beanpublic XxlJobSpringExecutor xxlJobExecutor() {logger.info( xxl-job config init.);XxlJobSpringExecutor xxlJobSpringExecutor new XxlJobSpringExecutor();xxlJobSpringExecutor.setAdminAddresses(adminAddresses);xxlJobSpringExecutor.setAppName(appName);xxlJobSpringExecutor.setAddress(address);xxlJobSpringExecutor.setIp(ip);xxlJobSpringExecutor.setPort(port);xxlJobSpringExecutor.setAccessToken(accessToken);xxlJobSpringExecutor.setLogPath(logPath);xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);return xxlJobSpringExecutor;}/*** 针对多网卡、容器内部署等情况可借助 spring-cloud-commons 提供的 InetUtils 组件灵活定制注册IP** 1、引入依赖* dependency* groupIdorg.springframework.cloud/groupId* artifactIdspring-cloud-commons/artifactId* version${version}/version* /dependency** 2、配置文件或者容器启动变量* spring.cloud.inetutils.preferred-networks: xxx.xxx.xxx.** 3、获取IP* String ip_ inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();*/}JobHandler中的名称写到XxlJob中注解的value位置否则找不到这个任务。
application配置文件
# web port
server.port8088
# no web
#spring.main.web-environmentfalse# log config
logging.configclasspath:logback.xml### xxl-job admin address list, such as http://address or http://address01,http://address02
xxl.job.admin.addresseshttp://127.0.0.1:8888/xxl-job-admin### xxl-job, access token
xxl.job.accessToken### xxl-job executor appname
xxl.job.executor.appname task-demo
### xxl-job executor registry-address: default use address to registry , otherwise use ip:port if address is null
xxl.job.executor.address
### xxl-job executor server-info
xxl.job.executor.ip
xxl.job.executor.port 9999
### xxl-job executor log-path
xxl.job.executor.logpath/data/applogs/xxl-job/jobhandler
### xxl-job executor log-retention-days
xxl.job.executor.logretentiondays30