[發明專利]一種基于JVM的非阻塞分布式計劃任務調度方法有效
| 申請號: | 202210668844.8 | 申請日: | 2022-06-14 |
| 公開(公告)號: | CN114756357B | 公開(公告)日: | 2022-10-14 |
| 發明(設計)人: | 孫恒濤;方漢林;傅和平 | 申請(專利權)人: | 浙江保融科技股份有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/455;G06F9/50;G06F9/52 |
| 代理公司: | 杭州華鼎知識產權代理事務所(普通合伙) 33217 | 代理人: | 魏亮 |
| 地址: | 310023 浙江省杭州市余*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 jvm 阻塞 分布式 計劃 任務 調度 方法 | ||
本發明提供一種基于JVM的非阻塞分布式計劃任務調度方法,在完全實現原有功能的基礎上,解決線程數量占用過多、分布式下有節點空跑線程的問題。為實現上述目的,本發明采用如下技術方案:應用于配置有kotlin語言庫及coroutines協程庫的JVM虛擬機中,包括:分布式計劃任務框架,還包括分布式協調組件;分布式協調組件中設置有通用非阻塞增刪改查接口作為分布式協調組件所在客戶端的非阻塞異步回調接口;通過協程封裝分布式協調組件的非阻塞異步回調接口,并設置非阻塞循環監聽器實現連續監聽;最終基于封裝后的協程非阻塞api重新實現一個本地節點緩存。本發明通過非阻塞改造,在執行任務的性能方面得以顯著的提升。
技術領域
本發明屬于分布式任務調度技術領域,尤其是一種基于JVM的非阻塞分布式計劃任務調度方法。
背景技術
計劃任務是指有計劃的定時運行或者周期性運行的程序,最常見的計劃任務包括了基于Linux的 “crontab”以及基于Windows的 “計劃任務程序”。但隨著新建項目越來越大,系統越來越復雜,現有的計劃任務就暴露出許多問題。 首先是高可用HA需求,當運行計劃任務的服務器一旦出現故障,所有的計劃任務將停止工作。 其次是性能問題,越來越多的大型計劃任務程序出現,對CPU/IO密集操作,單個節點已經無法滿足需求。因此就需要設計分布式計劃任務,通過協調多臺主機來執行大量的任務,解決高可用的問題。
這一問題在C語言環境下比較容易解決,例如專利號為CN201811615533.5的發明專利《數據同步的系統、方法、裝置和計算機存儲介質》中就公開了一種數據同步系統、方法、裝置和計算機存儲介質。所述系統包括數據監聽模塊、消息分發模塊、數據同步模塊、以及配置管理模塊;數據監聽模塊,用于對數據源進行監聽以獲取數據源的數據變更記錄;消息分發模塊,用于創建與數據源對應的消息隊列,將數據變更記錄加入到消息隊列中;配置管理模塊,用于管理數據源的同步配置參數;數據同步模塊,用于獲取同步配置參數,按照同步配置參數創建消費協程;由消費協程監聽消息隊列,按照同步配置參數將數據變更記錄更新到目標存儲中。這樣的技術方案實現于諸如Smalltalk、C++等編程語言中,但是無法實現于java環境下。
在java環境下,現有技術中通常采用XXL-JOB分布式任務調度系統來實現分布式計劃任務。例如專利申請號為202111626396 .7的發明專利申請《基于XXL-JOB分布式任務調度系統的路由策略》中就公開了及一種基于XXL-JOB分布式任務調度系統的路由策略,包括以下步驟:各執行器自身根據任務流控規則判斷當前是否可參與新任務;可執行新任務的執行器與調度中心之間確認系統標識,調度中心選定其中一臺執行器為任務調度機器;任務調度機器接收任務參數并執行;優勢在于:基于XXL-JOB分布式任務調度平臺第10種分片廣播路由策略,通過廣播模式廣播任務,所有任務流控規則驗證通過的執行器機器均會嘗試拉取任務,根據業務邏輯最終僅有一臺機器能完整的完成系統標記身份確認以及任務調度確認,降低了出現“搶占式”業務執行邏輯時的負載風險。由此可見,為了解決線程資源浪費的問題,現有技術把所有的任務放在任務調度中心,調度中心連接關系型數據庫,所有的數據放數據庫里面,靠數據庫鎖控制并發、保證調度的一致性。這種方案一定程度上緩解了線程資源消耗過大這個問題,任務調度中心使用數量有限的線程做所有任務的調度,主體邏輯放在一個無限循環里面,任務的觸發分發給工作節點,工作節點只需要一個任務一個線程持續運行就好,不需要更多的監聽線程。但中心化任務調度中心也帶來了性能有限、可擴展性降低、彈性調度變弱的缺點,并且在工作節點也是需要執行線程長期駐留的,屬于阻塞式代碼。
線程是比較重的資源,阻塞式代碼阻塞了線程,讓線程停止運行,并在一個地方長時間等待,資源消耗多、性能浪費。但這就是目前java環境下大多數代碼的編程方式。目前java下實現非阻塞只有回調式寫法,如Project Reactor、Vert.x,非阻塞回調式寫法代碼要求高,實現非常困難,難以編碼、調試、學習、排錯、代碼閱讀,這也導致了目前java環境下略微復雜功能的非阻塞代碼無法實現。
發明內容
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浙江保融科技股份有限公司,未經浙江保融科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210668844.8/2.html,轉載請聲明來源鉆瓜專利網。





