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. 什么是Lambda架构

    一.Lambda架构需求 Lambda架构背后的需求是由于MR架构的延迟问题.MR虽然实现了分布式.可扩展数据处理系统的目的,但是在处理数据时延迟比较严重.实际上如果内存和CPU足够强大,MR也可以实 ...

  2. 图灵机器人api的使用方法含微信版本和网页版

    访问图灵机器人官网http://www.tuling123.com/ 注册一个新的机器人账号 注册成功后转到主页 点击我的机器人>创建机器人>微信机器人 填写基本信息 点击微信介入> ...

  3. 软件开发过程中常用的环境解释DEV FAT UAT PRO

    1.DEV Development environment 开发环境,用于开发者调试使用 2.FAT Feature Acceptance Test environment 功能验收测试环境,用于软件 ...

  4. Linux常用命令详解(3)

    pidofpstopipuptimewgetcurltrddtargrepfind 命令详解 1.pidof 获取正在运行程序的PID 实例1: [root@ken ~]# pidof sshd 24 ...

  5. Vue iview Tree组件实现文件目录-基础实现

    注册页面路由 router/router.js { path: 'folder_tree', name: 'folderTree', component: () => import('@/vie ...

  6. SVN检出maven项目

    (一)直接单击项目,右键选择configure,选择convert to maven project (二)删除project explorer中的项目,并重新从工作区间导入maven项目.

  7. python安装scrapy库失败

    解决方法: 首先,下载Twisted.cp后数字为python版本,例如cp36为python3.6:amd则表示系统位数,例如amd64为64位.下载对应版本即可.点击打开链接 找到Twisted, ...

  8. ASP.NET Core 基于声明的访问控制到底是什么鬼?

    从ASP.NET 4.x到ASP.NET Core,内置身份验证已从基于角色的访问控制(RBAC)转变为基于声明的访问控制(CBAC). 我们常用的HttpContext.User属性ASP.NET ...

  9. Tomcat 第四篇:请求处理流程(上)

    1. 引言 既然是在讲 Tomcat ,那么一个 HTTP 请求的请求流程是无论如何也绕不开的. 首先抛开所有,使用我们现有的知识面,猜测一下一个请求被 Tomcat 处理的过程: 1. 客户端(浏览 ...

  10. git的详细使用,项目创建到同步远程仓库,版本回退,忽略文件,分支创建,分支合并,分支名称修改,冲突解决,项目迁移

    注意:此处省略git的安装 1..git的工作流程示意图: 2.本地仓库的初始化: 2.1 创建一个文件夹,如我创建的是:D:\gitdemo\shop 2.2 进入shop目录,鼠标右键,打开git ...