.NET Core開源任務調度平台ScheduleMaster上新了
- 2020 年 10 月 19 日
- 筆記
- ScheduleMaster
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還是會繼續關注,這個項目還是會繼續做下去。
最後,佛系推廣一下。
作者唯一開源地址
:
文檔(還在逐步更新中):
感謝大家支持~