3个实用定时任务系统解决方案,第3个填补了.NET社区的空白

2ecb9d4cf490ab650f53fc04d79ce25c.gif


本文简介

在开发中,我们经常需要执行一些定时任务,比如定期清理缓存、发送通知、数据备份等。.NET Core 作为微软的开源平台,为我们提供了丰富的定时任务解决方案。一说起定时任务系统,很多人首先想到了Hangfire和Quartz.NET,然而本文主要推荐3款开源的定时任务UI系统,其中第3款算是填补了.net在分布式任务系统中的空白,其他两个作为单体系统也是开源界的佼佼者,总之都能开箱即用,且都是以.net core平台开发 。

1、Quartz.NetUI

基本介绍

基于.NetCore + Quartz.Net + Vue 开箱即用的定时任务UI。几乎没有上手难度,不依赖数据库,只需在界面做简单配置。

技术架构

  1. 1. 编码语言 C#

  2. 2. Quartz.Net

  3. 3. Vue

项目结构

47988e3e41b785a9a2e02c215578cfe4.png

5e841b4d54809e545204682d7195069f.png

配置文件目录结构

9e036aed45e363581dac2e51d0728df5.png

核心功能概览

作业列表

27789392b145ca141eacfb59ff8a8094.png

新建作业

77749196de5b3f627f0b611437cebeb7.png

修改作业

8eba846296f1e19218d052c581679485.png

查看日志

d41189b80dca6e099e4522ed6d8e1233.png

Quartz.NetUI源码地址

https://gitee.com/x_discoverer/Quartz.NetUI


2、quartzui

基本介绍

基于.NET5.0和Quartz.NET3.2.4的任务调度Web界面管理

功能亮点

  1. 1. docker方式开箱即用

  2. 2. 内置SQLite持久化

  3. 3. 支持 RESTful风格接口

  4. 4. 业务代码零污染

  5. 5. 语言无关

  6. 6. 傻瓜式配置

  7. 7. 异常请求邮件通知

如何使用

方式1(docker使用)

docker run -v /fileData/quartzuifile:/app/File  --restart=unless-stopped --privileged=true --name quartzui -dp 5088:80 bennyzhao/quartzui

一行命令开箱即用,赶快体验下docker的便捷吧!
1、其中/fileData/quartzuifile为映射的文件地址,如SQLite数据库和log日志
2、5088为映射到主机的端口
3、直接在浏览器 ip:5088 即可访问。(注意防火墙是否打开了5088端口,或者在主机测试 curl 127.0.0.1:5088)

方式2(docker部署树莓派)

docker run -v /fileData/quartzuifile:/app/File  --restart=unless-stopped --privileged=true --name quartzui -dp 5088:80 bennyzhao/quartzui:RaspberryPi

方式3

可直接通过源码部署到windows或linux平台

更换数据源

默认使用的是SQLite-Microsoft,如果需要使用其他数据源请自行在appsettings.json进行正确配置。如:

"dbProviderName":"OracleODPManaged",
"connectionString": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=xe)));User Id=system;Password=oracle;";

"dbProviderName":"SqlServer",
"connectionString": "Server=localhost;Database=quartznet;User Id={SqlServerUser};Password={SqlServerPassword};";

"dbProviderName":"SQLServerMOT",
"connectionString": "Server=localhost,1444;Database=quartznet;User Id={SqlServerUser};Password={SqlServerPassword};"

"dbProviderName":"MySql", // MySql 测试通过
"connectionString": "Server = localhost; Database = quartznet; Uid = quartznet; Pwd = quartznet";

"dbProviderName":"Npgsql", // Npgsql 测试通过
"connectionString": "Server=127.0.0.1;Port=5432;Userid=quartznet;Password=quartznet;Pooling=true;MinPoolSize=1;MaxPoolSize=20;Timeout=15;SslMode=Disable;Database=quartznet";

"dbProviderName":"SQLite",
"connectionString": "Data Source=test.db;Version=3;";

"dbProviderName":"SQLite-Microsoft", // SQLite-Microsoft 测试通过
"connectionString": "Data Source=test.db;";

"dbProviderName":"Firebird",
"connectionString": "User=SYSDBA;Password=masterkey;Database=/firebird/data/quartz.fdb;DataSource=localhost;Port=3050;Dialect=3;Charset=NONE;Role=;Connection lifetime=15;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=8192;ServerType=0;";

核心功能概览

218155ec0717b0e1805a9eb80acbd1c0.png

2178409289c5a45cbb45e876e5c4972a.png

71ca6dac2b5bb7e46b5f19fb16b7cecb.png

be1a2a82a3d3d50a650b8a8a7b8979ec.png

464c350381d42e6a009130b580b9a2ad.png

务必注意

请不要跑在IIS上,因为IIS会自动回收。建议使用docker运行,或者直接用命令dotnet Host.dll。

quartzui源码地址

https://github.com/zhaopeiym/quartzui


3、ScheduleMasterCore

基本介绍

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

主要特性

  • • 简易的Web UI操作;

  • • 任务动态管理:创建、启动、停止、暂停、恢复、删除等;

  • • 高可用支持,跨平台多节点部署;

  • • 数据安全性,不会出现多实例并发调度;

  • • 支持自定义参数设置;

  • • 支持.NET Core和.NET Framework(4.6.1+);

  • • 支持自定义配置文件和热更新;

  • • 支持设置监护人,运行异常时邮件告警;

  • • 支持设置任务依赖,自动触发,共享任务结果;

  • • 插件式开发,任务运行环境隔离;

  • • 全链路日志系统,运行轨迹轻松掌控;

  • • 用户访问控制;

  • • 提供开放REST API,业务系统可以无缝集成;

  • • 调度报表统计;

  • • 指定节点运行;

  • • 支持http任务配置;

  • • 支持延时任务;

  • • 支持异常策略配置(失败重试、超时控制等);

  • • 多数据库类型支持;

使用技术

  1. 1. ASP.NET Core3.1

  2. 2. EntityFramework Core3.0

  3. 3. Mysql5.7

  4. 4. Quartz.Net

  5. 5. BeyondAdmin

  6. 6. Jquery...

系统架构图

4a39d7419742355f19e293a856c9228d.png

如何使用

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

下面以Mysql作为数据库,用配置文件方式启动为例做介绍,其他方式参考详细文档。

下载源码到本地,然后用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中可以看到。

快速发布小贴士:windows平台下用powershell执行脚本publish.ps1快速发布到d:/sm-publish目录,linux平台下执行脚本sh publish.sh快速发布到/home/sm-publish目录。

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

在Windows中运行

  1. 1. 找到master的发布目录,执行命令dotnet Hos.ScheduleMaster.Web.dll启动程序,首次启动会自动迁移生成数据库结构并初始化种子数据,打开浏览器输入ip和端口访问即可(初始用户名admin,密码111111)。

  2. 2. 找到worker的发布目录,执行命令dotnet Hos.ScheduleMaster.QuartzHost.dll --urls http://*:30001启动程序,打开浏览器输入ip和端口会看到一个欢迎页面,表示worker已启动成功。

  3. 3. 修改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 -d -p 30001:80 --name="myworker1" ms_worker bash --identity=docker-worker1 --ip=你的宿主机IP --port=30001运行容器启动worker1。
继续执行docker run -d -p 30002:80 --name="myworker2" ms_worker bash --identity=docker-worker2 --ip=你的宿主机IP --port=30002运行容器启动worker2。
执行docker ps查看各容器运行状态,如果运行不起来请检查容器log。

核心功能概览

0d6ffa05e508d4250b6e70d4dbe7f09b.png

4774236780054eb258efd8419b683645.png

dc68786f2c1557a81119e7f9686795ae.png

aee5881b3bdafd999bab1d5645ecc875.png

9039d2ffbc4238874638c9048659954f.png

5a69375d7f0209bc1849dc0aa20de52b.png

ScheduleMasterCore源码地址

https://github.com/hey-hoho/ScheduleMasterCore


推荐阅读

欢迎扫描下方二维码加我的微信入群获取更多软件技术解决方案。

25b318f05e47a7607153cc81082a792e.jpeg

版权声明:本文来源于网络素材收集整理或网友供稿,版权归版权所有者所有,如有侵权请联系小编予以删除

87835be2872380c1d0c4ca4e9a4a56a3.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值