当前位置: 首页 > news >正文

安徽网新科技网站建设介绍瓷砖网站建设

安徽网新科技网站建设介绍,瓷砖网站建设,微信用大型网站站做跳板,做网页的常用定时任务框架 JDK 自带的 ScheduledExecutorService 适用于轻量级定时任务#xff0c;基于线程池实现。API 简单#xff0c;适用于小规模任务调度。 Quartz 强大的 Java 任务调度框架#xff0c;支持 Cron 表达式、分布式集群、持久化等。适用于复杂调度场景#xff0…常用定时任务框架 JDK 自带的 ScheduledExecutorService 适用于轻量级定时任务基于线程池实现。API 简单适用于小规模任务调度。 Quartz 强大的 Java 任务调度框架支持 Cron 表达式、分布式集群、持久化等。适用于复杂调度场景如动态任务管理、任务持久化等。 Spring Task Spring 提供的轻量级定时任务方案支持 Scheduled 注解简洁易用。适用于简单的定时任务不支持集群和分布式调度。 XXL-JOB 轻量级分布式任务调度框架支持集群、动态管理任务、任务日志、失败重试等功能。适用于互联网企业的大规模定时任务场景。 Elastic-Job 基于 Zookeeper 的分布式任务调度框架支持分片、失效转移、任务高可用等特性。适用于大规模分布式任务调度如电商、金融等业务场景。 PowerJob 基于 Spring Boot 开发的分布式任务调度框架支持分布式、秒级调度、任务依赖等功能。适用于现代分布式任务管理支持 Web 可视化管理。 大数据相关 Azkaban 由 LinkedIn 开源的批处理任务调度系统适用于大数据任务调度。主要用于 Hadoop 任务的调度支持 DAG 依赖关系管理。 Airflow Apache 旗下的工作流调度系统支持 Python 任务编排DAG 任务依赖管理。适用于数据工程、机器学习等复杂任务调度。 Oozie Hadoop 生态中的工作流调度系统主要用于 Hadoop 任务调度。适用于大数据 ETL 任务管理。 运维 DevOps Kubernetes CronJob 适用于 Kubernetes 集群环境的定时任务支持容器化任务调度。适用于微服务架构下的定时任务。 CrontabLinux 自带 适用于简单的系统级定时任务调度如 Shell 脚本、数据同步等。 选择建议 轻量级Spring Task / ScheduledExecutorService单机复杂调度Quartz分布式调度XXL-JOB / Elastic-Job / PowerJob大数据任务调度Airflow / Azkaban / OozieK8s 云原生Kubernetes CronJob 分布式定时任务框架 如果你的项目被 多个相同实例的 Pod 复制 并部署在 Kubernetes 集群中那么使用普通的 Scheduled 或 ScheduledExecutorService 就会导致 每个 Pod 都会执行同一个定时任务可能会产生 重复任务执行 的问题。为了解决这个问题你可以选择 支持分布式调度 的定时任务框架主要有以下几种推荐方案 1. Elastic-Job推荐 适用场景适用于 微服务架构可基于 Zookeeper 进行任务分片实现分布式调度。特点 分片执行不同 Pod 执行任务的不同部分避免重复执行。任务失效转移某个 Pod 宕机后任务会自动转移给其他 Pod 继续执行。支持高可用基于 Zookeeper 进行任务协调防止重复执行。 适用于 高并发业务如订单对账、数据同步、日志清理等。需要保证每个任务只执行一次或按分片方式执行的场景。 2. XXL-JOB 适用场景适用于 Spring Boot 集群环境提供一个 调度中心 统一管理任务避免重复执行。特点 基于调度中心Admin统一管理定时任务。任务分片可配置多个 Pod 执行不同的任务片段防止重复执行。失败重试任务失败后可自动重试。可视化管理Web 界面配置任务支持动态修改。 适用于 需要 Web 可视化管理任务的场景。希望任务分布式执行并能动态调整任务执行策略。 3. PowerJob 适用场景适用于 现代云原生架构支持 秒级任务调度、分布式任务执行。特点 支持 Standalone、Worker、Server 三种模式。多种执行模式单机、广播、MR、MapReduce 等。动态扩展Worker 增加时自动均衡任务负载。可视化管理类似 XXL-JOB可动态修改任务配置。 适用于 云原生环境Kubernetes 部署任务需要动态扩缩容。需要支持复杂任务依赖的调度场景。 4. Kubernetes CronJob适用于简单定时任务 适用场景适用于 Kubernetes 环境需要 周期性执行的任务如 订单定期清理数据库备份日志归档 特点 K8s 原生支持直接通过 CronJob 配置调度任务。任务隔离每次任务都会创建一个新的 Pod适合一次性任务。无法做任务分片不适用于高并发、复杂任务调度。 适用于 简单的、无需分片的定时任务比如每天凌晨执行数据备份。无需对任务执行状态进行复杂管理的场景。 5. Quartz DB 锁适用于持久化任务调度 适用场景如果你的任务需要存储到数据库并且希望 只有一个实例 触发定时任务。方法 Quartz 任务存储到 数据库JDBC Store。任务执行前 数据库加锁保证任务不会被多个 Pod 并发执行。 适用于 需要保证任务持久化并防止重复执行。不想引入 Zookeeper、调度中心等额外依赖的情况下。 推荐方案 方案适用场景任务去重分布式支持备注Elastic-Job高并发、任务分片、任务转移✅✅ 基于 Zookeeper适用于微服务和任务均衡XXL-JOB大规模分布式任务调度✅✅ 统一调度中心适用于企业级任务管理PowerJob云原生 任务编排✅✅ 支持 MapReduce适用于复杂任务调度K8s CronJob简单定时任务❌❌适用于周期性任务如数据清理Quartz DB 锁持久化任务调度✅❌适用于小规模任务防止重复 最终选择 如果你的 定时任务是分布式环境下的关键任务 ✅ 推荐 Elastic-Job 或 XXL-JOB避免重复执行并支持任务分片。 如果你的 定时任务是云原生环境 ✅ 推荐 PowerJob可以动态扩缩容适配 Kubernetes。 如果你的 定时任务是单一周期性任务 ✅ 推荐 Kubernetes CronJob原生支持简单好用。 如果你的 定时任务需要持久化并防止重复执行 ✅ 推荐 Quartz DB 锁适用于少量任务的环境。 Elastic-Job 示例代码 下面是 Elastic-Job 在分布式集群环境下的完整示例代码基于 Spring Boot Zookeeper实现了 分布式定时任务调度。 功能概述 采用 Spring Boot Elastic-Job-Lite 实现分布式定时任务。任务注册到 Zookeeper保证 多个实例Pod不会重复执行同一任务可实现 任务分片。适用于 Kubernetes、Docker Swarm 及 普通分布式集群环境。 1. 引入依赖 在 pom.xml 中添加 Elastic-Job 相关依赖 dependencies!-- Elastic-Job 核心 --dependencygroupIdorg.apache.shardingsphere.elasticjob/groupIdartifactIdelasticjob-lite-spring-boot-starter/artifactIdversion3.0.2/version/dependency!-- Zookeeper 客户端 --dependencygroupIdorg.apache.curator/groupIdartifactIdcurator-recipes/artifactIdversion5.5.0/version/dependency!-- Spring Boot Web --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency /dependencies2. 配置 Zookeeper 在 application.yml 中配置 Elastic-Job 连接 Zookeeper spring:application:name: elastic-job-demoelasticjob:reg-center:server-lists: zk-host:2181 # 替换为你的 Zookeeper 地址namespace: elastic-job-demo # 在 Zookeeper 创建的命名空间jobs:demoJob:cron: 0/10 * * * * ? # 每 10 秒执行一次sharding-total-count: 3 # 任务分片总数多个实例共同执行任务overwrite: true # 是否覆盖旧任务3. 编写定时任务 新建 分片任务继承 SimpleJob实现 execute() 方法 import org.apache.shardingsphere.elasticjob.api.ShardingContext; import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob; import org.springframework.stereotype.Component;Component public class MyElasticJob implements SimpleJob {Overridepublic void execute(ShardingContext shardingContext) {// 获取当前分片编号int shardingItem shardingContext.getShardingItem();String jobName shardingContext.getJobName();// 模拟不同分片处理不同数据switch (shardingItem) {case 0:System.out.println(【分片 0】执行任务 jobName);break;case 1:System.out.println(【分片 1】执行任务 jobName);break;case 2:System.out.println(【分片 2】执行任务 jobName);break;default:System.out.println(【未知分片】执行任务 jobName);}} }4. 注册任务 创建 ElasticJobConfig将任务注册到 ElasticJob import org.apache.shardingsphere.elasticjob.api.JobConfiguration; import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap; import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.OneOffJobBootstrap; import org.apache.shardingsphere.elasticjob.lite.api.listener.ElasticJobListener; import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class ElasticJobConfig {private final ZookeeperRegistryCenter regCenter;private final MyElasticJob myElasticJob;public ElasticJobConfig(ZookeeperRegistryCenter regCenter, MyElasticJob myElasticJob) {this.regCenter regCenter;this.myElasticJob myElasticJob;}Beanpublic ScheduleJobBootstrap initElasticJob() {JobConfiguration jobConfig JobConfiguration.newBuilder(myElasticJob, 3).cron(0/10 * * * * ?) // 每 10 秒执行.overwrite(true) // 覆盖旧任务.build();return new ScheduleJobBootstrap(regCenter, myElasticJob, jobConfig);} }5. 配置 Zookeeper 注册中心 创建 ZookeeperConfig 以连接 Zookeeper import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration; import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class ZookeeperConfig {Bean(initMethod init)public ZookeeperRegistryCenter regCenter() {return new ZookeeperRegistryCenter(new ZookeeperConfiguration(zk-host:2181, elastic-job-demo));} }6. 运行多个 Pod 进行集群测试 方式 1本地多个实例 分别启动多个 Spring Boot 实例 java -jar target/elastic-job-demo.jar --server.port8081 java -jar target/elastic-job-demo.jar --server.port8082 java -jar target/elastic-job-demo.jar --server.port8083查看日志 任务分片 0 在 8081 执行任务分片 1 在 8082 执行任务分片 2 在 8083 执行 方式 2Kubernetes 部署 编写 deployment.yaml apiVersion: apps/v1 kind: Deployment metadata:name: elastic-job-demo spec:replicas: 3 # 启动 3 个实例selector:matchLabels:app: elastic-job-demotemplate:metadata:labels:app: elastic-job-demospec:containers:- name: elastic-jobimage: your-docker-repo/elastic-job-demo:latestports:- containerPort: 8080env:- name: ZK_HOSTvalue: your-zk-cluster:2181部署到 Kubernetes kubectl apply -f deployment.yaml7. 任务执行结果 在多个 Pod 中查看日志 kubectl logs -f elastic-job-demo-xxxx示例输出 【分片 0】执行任务myElasticJob 【分片 1】执行任务myElasticJob 【分片 2】执行任务myElasticJob特点 多个 Pod 共同执行任务不会重复执行相同的任务任务会按分片编号进行分配Pod 宕机时任务会自动迁移到其他 Pod 总结 方案说明Elastic-Job Zookeeper适用于 分布式定时任务确保任务 不重复执行任务分片多个 Pod 共同执行任务各自处理不同分片Kubernetes 兼容适用于微服务架构支持动态扩缩容 适用场景 分布式数据清理订单对账定期同步数据库数据日志归档 XXL-JOB 下面是 XXL-JOB 在 分布式集群场景下 执行定时任务的完整示例代码基于 Spring Boot MySQL 实现。 功能概述 使用 XXL-JOB 框架调度分布式任务保证 多个实例 不会重复执行同一任务。配置 JobHandler任务在集群中分片执行。使用 MySQL 存储任务执行信息支持 分布式集群部署避免任务重复执行。 1. 引入依赖 在 pom.xml 中添加 XXL-JOB 和 Spring Boot 相关依赖 dependencies!-- Spring Boot --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- XXL-JOB --dependencygroupIdcom.xxl.job/groupIdartifactIdxxl-job-core/artifactIdversion2.3.0/version/dependency!-- Spring Boot Starter for XXL-JOB --dependencygroupIdcom.xxl.job/groupIdartifactIdxxl-job-spring-boot-starter/artifactIdversion2.3.0/version/dependency!-- MySQL Driver --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.25/version/dependency /dependencies2. 配置 XXL-JOB 在 application.yml 中配置 XXL-JOB 的相关信息 xxl:job:admin:addresses: http://admin-server:8080/xxl-job-admin # XXL-JOB Admin 的地址executor:appname: xxl-job-demo # 执行器应用名称ip: 0.0.0.0 # 允许所有IP访问port: 9999 # 执行器端口logpath: /data/applogs/xxl-job/ # 执行日志路径logretentiondays: 30 # 执行日志保留天数3. 配置 XXL-JOB Admin XXL-JOB Admin 需要先进行安装和启动可以在官网 XXL-JOB GitHub 找到安装步骤。 4. 编写定时任务JobHandler 新建一个 JobHandler继承 XXLJob 并重写 execute() 方法 import com.xxl.job.core.handler.annotation.JobHandler; import com.xxl.job.core.handler.IJobHandler; import org.springframework.stereotype.Component;JobHandler(value demoJobHandler) Component public class DemoJobHandler extends IJobHandler {Overridepublic ReturnTString execute(String param) throws Exception {// 业务逻辑比如进行数据清理或定时任务等System.out.println(执行定时任务: param);return ReturnT.SUCCESS;} }在这里demoJobHandler 是 JobHandler 的名字需要在 XXL-JOB Admin 配置。 5. 配置 XXL-JOB 执行器 创建 XxlJobConfig 配置类完成 XXL-JOB 执行器的配置 import com.xxl.job.core.executor.XxlJobExecutor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class XxlJobConfig {Beanpublic XxlJobExecutor xxlJobExecutor() {XxlJobExecutor xxlJobExecutor new XxlJobExecutor();xxlJobExecutor.setAdminAddresses(http://admin-server:8080/xxl-job-admin);xxlJobExecutor.setAppname(xxl-job-demo);xxlJobExecutor.setIp(0.0.0.0);xxlJobExecutor.setPort(9999);xxlJobExecutor.setLogPath(/data/applogs/xxl-job/);xxlJobExecutor.setLogRetentionDays(30);return xxlJobExecutor;} }6. 配置 XXL-JOB Admin 创建任务 登录 XXL-JOB Admin 后进行以下配置 创建调度器在 XXL-JOB Admin 中点击 Job Group创建一个新的 调度器。添加任务在 Job 页面中点击 添加任务配置任务名、执行器类型选择 demoJobHandler、分片信息等。 7. 配置任务分片执行 在 XXL-JOB Admin 中配置分片策略例如 分片总数3表示任务将分配给 3 个不同的实例执行任务执行器的分片项XXL-JOB 会自动将任务按分片项分配给不同的执行器实例。 例如如果有 3 个执行器实例则会将任务的 3 个分片0、1、2分别分配给 3 个实例执行确保不同的实例执行不同的任务。 8. 启动项目并执行任务 启动 Spring Boot 项目确保 XXL-JOB Admin 已经部署并且任务已经配置。 启动 Spring Boot 项目mvn spring-boot:run任务自动执行项目启动后XXL-JOB 执行器会自动向 XXL-JOB Admin 注册并开始执行定时任务。查看任务执行日志可以在 XXL-JOB Admin 中查看任务的执行日志。 9. 扩展功能动态任务调度 如果需要动态调整任务执行策略如调整任务的分片数等可以通过 XXL-JOB Admin 动态调整任务配置。 例如在 XXL-JOB Admin 中 修改任务的 Cron表达式例如设置成每 30 秒执行一次修改 分片数如果集群规模扩大可以修改任务的 分片总数。 10. 总结 方案说明XXL-JOB适用于 分布式任务调度支持 多实例任务分片执行任务分片多个实例共同执行任务避免重复执行任务确保高可用性MySQL 存储任务执行信息存储在数据库支持持久化、任务调度管理Web UI 管理支持通过 XXL-JOB Admin Web 界面进行任务管理、调度 适用场景 分布式任务调度定时任务执行数据同步日志清理 使用 XXL-JOB 可以在分布式集群中实现高效、可靠的定时任务调度并且通过 MySQL 存储任务执行状态确保任务不丢失执行状态可追踪。
http://www.sczhlp.com/news/161179/

相关文章:

  • 江苏住房与城乡建设厅网站html5网站正在建设中
  • 网站的欢迎页怎么做杭州网络安全公司
  • 深圳建设很行住房公积金网站做网站一般注册哪几类商标
  • 查看网站是哪家做的怎么看宿州网站建设公司
  • 网站推广步骤做社区网站用什么程序
  • 什么网站做的好看个人网站简单
  • 门户网站开发的意义h5网站制作一般多少钱
  • 公司网站制作策划网站建设服务费下什么科目
  • 网站开发和编程有什么区别网络营销推广有哪些方法
  • 网站seo谷歌wordpress json 分类
  • 做网站必备软件无极县在线招聘信息
  • 跨境电商网站如何做推广放单网站建设
  • 占个位置
  • 占个位置~
  • AI元人文系列文章:价值决策芯片——为机器安上一颗“透明的心”
  • 无极网站建设网络营销策划方案步骤
  • 怎么做免流网站高端外贸网站建设
  • 网站内容怎么修改成都健康码小程序
  • 应用大全网站价格低文案
  • 移动端网站的重要性企业网站商城
  • 海口会计报名网站商城网站制作公司地址
  • 网站建设倒计时代码襄樊做网站
  • 免费游戏网站模板广州网站建设公司怎么样
  • 怎么把淘宝店放到自己做的网站去怎么做一个摄影平台网
  • 网站建设相关基础实验总结网站开发我能做什么
  • centos7怎么做网站服务器一个下载网站
  • 质量好网站建设公司seo网站推广教程
  • 云服务器上放多个网站中国百强城市榜单公布
  • 网站建设规划设计公司企业信息平台登录
  • 辽阳建设银行网站技术先进的网站建设公