{"id":19990828,"url":"https://github.com/hey-hoho/ScheduleMasterCore","last_synced_at":"2025-05-04T10:30:51.930Z","repository":{"id":37692295,"uuid":"218220866","full_name":"hey-hoho/ScheduleMasterCore","owner":"hey-hoho","description":"This is a distributed task management system base on .Net Core platform .","archived":false,"fork":false,"pushed_at":"2024-01-08T02:29:50.000Z","size":8134,"stargazers_count":864,"open_issues_count":42,"forks_count":251,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-04-17T01:38:30.629Z","etag":null,"topics":["cross-platform","distributed","netcore","scheduler","web"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hey-hoho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-29T06:42:02.000Z","updated_at":"2025-04-17T00:30:28.000Z","dependencies_parsed_at":"2024-05-31T02:46:53.773Z","dependency_job_id":null,"html_url":"https://github.com/hey-hoho/ScheduleMasterCore","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hey-hoho%2FScheduleMasterCore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hey-hoho%2FScheduleMasterCore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hey-hoho%2FScheduleMasterCore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hey-hoho%2FScheduleMasterCore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hey-hoho","download_url":"https://codeload.github.com/hey-hoho/ScheduleMasterCore/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252319993,"owners_count":21729054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","distributed","netcore","scheduler","web"],"created_at":"2024-11-13T04:51:29.313Z","updated_at":"2025-05-04T10:30:46.907Z","avatar_url":"https://github.com/hey-hoho.png","language":"C#","readme":"\n![schedulemaster](https://i.loli.net/2020/11/23/o34pijrvENnexkl.png)\n\nScheduleMaster是一个开源的分布式任务调度系统，它基于.NET Core 3.1平台构建，支持跨平台多节点部署运行。\n\n\n[![Build Status](https://dev.azure.com/591310381/ScheduleMasterCore/_apis/build/status/ScheduleMasterCore?branchName=master)](https://dev.azure.com/591310381/ScheduleMasterCore/_build/latest?definitionId=4\u0026branchName=master)\n![Nuget](https://img.shields.io/nuget/dt/ScheduleMaster)\n![PowerShell Gallery](https://img.shields.io/powershellgallery/p/DNS.1.1.1.1)\n![GitHub last commit](https://img.shields.io/github/last-commit/hey-hoho/ScheduleMasterCore)\n![.NET Core](https://github.com/hey-hoho/ScheduleMasterCore/workflows/.NET%20Core/badge.svg)\n\n\n## 主要特性\n- [x] 简易的Web UI操作；\n- [x] 任务动态管理:创建、启动、停止、暂停、恢复、删除等；\n- [x] 高可用支持，跨平台多节点部署。\n- [x] 数据安全性，不会出现多实例并发调度。\n- [x] 支持自定义参数设置；\n- [x] 支持.NET Core和.NET Framework（4.6.1+）；\n- [x] 支持自定义配置文件和热更新；\n- [x] 支持设置监护人，运行异常时邮件告警；\n- [x] 支持设置任务依赖，自动触发，共享任务结果；\n- [x] 插件式开发，任务运行环境隔离；\n- [x] 全链路日志系统，运行轨迹轻松掌控；\n- [x] 用户访问控制；\n- [x] 提供开放REST API，业务系统可以无缝集成；\n- [x] 调度报表统计；\n- [ ] 任务分组管理；\n- [ ] 计划表拆分实现复用；\n- [x] 指定节点运行；\n- [x] 支持http任务配置；\n- [x] 支持延时任务；\n- [ ] 任务监控；\n- [ ] 资源监控；\n- [x] 支持异常策略配置（失败重试、超时控制等）；\n- [ ] 接入redis缓存；\n- [x] 多数据库类型支持；\n- [ ] 用户权限更加精细化；\n- [ ] 报表统计完善；\n\n\u003cbr /\u003e\n\n## 技术栈\nASP.NET Core3.1、EntityFramework Core3.0、Mysql5.7、Quartz.Net、BeyondAdmin、Jquery...\n\n\u003cbr /\u003e\n\n## 系统架构图\n![architecture.png](https://i.loli.net/2020/11/23/z2Tglw4EBxNhp3I.png)\n\n\n## 如何使用\n\n\u003e 使用前请准备好所需环境：`Visual Studio 2019`、`.NET Core3.1 SDK`、`Mysql 5.7(可选)`、`SQLServer(可选)`、`PostgreSQL(可选)`、`Centos(可选)`、`Docker(可选)`。\n\n下面以Mysql作为数据库，用**配置文件方式**启动为例做介绍，其他方式参考详细文档。\n\n下载源码到本地，然后用VS2019打开解决方案并编译通过。\n\n打开项目Hos.ScheduleMaster.Web根目录下的`appsettings.json`文件，先修改Mysql数据库连接字符串以保证数据库正常访问，再找到`NodeSetting`节点，修改`IP`字段为master将要部署的ip地址（master端口为30000不用修改），在项目上右击选择发布...，发布到本地文件夹。\n\n打开项目Hos.ScheduleMaster.QuartzHost根目录下的`appsettings.json`文件，同样先修改Mysql连接字符串，再找到`NodeSetting`节点，设置worker的名称`IdentityName`，修改`IP`字段为将要部署的ip地址，`Port`字段为要监听的地址（推荐为30001），在项目上右击选择发布...，发布到本地文件夹。如果要新增worker，按同样方式配置`IdentityName、IP、Port`即可，worker在启动后会把自己的信息注入到数据库中，在master中可以看到。\n\n\u003e 快速发布小贴士：windows平台下用powershell执行脚本`publish.ps1`快速发布到`d:/sm-publish`目录，linux平台下执行脚本`sh publish.sh`快速发布到`/home/sm-publish`目录。\n\n其他发布方式亦可。下面以运行2个worker节点为例：\n\n### 在Windows中运行\n* 找到master的发布目录，执行命令`dotnet Hos.ScheduleMaster.Web.dll`启动程序，**首次启动会自动迁移生成数据库结构并初始化种子数据**，打开浏览器输入ip和端口访问即可（初始用户名`admin`，密码`111111`）。\n* 找到worker的发布目录，执行命令`dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30001`启动程序，打开浏览器输入ip和端口会看到一个欢迎页面，表示worker已启动成功。\n* 修改worker下的`appsettings.json`文件为worker2的配置（如果发布前已经修改可跳过），执行命令`dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30002`启动程序.\n* 登录到master中，可以看到**节点管理**菜单下各节点的运行状态。\n\n### 在Linux(Centos)中运行\n\u003e 运行前请确保机器已经安装好`.NET Core3.1`运行时环境。\n\n把发布文件复制到Centos中，操作步骤同Windows。\n\n### 在Docker中运行\n* 在master的发布目录中执行`docker build -t ms_master .`命令生成master镜像，再执行`docker run -d -p 30000:30000 --name=\"mymaster\" ms_master`运行容器。\n* 在worker的发布目录中执行`docker build -t ms_worker .`命令生成worker镜像，再执行`docker run -d -p 30001:80 --name=\"myworker1\" ms_worker bash --identity=docker-worker1 --ip=你的宿主机IP --port=30001`运行容器启动worker1。\n* 继续执行`docker run -d -p 30002:80 --name=\"myworker2\" ms_worker bash --identity=docker-worker2 --ip=你的宿主机IP --port=30002`运行容器启动worker2。\n* 执行`docker ps`查看各容器运行状态，如果运行不起来请检查容器log。\n\n\u003cbr /\u003e\n\n## 效果图\n![image.png](https://i.loli.net/2020/11/23/GHgZONf3MADIX1x.png)\n\n![image.png](https://i.loli.net/2020/11/23/rx9ncZX6Bhv75tH.png)\n\n![image.png](https://i.loli.net/2020/11/23/sFOyZQX8C31Pu7V.png)\n\n![image.png](https://i.loli.net/2020/11/23/A3HZ7kTQymL6tud.png)\n\n![image.png](https://i.loli.net/2020/11/23/vjYHG3KLtFiWEmO.png)\n\n![image.png](https://i.loli.net/2020/11/23/MAEt1Hdeyz3NOXl.png)\n\n\u003cbr /\u003e\n\n## 文档\n\n- https://github.com/hey-hoho/ScheduleMasterCore/wiki\n\n\u003cbr /\u003e\n\n## 交流学习\n\nQQ群：824535095\n\n\u003cbr /\u003e\n\n## 使用情况\n\n- https://github.com/hey-hoho/ScheduleMasterCore/issues/24\n\n\u003cbr /\u003e\n\n## 赞赏\n\n金额请随意，赞赏请备注~\n\n![wechat.png](https://i.loli.net/2020/11/23/sfiVUxcbzX3CvO1.png)\n![alipay.png](https://i.loli.net/2020/11/23/3Lzrm6QURgnJVsA.png)\n","funding_links":[],"categories":["C\\#"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhey-hoho%2FScheduleMasterCore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhey-hoho%2FScheduleMasterCore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhey-hoho%2FScheduleMasterCore/lists"}