又见百小僧,.NET 分布式毫秒级定时任务 Sundial 面世 🎉
何许人也
Hi,我是百小僧,我又来了。
1993年05月生,双子座,2008年高中接触编程,进入大学后成痴迷状态,于 2012年09月创业至今十年有余,跌跌撞撞还在路上,个人简介不过多阐述,了解更多请移步 【关于作者】
开源十年,坚持每年至少开源一款项目,如今已有30个有余,十年间已是超6万人的群主。开源十年,我都做了啥?
😊 创造了国内超流行的 .NET 框架 Furion:https://gitee.com/dotnetchina/Furion
😊 创造了前端弹窗组件 LayX:https://gitee.com/monksoul/LayX
😊 创办了Gitee 平台超有知名度的 dotNET China 组织:https://gitee.com/dotnetchina
😊 创造了分布式毫秒级定时任务 Sundial:https://gitee.com/dotnetchina/Sundial
😊 创造了分布式事件总线 Jaina:https://gitee.com/dotnetchina/Jaina
😊 .NET 全能 Cron 表达式解析 TimeCrontab 作者:https://gitee.com/dotnetchina/TimeCrontab
😊 曾经风靡一时的 Hui 框架作者:https://gitee.com/monksoul/Hui
😊 曾经被 NodeJS 官方推荐的 Monk.Node 框架作者:https://gitee.com/monksoul/Monk.Node
😊 前端 Javascript 验证库的作者:https://gitee.com/monksoul/availdate.js
由于篇幅优先,就不一一例举,感兴趣的可以去访问我 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
一睹尊容
Sundial
.NET 功能齐全的开源分布式作业调度系统,可从最小的应用程序到大型企业系统使用。
特性
- 简化调度作业
- 支持作业监视器
- 支持作业执行器
- 支持自定义作业存储组件(持久化)
- 支持自定义策略执行
- 内置周期、Cron 作业
- 支持自定义作业触发器
- 支持依赖注入控制(含 HTTP 控制支持)
- 高内聚,低耦合,使代码更简单
- 很小,仅
41KB
- 无第三方依赖
- 可在
Windows/Linux/MacOS
守护进程部署 - 支持分布式、集群(多实例)部署
- 支持负载均衡(基于 TCP/IP)
- 高质量代码和良好单元测试
- 跨平台,支持 .NET5+
安装
Install-Package Sundial
dotnet add package Sundial
快速入门
我们在主页上有不少例子,这是让您入门的第一个:
- 定义作业,并实现
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; } }
- 在
Startup.cs
注册AddSchedule
服务和作业:
services.AddSchedule(options => { options.AddJob<MyJob>(Triggers.PeriodSeconds(5) , Triggers.Minutely()); });
- 运行项目:
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
文档
您可以在主页找到 Sundial 文档。
贡献
该存储库的主要目的是继续发展 Sundial 核心,使其更快、更易于使用。Sundial 的开发在 Gitee 上公开进行,我们感谢社区贡献错误修复和改进。
许可证
Sundial 采用 MIT 开源许可证。
MIT License Copyright (c) 2020-2022 百小僧, Baiqian Co.,Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
孤芳自赏
纵你阅人何其多,再无一人恰似我。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
国内超受欢迎的 .NET 企业级框架 Furion v4.8.0 发布,超过 50 项改进
在过去两年,实现 Furion 从无到有,编写文档已逾三百万字,过程心酸开源人自知。 这一路日夜兼程,嘲讽批评常伴眼耳,即便辛苦无奈、想过放弃,但为了那微不足道的成就感依然努力着。 当然,也收获了不少... 越来越多拥趸者,越发精湛技术能力,更高层次思维模式,还有许多跨界跨行朋友。 在 《开源指北》中,我曾说道:“开源如同人的脸,好坏一面便知,缺点可能会受到嘲讽批评,优点也会收获赞扬尊重。别担心,他们正在塑造更好的你。” 所以,这一次重新起航,重塑 Furion 重塑自己。也许未来在某个 IT 圈但凡有人谈起 .NET 还能瞟到 Furion 的身影。 https://furion.baiqian.ltd/docs/upgrade/ v4.8.1 版本细节:https://gitee.com/dotnetchina/Furion/issues/I62RX3 2022.11.24 v4.8.0 版本细节:https://gitee.com/dotnetchina/Furion/issues/I62NZV 2022.11.23 新特性 [新增] 🎉 全新的定时任务模块 4.8.0 【查看...
- 下一篇
ShopWind V3.4.3 更新,优化社区团购门店自提模块
ShopWind 开源电商系统 v3.4.3 版本更新,本次更新新增社区团购、门店自提、团长入驻功能模块。适合搭建成类似美团优选、橙心优选等社区团购类系统平台。更新内容模块大家一起一睹为快吧! PC体验 前台体验:http://test.shopwind.net买家测试账号:buyer 密码:123456 支付密码:123456 后台体验:http://test.shopwind.net/admin平台管理员账号:admin 密码:123456 商家体验:http://test.shopwind.net/seller/login.html商家测试账号:seller 密码:123456 移动端体验(商业版) H5端体验:https://h5.shopwind.net买家测试账号:18978189192 密码:111111 支付密码:111111 小程序/APP体验(商业版) 微信小程序:https://h5.shopwind.net/20210507181842.jpg Android(安卓版)体验:https://appgallery.huawei.com/#/app/C1034484...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境