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及以上)程序了,一张图看个明明白白:

.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还是会继续关注,这个项目还是会继续做下去。

最后,佛系推广一下。

作者唯一开源地址

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

感谢大家支持~

.NET Core开源任务调度平台ScheduleMaster上新了的更多相关文章

  1. Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手

    概述 ScheduleMaster是一个开源的分布式任务调度系统,它基于Asp.Net Core平台构建,支持跨平台多节点部署运行. 它的项目主页在这里: https://github.com/hey ...

  2. Asp.Net Core下的开源任务调度平台ScheduleMaster

    从何说起 2017年初的时候,由于当时项目需要做了一个乞丐版定时调度系统,那时候只在单机上实现了核心的调度功能.做这个玩意之前也调研了社区中开源的解决方案,找了几个实地部署试跑了一下,其实都很不错.但 ...

  3. Apache DolphinScheduler新一代分布式工作流任务调度平台实战-上

    概述 定义 dolphinscheduler 官网地址 https://dolphinscheduler.apache.org/ dolphinscheduler GitHub地址 https://g ...

  4. 开源任务调度平台elastic-job-lite源码解析

    前段时间写过一遍文章<一文揭秘定时任务调度框架quartz>,有读者建议我再讲讲elastic-job这个任务调度框架,年末没有那么忙,就来学习一下elastic-job. 首先一点,el ...

  5. 企业安全建设之搭建开源SIEM平台(上)

    前言 SIEM(security information and event management),顾名思义就是针对安全信息和事件的管理系统,针对大多数企业是不便宜的安全系统,本文结合作者的经验介绍 ...

  6. 2018 dnc 公司案例大全,迎接.NET Core开源新时代

    2018 dnc 公司案例大全,迎接.NET Core开源新时代   dnc = .NET Core.dotnet Core dnc是微软新一代主力编程平台,开源.免费.跨平台.轻量级.高性能,支持L ...

  7. 宜信开源|微服务任务调度平台SIA-TASK入手实践

    引言 最近宜信开源微服务任务调度平台SIA-TASK,SIA-TASK属于分布式的任务调度平台,使用起来简单方便,非常容易入手,部署搭建好SIA-TASK任务调度平台之后,编写TASK后配置JOB进行 ...

  8. 宜信开源微服务任务调度平台(SIA-TASK)

    背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.常常需要一些任务调度系统帮助开发者解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此的背景下,很多原先的任 ...

  9. 宜信开源|分布式任务调度平台SIA-TASK的架构设计与运行流程

    一.分布式任务调度的背景 无论是互联网应用或者企业级应用,都充斥着大量的批处理任务.我们常常需要一些任务调度系统来帮助解决问题.随着微服务化架构的逐步演进,单体架构逐渐演变为分布式.微服务架构.在此背 ...

随机推荐

  1. Druid连接池配置全攻略

    Druid是阿里开源出来的数据库连接池,性能非常好,还自带日志监控. 它的DataSource类为:com.alibaba.druid.pool.DruidDataSource. 由于使用的yaml格 ...

  2. MySQL隐式转换的坑

    MySQL以以下规则描述比较操作如何进行转换: 两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回 1,这两种情况都不需要做 ...

  3. pycharm2020.2破解版教程激活码支持Windows Linux Mac系统-中关村老大爷

    听说很多朋友想要PyCharm专业版2020.2的破解教程.现在来了,亲测破解成功.支持mac linux windows系统.本教程提供官方安装包.激活码和注册补丁. 本教程仅供学习和讨论,禁止商业 ...

  4. (专题一)07 matlab中字符串的表示

    matlab中,字符串使用单引号括起来的字符序列 >>xm='Central South University' >>xm(1:3) ans= Cen 截取1--3这三个字符, ...

  5. golang 协程学习

    协程数据传递问题 func TestGoroutineData(t *testing.T) { var wg sync.WaitGroup wg.Add(1) i := 0 go func(j int ...

  6. 有关java反射的几个小方法的作用和区别

    1.Class类中 getXXX()和getDeclaredXXX()的作用和区别: 前者获取某个类的所有公共(public)的字段(or方法or构造函数),包括父类.后者获取所有的字段(or方法or ...

  7. splunk公司的一道笔试题

    题目要求: 一个游泳馆里有很多储物柜,每个储物柜都有一个ID号,但是老板不喜欢4这个数字,所以ID号里都不能有4,ID号从1开始编号,让你设计所有储物柜的ID号,用程序输出,比如输入  4输出  5输 ...

  8. 数据库图形表Navicat Premium

    1.什么是数据库? 存储数据,为了方便查询和使用 web时代使用最广泛的关系型数据库 2.历史: 瑞典公司开发,卖给SUN,SUN又卖给ORACLE 开源,免费,支持多平台 3.数据库图形表Navic ...

  9. Android Widget开发过程中的一些问题汇总

    一.基本实现要点 布局文件 配置文件 控制文件 AndroidManifest.xml

  10. django_apscheduler 0.4.0删除了name字段

    使用django_apscheduler时默认使用了最新版本,为0.4.2版本,但是在这个版本中,使用migrate 生成定时任务模型时没有了name字段,导致之前写的定时任务不能执行. 翻了下 dj ...