实例介绍
ScheduleMaster是一款高效的分布式任务调度系统,采用.NET Core 3.1技术栈进行开发,旨在为开发者提供一个稳定、灵活的任务管理平台。该系统不仅具备任务动态管理、数据安全性、自定义参数设置等核心功能,还支持跨平台多节点部署,确保了高可用性。
主要特性包括:
- 简易的Web UI操作
- 任务动态管理: 创建、启动、停止、暂停、恢复、删除等
- 高可用支持,跨平台多节点部署
- 数据安全性,避免多实例并发调度问题
- 支持自定义参数设置和配置文件热更新
- 运行异常邮件告警、任务依赖自动触发等高级功能
- 插件式开发,任务运行环境隔离
- 全链路日志系统,轻松掌控运行轨迹
- 用户访问控制与精细化权限管理
- 调度报表统计与资源监控
- 支持异常策略配置如失败重试、超时控制等
如何使用:
用户需要准备好Visual Studio 2019、.NET Core3.1 SDK等环境,通过配置文件方式启动。系统支持在Windows、Linux(Centos)以及Docker中运行,为不同需求的用户提供了灵活的部署选项。
ScheduleMaster致力于提供一个全面、可靠的任务调度解决方案,无论是数据安全性、高可用性还是用户权限管理,都能满足企业级应用的需求。
【实例截图】
文件清单
└── ScheduleMasterCore-8795d00a1b0e7ebdedc9c3def41f2aac7dc793d6
├── azure-pipelines.yml
├── docs
│ ├── 1-动态参数启动.md
│ ├── 1-部署方式介绍.md
│ ├── 1-配置文件启动.md
│ ├── 2-任务管理.md
│ ├── 2-使用API接入任务.md
│ ├── 2-参数配置.md
│ ├── 2-延时任务.md
│ ├── 2-日志跟踪.md
│ ├── 2-编写业务代码.md
│ ├── 2-节点管理.md
│ ├── 3-任务启动流程.md
│ ├── 3-任务执行流程.md
│ ├── 3-延时任务原理.md
│ ├── 3-节点注册流程.md
│ ├── images
│ │ ├── architecture.png
│ │ ├── icon.png
│ │ └── logo.png
│ └── wiki开始页.md
├── LICENSE
├── publish.ps1
├── publish.sh
├── README.md
└── src
├── db
│ ├── add_index.sql
│ └── db.sql
└── ScheduleMasterCore
├── Hos.ScheduleMaster.Base
│ ├── Dto
│ │ └── ScheduleLog.cs
│ ├── Hos.ScheduleMaster.Base.csproj
│ ├── Hos.ScheduleMaster.Base.nuspec
│ ├── nuget.exe
│ ├── RunConflictException.cs
│ ├── TaskBase.cs
│ └── TaskContext.cs
├── Hos.ScheduleMaster.Core
│ ├── AutowiredAttribute.cs
│ ├── Common
│ │ ├── BufferQueue.cs
│ │ ├── EnumHelper.cs
│ │ ├── Extensions.cs
│ │ ├── ListPager.cs
│ │ ├── MailKitHelper.cs
│ │ ├── ObjectMapper.cs
│ │ ├── PredicateExtensions.cs
│ │ └── SecurityHelper.cs
│ ├── ConfigurationCache.cs
│ ├── Dto
│ │ ├── ScheduleDelayedInfo.cs
│ │ └── ScheduleInfo.cs
│ ├── EntityFramework
│ │ ├── DbContext.cs
│ │ ├── DbContext.tt
│ │ ├── EntityFrameworkContextExtensions.cs
│ │ └── ModelBuilderExtensions.cs
│ ├── Hos.ScheduleMaster.Core.csproj
│ ├── Interface
│ │ ├── IAccountService.cs
│ │ ├── IDelayedTaskService.cs
│ │ ├── INodeService.cs
│ │ ├── IScheduleService.cs
│ │ └── ISystemService.cs
│ ├── Log
│ │ ├── LogHelper.cs
│ │ └── LogManager.cs
│ ├── Migrations
│ │ ├── 20200405073814_http.cs
│ │ ├── 20200405073814_http.Designer.cs
│ │ ├── 20200411091721_update.cs
│ │ ├── 20200411091721_update.Designer.cs
│ │ ├── 20200515024401_delaytask.cs
│ │ ├── 20200515024401_delaytask.Designer.cs
│ │ ├── 20200622035045_tracessummary.cs
│ │ ├── 20200622035045_tracessummary.Designer.cs
│ │ └── SmDbContextModelSnapshot.cs
│ ├── Models
│ │ ├── IEntity.cs
│ │ ├── ScheduleDelayedEntity.cs
│ │ ├── ScheduleEntity.cs
│ │ ├── ScheduleExecutorEntity.cs
│ │ ├── ScheduleHttpOptionEntity.cs
│ │ ├── ScheduleKeeperEntity.cs
│ │ ├── ScheduleLockEntity.cs
│ │ ├── ScheduleReferenceEntity.cs
│ │ ├── ScheduleTraceEntity.cs
│ │ ├── ServerNodeEntity.cs
│ │ ├── SystemConfigEntity.cs
│ │ ├── SystemLogEntity.cs
│ │ ├── SystemUserEntity.cs
│ │ └── TraceStatisticsEntity.cs
│ ├── Repository
│ │ ├── BaseRepository.cs
│ │ ├── IUnitOfWork.cs
│ │ ├── RepositoryFactory.cs
│ │ └── RepositoryFactory.tt
│ ├── ScheduleContext.cs
│ ├── ServiceMapAttribute.cs
│ ├── ServiceProviderWrapper.cs
│ ├── ServiceResponseMessage.cs
│ └── Services
│ ├── AccountService.cs
│ ├── BaseService.cs
│ ├── DelayedTaskService.cs
│ ├── NodeService.cs
│ ├── RemoteCaller
│ │ ├── DelayedTaskServiceClient.cs
│ │ ├── ScheduleServiceClient.cs
│ │ ├── ServerClient.cs
│ │ └── WorkerDispatcher.cs
│ ├── ScheduleService.cs
│ └── SystemService.cs
├── Hos.ScheduleMaster.Demo
│ ├── CustomConfigFile.cs
│ ├── CustomParams.cs
│ ├── ExceptionNotify.cs
│ ├── Hos.ScheduleMaster.Demo.csproj
│ ├── myconfig.json
│ ├── Simple.cs
│ ├── TaskCancel.cs
│ ├── TaskConflict.cs
│ ├── TaskRef.cs
│ └── TaskUseDI.cs
├── Hos.ScheduleMaster.QuartzHost
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── AppStart
│ │ ├── AppLifetimeHostedService.cs
│ │ ├── BackgroundTimerHostedService.cs
│ │ └── TaskClearJob.cs
│ ├── Common
│ │ ├── AssemblyHelper.cs
│ │ ├── HosScheduleFactory.cs
│ │ ├── PluginLoadContext.cs
│ │ ├── QuartzManager.cs
│ │ ├── RootJob.cs
│ │ └── RunTracer.cs
│ ├── Controllers
│ │ ├── DelayedTaskController.cs
│ │ ├── QuartzController.cs
│ │ └── ServerController.cs
│ ├── DelayedTask
│ │ ├── DelayPlanManager.cs
│ │ └── DelayQueue.cs
│ ├── Dockerfile
│ ├── Filters
│ │ ├── ApiValidationFilter.cs
│ │ └── GlobalExceptionFilter.cs
│ ├── HosLock
│ │ ├── DatabaseLock.cs
│ │ └── IHosLock.cs
│ ├── HosSchedule
│ │ ├── AssemblySchedule.cs
│ │ ├── HttpSchedule.cs
│ │ └── IHosSchedule.cs
│ ├── Hos.ScheduleMaster.QuartzHost.csproj
│ ├── Program.cs
│ ├── RunnableJob
│ │ ├── AssemblyJob.cs
│ │ └── HttpJob.cs
│ ├── Startup.cs
│ └── wwwroot
│ └── index.html
├── Hos.ScheduleMaster.Web
│ ├── ApiControllers
│ │ ├── ApiController.cs
│ │ ├── DelayTaskController.cs
│ │ └── TaskController.cs
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── AppStart
│ │ ├── AppLifetimeHostedService.cs
│ │ ├── NodeRegistry.cs
│ │ └── SystemSchedulerRegistry.cs
│ ├── Controllers
│ │ ├── AccountController.cs
│ │ ├── AdminController.cs
│ │ ├── ConsoleController.cs
│ │ ├── DelayedTaskController.cs
│ │ ├── LoginController.cs
│ │ ├── ScheduleController.cs
│ │ ├── StaticController.cs
│ │ └── SystemController.cs
│ ├── Dockerfile
│ ├── Extension
│ │ ├── AppExtensions.cs
│ │ ├── DateTimeConverter.cs
│ │ ├── HosControllerActivator.cs
│ │ ├── JavaScriptResult.cs
│ │ └── JsonNetResult.cs
│ ├── Filters
│ │ ├── AccessControlFilter.cs
│ │ ├── AjaxRequestOnlyAttribute.cs
│ │ └── GlobalExceptionFilter.cs
│ ├── Hos.ScheduleMaster.Web.csproj
│ ├── Program.cs
│ ├── Startup.cs
│ ├── todolist.md
│ ├── Views
│ │ ├── Account
│ │ │ ├── Edit.cshtml
│ │ │ └── Index.cshtml
│ │ ├── Console
│ │ │ ├── Home.cshtml
│ │ │ └── Index.cshtml
│ │ ├── DelayedTask
│ │ │ ├── Create.cshtml
│ │ │ ├── Detail.cshtml
│ │ │ └── Index.cshtml
│ │ ├── Login
│ │ │ └── Index.cshtml
│ │ ├── Schedule
│ │ │ ├── Create.cshtml
│ │ │ ├── Detail.cshtml
│ │ │ ├── Edit.cshtml
│ │ │ ├── Index.cshtml
│ │ │ └── TraceLog.cshtml
│ │ ├── Shared
│ │ │ ├── _Layout.cshtml
│ │ │ └── _ValidationScriptsPartial.cshtml
│ │ ├── Static
│ │ │ └── Page404.cshtml
│ │ ├── System
│ │ │ ├── ClearLog.cshtml
│ │ │ ├── Config.cshtml
│ │ │ ├── Log.cshtml
│ │ │ ├── Node.cshtml
│ │ │ └── NodeEdit.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ └── wwwroot
│ ├── assets
│ │ ├── css
│ │ │ ├── 4095-rtl.min.css
│ │ │ ├── animate.min.css
│ │ │ ├── beyond.min.css
│ │ │ ├── beyond-rtl.min.css
│ │ │ ├── bootstrap.min.css
│ │ │ ├── bootstrap-rtl.min.css
│ │ │ ├── dataTables.bootstrap.css
│ │ │ ├── demo.min.css
│ │ │ ├── font-awesome.min.css
│ │ │ ├── skins
│ │ │ │ ├── azure.min.css
│ │ │ │ ├── black.min.css
│ │ │ │ ├── blue.min.css
│ │ │ │ ├── darkblue.min.css
│ │ │ │ ├── darkred.min.css
│ │ │ │ ├── deepblue.min.css
│ │ │ │ ├── gray.min.css
│ │ │ │ ├── green.min.css
│ │ │ │ ├── orange.min.css
│ │ │ │ ├── pink.min.css
│ │ │ │ ├── purple.min.css
│ │ │ │ └── teal.min.css
│ │ │ ├── toastr.css
│ │ │ ├── typicons.min.css
│ │ │ └── weather-icons.min.css
│ │ ├── fonts
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.svg
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ ├── typicons.eot
│ │ │ ├── typicons.svg
│ │ │ ├── typicons.ttf
│ │ │ ├── typicons.woff
│ │ │ ├── weathericons-regular-webfont.eot
│ │ │ ├── weathericons-regular-webfont.svg
│ │ │ ├── weathericons-regular-webfont.ttf
│ │ │ └── weathericons-regular-webfont.woff
│ │ ├── img
│ │ │ ├── attach-blue.png
│ │ │ ├── attach-green.png
│ │ │ ├── attach-red.png
│ │ │ ├── attach-yellow.png
│ │ │ ├── avatars
│ │ │ │ └── adam-jansen.jpg
│ │ │ ├── icon.png
│ │ │ ├── jquery.minicolors.png
│ │ │ ├── logo-black.png
│ │ │ ├── logo-black_xs.png
│ │ │ ├── logo-white.png
│ │ │ ├── sort_asc_disabled.png
│ │ │ ├── sort_asc.png
│ │ │ ├── sort_both.png
│ │ │ ├── sort_desc_disabled.png
│ │ │ ├── sort_desc.png
│ │ │ └── temp1.png
│ │ └── js
│ │ ├── beyond.js
│ │ ├── beyond.min.js
│ │ ├── bootbox
│ │ │ └── bootbox.js
│ │ ├── bootstrap.min.js
│ │ ├── bootstrap-table
│ │ │ ├── bootstrap-table.min.css
│ │ │ ├── bootstrap-table.min.js
│ │ │ └── bootstrap-table-zh-CN.min.js
│ │ ├── charts
│ │ │ ├── easypiechart
│ │ │ │ ├── easypiechart-init.js
│ │ │ │ └── jquery.easypiechart.js
│ │ │ └── flot
│ │ │ ├── flot-init.js
│ │ │ ├── jquery.flot.crosshair.js
│ │ │ ├── jquery.flot.js
│ │ │ ├── jquery.flot.orderBars.js
│ │ │ ├── jquery.flot.pie.js
│ │ │ ├── jquery.flot.resize.js
│ │ │ ├── jquery.flot.selection.js
│ │ │ ├── jquery.flot.stack.js
│ │ │ ├── jquery.flot.time.js
│ │ │ └── jquery.flot.tooltip.js
│ │ ├── jquery-2.0.3.min.js
│ │ ├── jquery-ui-1.10.4.custom.js
│ │ ├── laydate5.0.9
│ │ │ ├── laydate.js
│ │ │ └── theme
│ │ │ └── default
│ │ │ ├── font
│ │ │ │ ├── iconfont.eot
│ │ │ │ ├── iconfont.svg
│ │ │ │ ├── iconfont.ttf
│ │ │ │ └── iconfont.woff
│ │ │ └── laydate.css
│ │ ├── nestable
│ │ │ └── jquery.nestable.min.js
│ │ ├── select2
│ │ │ └── select2.js
│ │ ├── skins.min.js
│ │ ├── tagsinput
│ │ │ └── bootstrap-tagsinput.js
│ │ └── toastr
│ │ └── toastr.js
│ ├── css
│ │ └── Huploadify.css
│ ├── favicon.ico
│ ├── images
│ │ ├── avatar1.jpg
│ │ ├── avatar2.jpg
│ │ ├── icon.png
│ │ ├── login-bg.jpg
│ │ ├── logo-black.png
│ │ ├── logo-black_xs.png
│ │ └── logo-white.png
│ ├── js
│ │ ├── hos.ui.ctrl.js
│ │ ├── hos.ui.ext.js
│ │ ├── hos.ui.util.js
│ │ ├── jquery.form.js
│ │ ├── jquery.Huploadify.js
│ │ ├── jquery.unobtrusive-ajax.js
│ │ ├── jquery.validate.min.js
│ │ ├── skins.min.js
│ │ └── template-web.js
│ ├── lib
│ │ ├── beyondadmin.zip
│ │ ├── bootstrap
│ │ │ ├── dist
│ │ │ │ ├── css
│ │ │ │ │ ├── bootstrap.css
│ │ │ │ │ ├── bootstrap.css.map
│ │ │ │ │ ├── bootstrap-grid.css
│ │ │ │ │ ├── bootstrap-grid.css.map
│ │ │ │ │ ├── bootstrap-grid.min.css
│ │ │ │ │ ├── bootstrap-grid.min.css.map
│ │ │ │ │ ├── bootstrap.min.css
│ │ │ │ │ ├── bootstrap.min.css.map
│ │ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ │ ├── bootstrap-reboot.css.map
│ │ │ │ │ ├── bootstrap-reboot.min.css
│ │ │ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ │ │ ├── bootstrap-theme.css
│ │ │ │ │ ├── bootstrap-theme.css.map
│ │ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ │ └── bootstrap-theme.min.css.map
│ │ │ │ ├── fonts
│ │ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ │ └── js
│ │ │ │ ├── bootstrap.bundle.js
│ │ │ │ ├── bootstrap.bundle.js.map
│ │ │ │ ├── bootstrap.bundle.min.js
│ │ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ │ ├── bootstrap.js
│ │ │ │ ├── bootstrap.js.map
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ ├── bootstrap.min.js.map
│ │ │ │ └── npm.js
│ │ │ └── LICENSE
│ │ ├── jquery
│ │ │ ├── dist
│ │ │ │ ├── jquery.js
│ │ │ │ ├── jquery.min.js
│ │ │ │ └── jquery.min.map
│ │ │ └── LICENSE.txt
│ │ ├── jquery-validation
│ │ │ ├── dist
│ │ │ │ ├── additional-methods.js
│ │ │ │ ├── additional-methods.min.js
│ │ │ │ ├── jquery.validate.js
│ │ │ │ └── jquery.validate.min.js
│ │ │ └── LICENSE.md
│ │ └── jquery-validation-unobtrusive
│ │ ├── jquery.validate.unobtrusive.js
│ │ ├── jquery.validate.unobtrusive.min.js
│ │ └── LICENSE.txt
│ └── plugins
│ └── Hos.ScheduleMaster.Demo.zip
├── Hos.ScheduleMaster.xUnitTest
│ ├── ApiCreateTest.cs
│ ├── coveragereport
│ │ ├── icon_cube.svg
│ │ ├── icon_down-dir_active.svg
│ │ ├── icon_fork.svg
│ │ ├── icon_info-circled.svg
│ │ ├── icon_minus.svg
│ │ ├── icon_plus.svg
│ │ ├── icon_search-minus.svg
│ │ ├── icon_search-plus.svg
│ │ ├── icon_sponsor.svg
│ │ ├── icon_star.svg
│ │ ├── icon_up-dir_active.svg
│ │ ├── icon_up-dir.svg
│ │ ├── icon_wrench.svg
│ │ ├── index.htm
│ │ ├── main.js
│ │ └── report.css
│ ├── DelayTaskTest.cs
│ ├── Hos.ScheduleMaster.xUnitTest.csproj
│ ├── Mock
│ │ └── Master
│ │ ├── MockController.cs
│ │ └── ScheduleControllerTest.cs
│ ├── TestResults
│ │ └── a3e34922-3f7c-4f15-a32d-6d5bfc845ce1
│ │ └── coverage.cobertura.xml
│ ├── UnitTest1.cs
│ ├── Utils
│ │ ├── AssemblyLoadTest.cs
│ │ └── LockTest.cs
│ └── wwwroot
│ └── plugins
│ └── 3c915575-7171-4d95-b08e-9f082b3f58b0
│ ├── Hos.ScheduleMaster.Demo.dll
│ └── myconfig.json
└── ScheduleMasterCore.sln
91 directories, 368 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论