.NET 分布式毫秒级定时任务 Sundial

Hi,我是百小僧,我又来了。1993 年 05 月生,双子座,2008 年高中接触编程,进入大学后成痴迷状态,于 2012 年 09 月创业至今十年有余,跌跌撞撞还在路上,个人简介不过多阐述 https://furion.baiqian.ltd/docs/author。

开源十年,坚持每年至少开源一款项目,如今已有 30 个有余,十年间已是超 6 万人的群主。开源十年,我都做了啥?

1、创造了国内超流行的 .NET 框架 Furion:https://gitee.com/dotnetchina/Furion.

.NET 分布式毫秒级定时任务 Sundial

2、创造了前端弹窗组件 LayX:https://gitee.com/monksoul/LayX

.NET 分布式毫秒级定时任务 Sundial

3、创办了 Gitee 平台超有知名度的 dotNET China 组织:https://gitee.com/dotnetchina

.NET 分布式毫秒级定时任务 Sundial

4、创造了分布式毫秒级定时任务 Sundial:https://gitee.com/dotnetchina/Sundial

.NET 分布式毫秒级定时任务 Sundial

5、创造了分布式事件总线 Jaina:https://gitee.com/dotnetchina/Jaina

.NET 分布式毫秒级定时任务 Sundial

6、.NET 全能 Cron 表达式解析 TimeCrontab 作者:https://gitee.com/dotnetchina/TimeCrontab

.NET 分布式毫秒级定时任务 Sundial

7、曾经风靡一时的 Hui 框架作者:https://gitee.com/monksoul/Hui

.NET 分布式毫秒级定时任务 Sundial

8、曾经被 NodeJS 官方推荐的 Monk.Node 框架作者:https://gitee.com/monksoul/Monk.Node

.NET 分布式毫秒级定时任务 Sundial

9、前端 Javascript 验证库的作者:https://gitee.com/monksoul/availdate.js

.NET 分布式毫秒级定时任务 Sundial

由于篇幅优先,就不一一例举,感兴趣的可以去访问我 Gitee 个人主页:https://gitee.com/monksoul

沉默时光

在 .NET 领域,有两个主流的定时任务库,一个是 Quartz.NET,另外一个是 Hangfire,过去十年,所有接手的项目中只要涉及到定时任务就离不开这两个库,也只有这个选择,但它们属于国外大神作品,从功能需求上不能自主可控。

随着编程思维和技术的增长,慢慢有了自主创造的意识,所以于 2021 年 11 月就萌生出自己写定时任务的想法,它必须是国人完全自主的分布式毫秒级定时任务,为此我做了长足的准备。

不鸣则已

为了编写无依赖的分布式定时任务,我花费了 9 个月的时间去学习这些知识,见证我创建该库的心路历程:https://gitee.com/dotnetchina/Sundial/issues/I4IL3U

  • 必须了解 Cron 表达式所有原理

  • 必须了解 多线程、信号量,互斥锁,任务,绿色线程,线程 Token 知识

  • 必须了解 TCP/IP 知识,实现集群控制,持久化控制

  • 必须了解 CPU 休眠原理,唤醒原理,解决线程如何唤醒,休眠总时间计算

  • 必须了解 Hash 表,链表知识,数据结构和算法,解决作业内存存储问题

  • 必须了解 队列,管道通讯知识,解决作业运行时状态改变通知问题

  • 必须了解 反射知识,IOC/DI 知识,设计模式,架构设计,为以后拓展和维护

  • 还有很多很多小知识

一鸣惊人

经过了将近 10 个月的开发,测试,迭代,Sundial 诞生了,编写了超 10 万字文档。

https://furion.baiqian.ltd/docs/job

.NET 分布式毫秒级定时任务 Sundial

一睹尊容

Sundial

licenseMIT:https://gitee.com/dotnetchina/Sundial/blob/master/LICENSE

nugetv2.5.0:https://www.nuget.org/packages/Sundial

dotNET China:https://gitee.com/dotnetchina

.NET 功能齐全的开源分布式作业调度系统,可从最小的应用程序到大型企业系统使用。

.NET 分布式毫秒级定时任务 Sundial

特性

  • 简化调度作业

    • 支持作业监视器
    • 支持作业执行器
    • 支持自定义作业存储组件(持久化)
    • 支持自定义策略执行
    • 内置周期、Cron 作业
    • 支持自定义作业触发器
    • 支持依赖注入控制(含 HTTP 控制支持)
  • 高内聚,低耦合,使代码更简单

  • 很小,仅41KB

  • 无第三方依赖

  • 可在Windows/Linux/MacOS守护进程部署

  • 支持分布式、集群(多实例)部署

  • 支持负载均衡(基于 TCP/IP)

  • 高质量代码和良好单元测试

  • 跨平台,支持 .NET5+

安装

  • Package Manager

Install-PackageSundial

  • .NET CLI

dotnetaddpackageSundial

快速入门

我们在主页上有不少例子,这是让您入门的第一个:

1、定义作业,并实现IJob接口:

public class MyJob : IJob
{
    private readonly ILogger<MyJob> _logger;

    public MyJob(ILogger<MyJob> logger)
    {
        _logger = logger;
    }

    public async Task ExecuteAsync(JobExecutingContext context, CancellationToken stoppingToken)
    {
        _logger.LogInformation($"{context.JobDetail}  {context.Trigger} {context.OccurrenceTime}");
        await Task.CompletedTask;
    }
} 

2、在Startup.cs注册AddSchedule服务和作业:

services.AddSchedule(options =>
{
    options.AddJob<MyJob>(Triggers.PeriodSeconds(5)
                , Triggers.Minutely());
});

3、运行项目:

info: System.Logging.ScheduleService[0]
      Schedule Hosted Service is running.
warn: System.Logging.ScheduleService[0]
      Schedule Hosted Service cancels hibernation and GC.Collect().
info: System.Logging.ScheduleService[0]
      The Scheduler of <job1> successfully updated to the schedule.
info: Sundial.Samples.MyJob[0]
      <job1>   <job1 job1_trigger2>  5000ms 2022/11/23 16:22:51
info: Sundial.Samples.MyJob[0]
      <job1>   <job1 job1_trigger2>  5000ms 2022/11/23 16:22:56
info: Sundial.Samples.MyJob[0]
      <job1>   <job1 job1_trigger3>  * * * * * 2022/11/23 16:23:00
info: Sundial.Samples.MyJob[0]
      <job1>   <job1 job1_trigger2>  5000ms 2022/11/23 16:23:01
info: Sundial.Samples.MyJob[0]
      <job1>   <job1 job1_trigger2>  5000ms 2022/11/23 16:23:07

更多文档:https://furion.baiqian.ltd/docs/job/

文档

可以在主页找到Sundial文档:https://furion.baiqian.ltd/docs/job/

贡献

该存储库的主要目的是继续发展 Sundial 核心,使其更快、更易于使用。Sundial 的开发在Gitee上公开进行,我们感谢社区贡献错误修复和改进。

聚圣源各得其所的意思瓷都在线起名yy4060预备党员考察鉴定表农村电影我是余欢水百度云陈姓女孩起名给闺女起个洋气的什么小名好听全世界都以为我以身镇魔爸爸姓宋起名明字辈如何起名中国民主革命的中心内容京华烟云赵薇版女孩叠字取名起名大全1200个好听的女孩起名单梁桥式起重机厂家排名暗黑3炼狱机器周姓男宝宝起名大全2021不要生气dvc-an20是什么型号女孩起名的字win7开机密码机械行公司起名以诚实守信为荣果园起什么名字737王宝宝起名压力检测cta中华支教出生儿童起名大全淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化