分布式工作流任务调度系统EasyScheduler自定义任务插件开发

简介: 分布式工作流任务调度系统EasyScheduler自定义任务插件开发

任务插件开发

提醒:目前任务插件开发暂不支持热部署

基于SHELL的任务

基于YARN的计算(参见MapReduceTask)

  • 需要在 cn.escheduler.server.worker.task 下的 TaskManager 类中创建自定义任务(也需在TaskType注册对应的任务类型)
  • 需要继承cn.escheduler.server.worker.task 下的 AbstractYarnTask
  • 构造方法调度 AbstractYarnTask 构造方法
  • 继承 AbstractParameters 自定义任务参数实体
  • 重写 AbstractTaskinit 方法中解析自定义任务参数
  • 重写 buildCommand 封装command

基于非YARN的计算(参见ShellTask)

  • 需要在 cn.escheduler.server.worker.task 下的 TaskManager 中创建自定义任务
  • 需要继承cn.escheduler.server.worker.task 下的 AbstractTask
  • 构造方法中实例化 ShellCommandExecutor

    public ShellTask(TaskProps props, Logger logger) {
      super(props, logger);
    
      this.taskDir = props.getTaskDir();
    
      this.processTask = new ShellCommandExecutor(this::logHandle,
          props.getTaskDir(), props.getTaskAppId(),
          props.getTenantCode(), props.getEnvFile(), props.getTaskStartTime(),
          props.getTaskTimeout(), logger);
      this.processDao = DaoFactory.getDaoInstance(ProcessDao.class);
    }

传入自定义任务的 TaskProps和自定义Logger,TaskProps 封装了任务的信息,Logger分装了自定义日志信息

  • 继承 AbstractParameters 自定义任务参数实体
  • 重写 AbstractTaskinit 方法中解析自定义任务参数实体
  • 重写 handle 方法,调用 ShellCommandExecutorrun 方法,第一个参数传入自己的command,第二个参数传入 ProcessDao,设置相应的 exitStatusCode

基于非SHELL的任务(参见SqlTask)

  • 需要在 cn.escheduler.server.worker.task 下的 TaskManager 中创建自定义任务
  • 需要继承cn.escheduler.server.worker.task 下的 AbstractTask
  • 继承 AbstractParameters 自定义任务参数实体
  • 构造方法或者重写 AbstractTaskinit 方法中,解析自定义任务参数实体
  • 重写 handle 方法实现业务逻辑并设置相应的exitStatusCode
目录
相关文章
|
1天前
|
传感器 存储 SQL
LabVIEW使用ModbusTCP协议构建分布式测量系统
LabVIEW使用ModbusTCP协议构建分布式测量系统
11 4
|
1天前
|
存储 安全 区块链
一文说清楚IPFS分布式存储系统
一文说清楚IPFS分布式存储系统
9 1
|
3天前
|
分布式计算 负载均衡 Java
构建高可用性Java应用:介绍分布式系统设计与开发
构建高可用性Java应用:介绍分布式系统设计与开发
8 0
|
12天前
|
Windows
Windows系统下安装分布式事务组件Seata
Windows系统下安装分布式事务组件Seata
|
12天前
|
缓存 NoSQL Java
【亮剑】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护,如何使用注解来实现 Redis 分布式锁的功能?
【4月更文挑战第30天】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护。基于 Redis 的分布式锁利用 SETNX 或 SET 命令实现,并考虑自动过期、可重入及原子性以确保可靠性。在 Java Spring Boot 中,可通过 `@EnableCaching`、`@Cacheable` 和 `@CacheEvict` 注解轻松实现 Redis 分布式锁功能。
|
16天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链的分布式存储系统
传统数据库技术在面对日益增长的数据量和复杂的数据管理需求时显现出局限性。本文介绍了一种新一代数据库技术:融合区块链的分布式存储系统。通过将区块链技术与传统数据库相结合,实现了数据的分布式存储、安全性和透明度,以及去中心化的特性。这一技术的应用将极大地推动数据库系统的发展,为数据管理带来全新的解决方案。
|
16天前
|
存储 安全 数据管理
新一代数据库技术:融合区块链的分布式数据存储系统
传统数据库系统面临着数据安全性、可信度和去中心化等挑战,而区块链技术的兴起为解决这些问题提供了新的思路。本文介绍了一种新一代数据库技术,将区块链技术与传统的分布式数据存储系统相融合,实现了更高水平的数据安全性和可信度,以及去中心化的优势。通过结合区块链的不可篡改性和分布式存储系统的高性能,这一新型数据库技术将在未来的数据管理领域发挥重要作用。
|
18天前
|
存储 缓存 运维
Web系统如何实现数据分布式存储?
【4月更文挑战第24天】Web系统如何实现数据分布式存储?
20 2
|
15天前
|
NoSQL Java 关系型数据库
【Redis系列笔记】分布式锁
分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路
112 2
|
9天前
|
监控 NoSQL 算法
探秘Redis分布式锁:实战与注意事项
本文介绍了Redis分区容错中的分布式锁概念,包括利用Watch实现乐观锁和使用setnx防止库存超卖。乐观锁通过Watch命令监控键值变化,在事务中执行修改,若键值被改变则事务失败。Java代码示例展示了具体实现。setnx命令用于库存操作,确保无超卖,通过设置锁并检查库存来更新。文章还讨论了分布式锁存在的问题,如客户端阻塞、时钟漂移和单点故障,并提出了RedLock算法来提高可靠性。Redisson作为生产环境的分布式锁实现,提供了可重入锁、读写锁等高级功能。最后,文章对比了Redis、Zookeeper和etcd的分布式锁特性。
111 16
探秘Redis分布式锁:实战与注意事项