.NET Core开源任务调度平台ScheduleMaster上新了

ScheduleMaster上一次比较大的更新还是在6月份,转眼已经快过去4个月了,这段时间比较忙,中间只更新过一次修复了几个小bug。要总结这次更新的话,必须要用“千呼万唤始出来”了,因为这次不仅经历的时间比较久,还带来了大家期待已久的功能-多数据库支持,再就是对.NET Framework的支持。

不熟悉的朋友可以先参考以往的介绍文章:

同时,项目也迎来了一个里程碑,那就是收到了第一个PR,瞬间感觉肩上责任重大[手动狗头]。

先看一下本次的更新点。

V2.2更新日志

  • 新增了对SQLServer和PostgreSQL的支持(来自@xueandfeng的PR,非常感谢!)
  • 新增了对.NET Standard 2.0的支持
  • Worker节点支持配置最大并发数
  • HTTP任务支持自定义超时时间
  • 修复了已知的bug

新功能可以做什么

项目最初使用的Mysql作为数据持久化方式,从发布开发,就有小伙伴一直问能不能支持其他数据库,因为对.NET平台的开发者来说使用SQLServer还是更多一些。但是那时候更多的考虑到整个项目部署的便捷性和跨平台(docker一条龙服务),而且刚好那段时间沉迷于Mysql,所以毫不犹豫的选择了它。虽然使用EntityFramework这样的ORM作为数据访问框架,但当时迫切的想完成核心功能快速发版,就没有考虑支持多种类型数据库,一直拖到现在。

在这过程中,支持多数据库的需求实在太大,有很多小伙伴自己拉源码改改就用上了,也有热心的小伙伴改完提了PR,不过我由于个人问题还是拖了一段时间到现在才处理。所以,经常用SQLServer或者更喜欢PostgreSQL的朋友有福了,再次感谢@xueandfeng

另外,项目正式支持.NET Standard 2.0,这意味着项目不仅仅能支持.NET Core程序,同时也能支持.NET Framework(4.6.1及以上)程序了,一张图看个明明白白:

netsdandard

.NET 5马上就要正式发布了,据说.NET Standard就要成为历史,当年费了好大劲才理清楚这几个玩意的关系,转眼说没就没了,我啊一口老血.........吐完继续喊“.NET真香”

以上之外,worker节点可以支持配置最大并发数量了,这是Quartz.Net线程池的一个特性。之前收到锄头哥多次反馈大任务量同时执行时会有丢失的问题#38,多方排查后定位到线程池上。从Quartz.Net 3.0开始,默认线程池(Quartz.Simpl.DefaultThreadPool)开始使用CLR的线程池,但是仍然保留了maxConcurrency这个参数,它的默认值是10。在官网文档可以看到,在大任务量执行频率比较高时,建议调高最大并发量的值:

quartz.threadPool.maxConcurrency
This is the number of concurrent tasks that can be dispatched to CLR thread pool. If you only have a few jobs that fire a few times a day, then 1 tasks is plenty! If you have tens of thousands of jobs, with many firing every minute, then you probably want a max concurrency count more like 50 or 100 (this highly depends on the nature of the work that your jobs perform, and your systems resources!). Also note CLR thread pool configuration separate from Quartz itself.

不过要注意的是,这个值并不严格意味着你最大能执行XX个任务,这取决于你的任务执行情况和系统环境。当你有大量高频率任务时,调高这个参数能明显改善任务丢失情况,ScheduleMaster给它的默认值是20。

我在忙什么

6月底我从广州裸辞,回到武汉开始找工作。作为今年疫情的最中心,武汉受到的影响还是非常大的,很多朋友劝我不要在这个时候换工作,但是由于一些原因我还是坚决地回来了。所以,还是逃不过现实的残酷,工作这么多年来第一次感受到找个靠谱的工作如此困难,当然这也和武汉的.NET大环境有关,前前后后花了好几个月才阴差阳错地来到现在这家公司。

目前从事云计算行业,有太多太多的专业知识要学习,而且还有好几门考证要求,实在应接不暇,初期曾一度想放弃。现在工作中主要的开发语言也转型到了Golang,什么前端后端运维数据库DevOps哪里需要往哪里搬,不断刷新自己的知识盲区。不过.NET还是会继续关注,这个项目还是会继续做下去。

最后,佛系推广一下。
作者唯一开源地址

GitHub stars
GitHub forks

文档(还在逐步更新中):

感谢大家支持~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
.NET Core 任务调度是一种在.NET Core 平台上实现任务调度的技术。任务调度可以用于定时执行一些重复性的任务,如定时发送邮件、生成报表等,也可以用于异步执行一些耗时的操作,如定时清理临时文件、定时更数据等。 在.NET Core 中,可以使用多种方式来实现任务调度。一种常用的方式是使用第三方的任务调度库,如Quartz.NET、Hangfire等。这些库通常提供了灵活的任务调度功能,可以按照设定的时间间隔或特定的时间点来执行任务,并且支持任务的持久化存储和监控。 另一种方式是使用.NET Core 自带的定时器类来实现任务调度。在.NET Core 中,可以使用System.Threading.Timer类或System.Timers.Timer类来创建定时器,并在指定的时间间隔或时间点触发回调函数进行相应的任务处理。这些定时器类提供了简单的操作接口,可以满足一些简单的任务调度需求。 在使用.NET Core 实现任务调度时,需要考虑以下几个方面。首先,需要确定任务的执行频率和执行时间点,选择合适的任务调度方式。其次,需要考虑任务的并发性和可靠性,选择适当的任务调度库或定时器类。再次,需要考虑任务的持久化存储和监控,以便进行任务的管理和监控。最后,需要保证任务的处理逻辑是可靠的,能够处理异常情况和错误。 总之,.NET Core 任务调度是一种在.NET Core 平台上实现任务调度的技术,可以帮助我们实现定时执行和异步执行任务的需求。选择合适的任务调度方式,并注意任务的并发性、可靠性和处理逻辑,可以确保任务调度的有效运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值