[發(fā)明專利]一種基于elastic-job框架可單機(jī)彈性擴(kuò)容的任務(wù)分片方法有效
| 申請?zhí)枺?/td> | 201811038389.3 | 申請日: | 2018-09-06 |
| 公開(公告)號: | CN109165088B | 公開(公告)日: | 2022-04-19 |
| 發(fā)明(設(shè)計)人: | 高士翔 | 申請(專利權(quán))人: | 華泰證券股份有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/50 |
| 代理公司: | 南京科知維創(chuàng)知識產(chǎn)權(quán)代理有限責(zé)任公司 32270 | 代理人: | 杜依民 |
| 地址: | 210000 *** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 elastic job 框架 單機(jī) 彈性 擴(kuò)容 任務(wù) 分片 方法 | ||
本發(fā)明提供一種基于elastic?job框架可單機(jī)彈性擴(kuò)容的任務(wù)分片方法,主要包括6個步驟,主要過程為任務(wù)實例建立,基于elastic?job框架編寫任務(wù)代碼;定義任務(wù)聲明(.xml);定義任務(wù)描述(.properties);任務(wù)在運(yùn)行時刻解析分片項,以及任務(wù)的自定義參數(shù);根據(jù)構(gòu)建的實例矩陣,由用戶編寫的業(yè)務(wù)分片策略,自行決定如何并發(fā)處理不同的數(shù)據(jù),或是執(zhí)行可并發(fā)的程序;分布式環(huán)境中的服務(wù)擴(kuò)容或縮容。本發(fā)明提出一種可單機(jī)彈性擴(kuò)容的任務(wù)分片方法,使得elastic?job可以適應(yīng)單機(jī)多線程執(zhí)行并發(fā)任務(wù)的場景,大大提高了服務(wù)并發(fā)的效率與資源利用率。這種分片方法不需要增加過多額外的開發(fā)成本,且支持動態(tài)擴(kuò)容縮容。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及一種基于elastic-job框架可單機(jī)彈性擴(kuò)容的任務(wù)分片方法。
背景技術(shù)
計算機(jī)軟件系統(tǒng)中,常需要對大量數(shù)據(jù)加以統(tǒng)計、匯總并將其結(jié)果保存。提前準(zhǔn)備數(shù)據(jù)的過程可以在指定的任何時間由系統(tǒng)自動執(zhí)行。由系統(tǒng)自動執(zhí)行的任務(wù)稱之為后臺任務(wù);所有在指定時間一次性或周期性執(zhí)行的后臺任務(wù)稱之為后臺定時任務(wù),簡稱定時任務(wù)。
定時任務(wù)調(diào)度框架負(fù)責(zé)對定時任務(wù)的調(diào)度與執(zhí)行提供靈活多樣的定時策略,對定時任務(wù)的執(zhí)行實時監(jiān)控。有些調(diào)度框架還會對任務(wù)部署或任務(wù)可靠性提供一定的擴(kuò)展功能,例如分布式彈性部署方案、服務(wù)心跳機(jī)制等。
現(xiàn)有的JAVA實現(xiàn)的定時任務(wù)調(diào)度框架的實現(xiàn)有Timer、Quartz以及elastic-job等。Timer是JDK 1.4之后提供的API。可以使用Timer的方法指定調(diào)度的規(guī)則,并且與Spring框架有較高的集成度,可以通過配置注冊定時任務(wù)代碼。但是,Timer的任務(wù)調(diào)度缺少例如crontab那樣靈活的配置方式。Quartz是一個計劃調(diào)度的容器,支持crontab語法,并可以與spring集成實現(xiàn)線程池管理。但Quartz關(guān)注點在于定時任務(wù)而非數(shù)據(jù),并無一套根據(jù)數(shù)據(jù)處理而定制化的流程。雖然Quartz可以基于數(shù)據(jù)庫實現(xiàn)作業(yè)的高可用,但缺少分布式并行執(zhí)行作業(yè)的功能。
elastic-job是基于zookeeper的開源分布式定時任務(wù)框架。它支持分布式部署、任務(wù)分片、彈性擴(kuò)容縮容、失效轉(zhuǎn)移以及狀態(tài)監(jiān)控。它與Spring框架也有較高的集成度。因此,elastic-job是現(xiàn)有企業(yè)級JAVA定時任務(wù)框架的成熟選擇。elastic-job支持同一任務(wù)的分布式分片執(zhí)行,即分配到任務(wù)分片項的機(jī)器會并發(fā)執(zhí)行任務(wù)。由于一個IP下elastic-job只可以部署一個服務(wù),因此原生服務(wù)中同一個任務(wù)在一臺機(jī)器上只有一個實例,其彈性擴(kuò)容無法達(dá)到單機(jī)多線程的粒度,具有一定的局限性。
因此,本發(fā)明提出一種可單機(jī)彈性擴(kuò)容的任務(wù)分片方法,使得elastic-job可以適應(yīng)單機(jī)多線程執(zhí)行并發(fā)任務(wù)的場景,大大提高了服務(wù)并發(fā)的效率與資源利用率。這種分片方法不需要增加過多額外的開發(fā)成本,且支持動態(tài)擴(kuò)容縮容。
發(fā)明內(nèi)容
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)的不足和問題,使開發(fā)者在使用elastic-job框架的時,可以獲得一種更靈活、并發(fā)粒度更高的架構(gòu),節(jié)約部署的服務(wù)器成本。
本發(fā)明包括以下步驟:
步驟1:建立任務(wù)實例,基于elastic-job框架編寫任務(wù)代碼;elastic-job框架的回調(diào)入口函數(shù)參數(shù)中包含本次任務(wù)調(diào)度分配的分片項,讀取所述分片項并記錄;
步驟2:定義任務(wù)聲明(.xml);在啟動程序中加載作業(yè)聲明xml,生成elastic-job任務(wù)并注冊到zookeeper的服務(wù)中;需要利用步驟1編寫的任務(wù)類聲明多個任務(wù)實例springbean,并且注冊多個所述任務(wù)實例;
步驟3:定義任務(wù)描述(.properties);所述任務(wù)實例的所述分片項個數(shù)通過參考可部署的機(jī)器數(shù)量自行決定;任務(wù)的自定義參數(shù),用以作為運(yùn)行時的配置信息;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華泰證券股份有限公司,未經(jīng)華泰證券股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811038389.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 基于elastic組件的日志分析方法
- 一種基于elastic-job框架可單機(jī)彈性擴(kuò)容的任務(wù)分片方法
- 備付金數(shù)據(jù)實時上報方法、裝置、計算機(jī)設(shè)備和存儲介質(zhì)
- 數(shù)據(jù)查詢方法、系統(tǒng)及計算機(jī)可讀存儲介質(zhì)
- 一種ELK日志監(jiān)控的改進(jìn)方法
- 藥品清單異常檢測方法、裝置、計算機(jī)設(shè)備和存儲介質(zhì)
- 一種集成化交互式Elastic MapReduce作業(yè)管理方法
- 基于Docker的快捷集成式Elastic MapReduce服務(wù)系統(tǒng)及實現(xiàn)方法
- 一種基于Elastic Search的雙活實時數(shù)據(jù)倉庫建設(shè)方法
- 一種定時任務(wù)調(diào)度的優(yōu)化方法、計算機(jī)設(shè)備及存儲介質(zhì)
- 一種LTE物理層在多核DSP上動靜態(tài)結(jié)合調(diào)度的方法
- JOB分配系統(tǒng)及方法
- 一種基于作業(yè)時序緩存共享的方法
- 海量消息的處理方法和裝置
- Jenkins軟件的維護(hù)方法、存儲介質(zhì)、電子設(shè)備及系統(tǒng)
- 一種業(yè)務(wù)調(diào)度方法、設(shè)備和存儲介質(zhì)
- 一種基于優(yōu)先級的深度學(xué)習(xí)任務(wù)調(diào)度方法及裝置
- 任務(wù)調(diào)度方法、裝置、存儲介質(zhì)和電子設(shè)備
- 一種spring batch批處理作業(yè)網(wǎng)頁維護(hù)的方法及系統(tǒng)
- 基于JAVA的防止父子依賴JOB執(zhí)行后數(shù)據(jù)錯亂的方法及系統(tǒng)





