.NET Core開源任務排程平臺ScheduleMaster上新了
阿新 • • 發佈:2020-10-20
ScheduleMaster上一次比較大的更新還是在6月份,轉眼已經快過去4個月了,這段時間比較忙,中間只更新過一次修復了幾個小bug。要總結這次更新的話,必須要用“千呼萬喚始出來”了,因為這次不僅經歷的時間比較久,還帶來了大家期待已久的功能-多資料庫支援,再就是對.NET Framework的支援。
不熟悉的朋友可以先參考以往的介紹文章:
- https://www.cnblogs.com/hohoa/category/1628282.html
> 同時,專案也迎來了一個里程碑,那就是收到了第一個PR,瞬間感覺肩上責任重大[手動狗頭]。
先看一下本次的更新點。
### V2.2更新日誌 - 新增了對SQLServer和PostgreSQL的支援(來自[@xueandfeng](https://github.com/xueandfeng)的PR,非常感謝!) - 新增了對.NET Standard 2.0的支援 - Worker節點支援配置最大併發數 - HTTP任務支援自定義超時時間 - 修復了已知的bug
### 新功能可以做什麼 專案最初使用的Mysql作為資料持久化方式,從釋出開發,就有小夥伴一直問能不能支援其他資料庫,因為對.NET平臺的開發者來說使用SQLServer還是更多一些。但是那時候更多的考慮到整個專案部署的便捷性和跨平臺(docker一條龍服務),而且剛好那段時間沉迷於Mysql,所以毫不猶豫的選擇了它。雖然使用EntityFramework這樣的ORM作為資料訪問框架,但當時迫切的想完成核心功能快速發版,就沒有考慮支援多種型別資料庫,一直拖到現在。 在這過程中,支援多資料庫的需求實在太大,有很多小夥伴自己拉原始碼改改就用上了,也有熱心的小夥伴改完提了PR,不過我由於個人問題還是拖了一段時間到現在才處理。所以,經常用SQLServer或者更喜歡PostgreSQL的朋友有福了,再次感謝[@xueandfeng](https://github.com/xueandfeng)。 另外,專案正式支援.NET Standard 2.0,這意味著專案不僅僅能支援.NET Core程式,同時也能支援.NET Framework(4.6.1及以上)程式了,一張圖看個明明白白: ![netsdandard](https://img2020.cnblogs.com/blog/614524/202010/614524-20201019222634240-1502955637.png) > .NET 5馬上就要正式釋出了,據說.NET Standard就要成為歷史,當年費了好大勁才理清楚這幾個玩意的關係,轉眼說沒就沒了,我啊一口老血.........吐完繼續喊“.NET真香”
以上之外,worker節點可以支援配置最大併發數量了,這是Quartz.Net執行緒池的一個特性。之前收到鋤頭哥多次反饋大任務量同時執行時會有丟失的問題[#38](https://github.com/hey-hoho/ScheduleMasterCore/issues/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還是會繼續關注,這個專案還是會繼續做下去。
最後,佛系推廣一下。
作者唯一開源地址![GitHub stars](https://img.shields.io/github/stars/hey-hoho/ScheduleMasterCore?style=social) ![GitHub forks](https://img.shields.io/github/forks/hey-hoho/ScheduleMasterCore?style=social):
* https://github.com/hey-hoho/ScheduleMasterCore
* https://gitee.com/hey-hoho/ScheduleMasterCore (只從github同步)
文件(還在逐步更新中):
* https://github.com/hey-hoho/ScheduleMasterCore/wiki
感謝大家支援~
### V2.2更新日誌 - 新增了對SQLServer和PostgreSQL的支援(來自[@xueandfeng](https://github.com/xueandfeng)的PR,非常感謝!) - 新增了對.NET Standard 2.0的支援 - Worker節點支援配置最大併發數 - HTTP任務支援自定義超時時間 - 修復了已知的bug
### 新功能可以做什麼 專案最初使用的Mysql作為資料持久化方式,從釋出開發,就有小夥伴一直問能不能支援其他資料庫,因為對.NET平臺的開發者來說使用SQLServer還是更多一些。但是那時候更多的考慮到整個專案部署的便捷性和跨平臺(docker一條龍服務),而且剛好那段時間沉迷於Mysql,所以毫不猶豫的選擇了它。雖然使用EntityFramework這樣的ORM作為資料訪問框架,但當時迫切的想完成核心功能快速發版,就沒有考慮支援多種型別資料庫,一直拖到現在。 在這過程中,支援多資料庫的需求實在太大,有很多小夥伴自己拉原始碼改改就用上了,也有熱心的小夥伴改完提了PR,不過我由於個人問題還是拖了一段時間到現在才處理。所以,經常用SQLServer或者更喜歡PostgreSQL的朋友有福了,再次感謝[@xueandfeng](https://github.com/xueandfeng)。 另外,專案正式支援.NET Standard 2.0,這意味著專案不僅僅能支援.NET Core程式,同時也能支援.NET Framework(4.6.1及以上)程式了,一張圖看個明明白白: ![netsdandard](https://img2020.cnblogs.com/blog/614524/202010/614524-20201019222634240-1502955637.png) >