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. [剑指Offer]30-包含min函数的栈

    题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 题解 辅助栈记录当前最小值. 代码 import java.util.Stack; pub ...

  2. openstack核心组件——nova计算服务(7)

    云计算openstack核心组件——nova计算服务(7)   一.nova介绍:       Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源.OpenStack 作为 ...

  3. 我搭建了一套企业级私有Git服务,抗住了每天上万次攻击!

    写在前面 事情是这样的,今年疫情期间,我在某云购买了一套服务器,做什么呢?不是用来部署项目,也不是用来搭建网站,而是用来做代码备份和管理.没错,都是我个人的代码,也许你会说,你个人能有多少代码啊?确实 ...

  4. 新手学习Python第三方包库pip安装失败总结

    这篇文章纯原创,是之前自己学习使用pyhton时遇到的问题,故在此记录一下. 问题与需求:用python下载第三方库或包的时候出错怎么办? 方法有一下三种,可以解决大部分的问题. 1.在cmd命令控制 ...

  5. JS中的DOM对象

    DOM对象 1. DOM树 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),通过 HTML DOM对象,可访问 JavaScript HTML 文档的所有 ...

  6. 与Bat脚本的故事

    因为工作时需要将定时处理的业务抽出来,废弃通过监听定时调用的这种方法,改为通过第三方软件定时执行bat脚本来实现,所以学习了一下bat脚本,整理出一些学习中的基础点和重点. 基础点: (1)bat脚本 ...

  7. Python-函数式编程-map reduce filter lambda 三元表达式 闭包

    lambda 匿名函数,核心是作为算子,处理逻辑只有一行但具有函数的特性,核心用于函数式编程中 三元运算符 其实本质上是if分支的简化版,满足条件返回 if 前面的值,不满足条件返回 else后面的值 ...

  8. C++中try&catch

    参考:   https://blog.csdn.net/xueluowutong/article/details/81257654 在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在 ...

  9. 【记】《.net之美》之读书笔记(二) C#中的泛型

    前言 上一篇读书笔记,很多小伙伴说这本书很不错,所以趁着国庆假期,继续我的读书之旅,来跟随书中作者一起温习并掌握第二章的内容吧. 一.理解泛型 1.为什么要使用泛型?-----通过使用泛型,可以极大地 ...

  10. 使用SignalR和XSLT进行实时注释

    下载source code - 10.1 MB Introduction  众所周知,web请求(HTTP请求)是根据请求/响应机制工作的.通过这种方式,作为客户机的浏览器使用GET或POST向服务器 ...