[發明專利]一種基于JVM的非阻塞分布式計劃任務調度方法有效
| 申請號: | 202210668844.8 | 申請日: | 2022-06-14 |
| 公開(公告)號: | CN114756357B | 公開(公告)日: | 2022-10-14 |
| 發明(設計)人: | 孫恒濤;方漢林;傅和平 | 申請(專利權)人: | 浙江保融科技股份有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/455;G06F9/50;G06F9/52 |
| 代理公司: | 杭州華鼎知識產權代理事務所(普通合伙) 33217 | 代理人: | 魏亮 |
| 地址: | 310023 浙江省杭州市余*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 jvm 阻塞 分布式 計劃 任務 調度 方法 | ||
1.一種基于JVM的非阻塞分布式計劃任務調度方法,應用于配置有kotlin語言庫及coroutines協程庫的JVM虛擬機中,其特征在于,包括:分布式計劃任務框架,所述分布式計劃任務框架內包含:
并發任務執行器:調用應用邏輯實際執行的包;
定時任務調度器:進行任務的包括配置、啟動、暫停、停止、刪除的生命周期操作;
還包括分布式協調組件;分布式協調組件中設置有通用非阻塞增刪改查接口作為分布式協調組件所在客戶端的非阻塞異步回調接口;
coroutines協程庫對接分布式協調組件的客戶端的非阻塞異步回調接口;
通過協程封裝分布式協調組件的非阻塞異步回調接口,并設置非阻塞循環監聽器實現連續監聽;最終基于封裝后的協程非阻塞api重新實現一個本地節點緩存;定時任務調度器在新的計劃任務實例啟動時,向分布式協調組件注冊自己的任務實例信息、并獲取已有的當前任務其他所有實例信息,通過選主操作確定當前的任務主節點;非阻塞異步回調接口創建任務時設置分片,主節點按任務實例ip信息,采用平均、輪詢策略分配分片執行節點信息,寫入分布式協調組件;
還包括java客戶端,通過java客戶端執行任務;當分布式協調組件為ZooKeeper組件時采用二級動態封裝;其中,第一級封裝調用suspendCancellableCoroutine方法,回調方法入參產生CancellableContinuation實例;利用該實例進行第二級封裝;第二級封裝中各個需要轉換協程的ZooKeeper方法生成對應的AsyncCallback子接口的匿名內部類,所述匿名內部類通過內部調用傳入的CancellableContinuation實例的resume、resumeWithException方法來和協程對接。
2.根據權利要求1所述的一種基于JVM的非阻塞分布式計劃任務調度方法,其特征在于,封裝過程中對ZooKeeper節點樹添加增刪改查操作,并在同時執行的操作數量大于2的時候,通過協程封裝的形式調用異步事務提交接口。
3.根據權利要求1所述的一種基于JVM的非阻塞分布式計劃任務調度方法,其特征在于,封裝了一個包裝類循環監聽器,每次收到事件后,將自身監聽器自動添加到ZooKeeper組件,然后再執行包裝類循環監聽器的邏輯,從而實現連續監聽。
4.根據權利要求3所述的一種基于JVM的非阻塞分布式計劃任務調度方法,其特征在于,還實現了非阻塞本地緩存及緩存監聽,封裝后的協程非阻塞api重新實現一個ZooKeeper本地節點緩存;
具體實現方式為:使用散列表持有數據,非阻塞鎖控制并發,循環監聽器實時監聽遠程ZooKeeper服務端節點子樹變動的狀態。
5.根據權利要求1所述的一種基于JVM的非阻塞分布式計劃任務調度方法,其特征在于,所述并發任務執行器調用應用邏輯實際執行的包,使用協程的async+awaitAll方法結構化并發實現。
6.根據權利要求1所述的一種基于JVM的非阻塞分布式計劃任務調度方法,其特征在于,定時任務調度邏輯放在定時任務列表,核心邏輯是在協程里實現無限循環,進行定時計算,獲取下一個執行時間,延遲與當前時間的間隔,然后調用這個任務的并發任務執行器;并發任務執行器收到任務調度,判斷當前節點是不是這個任務當前分片的執行節點,如果是就執行這個任務,否則略過。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于浙江保融科技股份有限公司,未經浙江保融科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210668844.8/1.html,轉載請聲明來源鉆瓜專利網。





