.Net Core开源的分布式任务调度系统ScheduleMaster

任务/作业调度
编辑评级:
分享:

项目基本信息

开发协议 Apache
操作系统 Windows  Linux  OS X 
开发语言 C#
项目所有者 hey-hoho
收录时间 2020-04-25

项目介绍

schedulemaster 
ScheduleMaster是一个开源的分布式任务调度系统,它基于.Net Core 3.1平台构建,支持跨平台多节点部署运行。 Build Status

主要特性
 简易的Web UI操作;
 任务动态管理:创建、启动、停止、暂停、恢复、删除等;
 高可用支持,跨平台多节点部署。
 数据安全性,不会出现多实例并发调度。
 支持自定义参数设置;
 支持设置监护人,运行异常时邮件告警;
 支持设置任务依赖,自动触发,共享任务结果;
 插件式开发,任务运行环境隔离;
 全链路日志系统,运行轨迹轻松掌控;
 用户访问控制;
 提供开放REST API,业务系统可以无缝集成;
 调度报表统计;
 任务分组管理;
 计划表拆分实现复用;
 指定节点运行;
 支持http任务配置;
 支持延时任务;
 支持异常策略配置(失败重试、超时控制等);
 接入redis缓存;
 用户权限更加精细化;
 报表统计完善;
技术栈
Asp.Net Core3.1、EntityFramework Core3.0、Mysql5.7、Quartz.Net、BeyondAdmin、Jquery...

系统架构图

如何使用
使用前请准备好所需环境:Visual Studio 2019、.Net Core3.1 SDK、Mysql 5.7、Centos(可选)、Docker(可选)。

下载源码到本地,然后用VS2019打开解决方案并编译通过。

打开项目Hos.ScheduleMaster.Web根目录下的appsettings.json文件,先修改Mysql数据库连接字符串以保证数据库正常访问,再找到NodeSetting节点,修改IP字段为master将要部署的ip地址(master端口为30000不用修改),在项目上右击选择发布...,发布到本地文件夹。

打开项目Hos.ScheduleMaster.QuartzHost根目录下的appsettings.json文件,同样先修改Mysql连接字符串,再找到NodeSetting节点,设置worker的名称IdentityName,修改IP字段为将要部署的ip地址,Port字段为要监听的地址(推荐为30001),在项目上右击选择发布...,发布到本地文件夹。如果要新增worker,按同样方式配置IdentityName、IP、Port即可,worker在启动后会把自己的信息注入到数据库中,在master中可以看到。

其他发布方式亦可。下面以运行2个worker节点为例:

在Windows中运行
找到master的发布目录,执行命令dotnet Hos.ScheduleMaster.Web.dll启动程序,首次启动会自动迁移生成数据库结构并初始化种子数据,打开浏览器输入ip和端口访问即可(初始用户名admin,密码111111)。
找到worker的发布目录,执行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30001启动程序,打开浏览器输入ip和端口会看到一个欢迎页面,表示worker已启动成功。
修改worker下的appsettings.json文件为worker2的配置(如果发布前已经修改可跳过),执行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30002启动程序.
登录到master中,可以看到节点管理菜单下各节点的运行状态。
在Linux(Centos)中运行
运行前请确保机器已经安装好.Net Core3.1运行时环境。

把发布文件复制到Centos中,操作步骤同Windows。

在Docker中运行
在master的发布目录中执行docker build -t ms_master .命令生成master镜像,再执行docker run -d -p 30000:30000 --name="mymaster" ms_master运行容器。
在worker的发布目录中执行docker build -t ms_worker .命令生成worker镜像,再执行docker run --env identity=docker-worker1 --env port=30001 -d -p 30001:80 --name="myworker1" ms_worker运行容器启动worker1。
继续执行docker run --env identity=docker-worker2 --env port=30002 -d -p 30002:80 --name="myworker2" ms_worker运行容器启动worker2。
执行docker ps查看各容器运行状态。
效果图
 

 


 


同类项目推荐

相似项目推荐

相关教程