PowerJob/README.md

3.3 KiB
Raw Blame History

简介

产品介绍

OhMyScheduler是一个分布式调度平台和分布式计算框架

  • 支持CRON、固定频率、固定延迟和API四种定时策略
  • 支持单机、广播、MapReduce三种执行模式
  • 支持任意的水平扩展,性能强劲无上限
  • 仅依赖数据库,部署简单,上手容易,开发高效,仅需几行代码即可获得整个集群的分布式计算能力。
  • 支持SpringBean、普通Java类内置/外置、Shell、Python等处理器

部署

环境要求

  • 运行环境JDK8+
  • 编译环境Maven3+
  • 数据库Spring Data JPA支持的关系型数据库理论上都可以MySQL/Oracle...

项目部署

  1. 部署数据库由于调度Server数据持久化层基于Spring Data Jpa实现开发者仅需完成数据库的创建即运行SQLCREATE database if NOT EXISTS oms default character set utf8mb4 collate utf8mb4_unicode_ci;
  2. 部署调度服务器oh-my-scheduler-server修改配置文件application.properties按需修改之后maven打包部署运行一条龙。
  3. 部署前端页面可选server多实例部署时需要自行使用源码打包部署即可。
  4. 被调度任务集成oh-my-scheduler-worker依赖,并完成处理器的开发,详细教程见开发文档

开发日志

已完成

  • 定时调度功能支持CRON表达式、固定时间间隔、固定频率和API四种方式。
  • 任务执行功能支持单机、广播和MapReduce三种执行方式。
  • 执行处理器支持SpringBean、普通Java对象、Shell脚本、Python脚本的执行
  • 高可用与水平扩展:调度服务器可以部署任意数量的节点,不存在调度的性能瓶颈。
  • 不怎么美观但可以用的前端界面

待开发

  • 工作流任务编排当前版本勉强可以用MapReduce代替不过工作流挺酷的等框架稳定后进行开发。
  • 应用级别资源管理和任务优先级没有机器资源时进入排队队列。不过我觉得SchedulerX的方案不太行SchedulerX无抢占一旦低优先级任务开始运行那么只能等他执行完成才能开始高优先级任务这明显不合理。可是考虑抢占的话又要多考虑很多东西...先放在TODO列表吧。

参考

Alibaba SchedulerX 2.0

  • Akka 框架不得不说akka-remote简化了相当大一部分的网络通讯代码。
  • 执行器架构设计这篇文章反而不太认同感觉我个人的设计更符合Yarn的“架构”。
  • MapReduce模型想法很Cool大数据处理框架都是处理器向数据移动但对于传统Java应用来说数据向处理器移动也未尝不可这样还能使框架的实现变得简单很多。
  • 广播执行运行清理日志脚本什么的也太实用了8