真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些

這篇文章主要講解了“分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些”吧!

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比新華網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式新華網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋新華地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

基本介紹

項(xiàng)目開發(fā)中,常常以下場(chǎng)景需要分布式任務(wù)調(diào)度:

  • 同一服務(wù)多個(gè)實(shí)例的任務(wù)存在互斥時(shí),需要統(tǒng)一協(xié)調(diào)

  • 定時(shí)任務(wù)的執(zhí)行需要支持高可用、監(jiān)控運(yùn)維、故障告警

  • 需要統(tǒng)一管理和追蹤各個(gè)服務(wù)節(jié)點(diǎn)定時(shí)任務(wù)的運(yùn)行情況,以及任務(wù)屬性信息,例如任務(wù)所屬服務(wù)、所屬責(zé)任人

因此,XXL-JOB應(yīng)運(yùn)而生: XXL-JOB是一個(gè)開源的輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速、學(xué)習(xí)簡(jiǎn)單、輕量級(jí)、易擴(kuò)展、開箱即用,其中“XXL”是主要作者,大眾點(diǎn)評(píng)許雪里名字的縮寫

自2015年開源以來,已接入數(shù)百家公司的線上產(chǎn)品線,接入場(chǎng)景涉及電商業(yè)務(wù),O2O業(yè)務(wù)和大數(shù)據(jù)作業(yè)等

功能特性

主要功能特性如下:

  • 簡(jiǎn)單靈活提供Web頁(yè)面對(duì)任務(wù)進(jìn)行管理,管理系統(tǒng)支持用戶管理、權(quán)限控制; 支持容器部署; 支持通過通用HTTP提供跨平臺(tái)任務(wù)調(diào)度;

  • 豐富的任務(wù)管理功能支持頁(yè)面對(duì)任務(wù)CRUD操作; 支持在頁(yè)面編寫腳本任務(wù)、命令行任務(wù)、Java代碼任務(wù)并執(zhí)行; 支持任務(wù)級(jí)聯(lián)編排,父任務(wù)執(zhí)行結(jié)束后觸發(fā)子任務(wù)執(zhí)行; 支持設(shè)置任務(wù)優(yōu)先級(jí); 支持設(shè)置指定任務(wù)執(zhí)行節(jié)點(diǎn)路由策略,包括輪詢、隨機(jī)、廣播、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等; 支持Cron方式、任務(wù)依賴、調(diào)度中心API接口方式觸發(fā)任務(wù)執(zhí)行

  • 高性能調(diào)度中心基于線程池多線程觸發(fā)調(diào)度任務(wù),快任務(wù)、慢任務(wù)基于線程池隔離調(diào)度,提供系統(tǒng)性能和穩(wěn)定性; 任務(wù)調(diào)度流程全異步化設(shè)計(jì)實(shí)現(xiàn),如異步調(diào)度、異步運(yùn)行、異步回調(diào)等,有效對(duì)密集調(diào)度進(jìn)行流量削峰;

  • 高可用任務(wù)調(diào)度中心、任務(wù)執(zhí)行節(jié)點(diǎn)均 集群部署,支持動(dòng)態(tài)擴(kuò)展、故障轉(zhuǎn)移 支持任務(wù)配置路由故障轉(zhuǎn)移策略,執(zhí)行器節(jié)點(diǎn)不可用是自動(dòng)轉(zhuǎn)移到其他節(jié)點(diǎn)執(zhí)行 支持任務(wù)超時(shí)控制、失敗重試配置 支持任務(wù)處理阻塞策略:調(diào)度當(dāng)任務(wù)執(zhí)行節(jié)點(diǎn)忙碌時(shí)來不及執(zhí)行任務(wù)的處理策略,包括:串行、拋棄、覆蓋策略

  • 易于監(jiān)控運(yùn)維支持設(shè)置任務(wù)失敗郵件告警,預(yù)留接口支持短信、釘釘告警; 支持實(shí)時(shí)查看任務(wù)執(zhí)行運(yùn)行數(shù)據(jù)統(tǒng)計(jì)圖表、任務(wù)進(jìn)度監(jiān)控?cái)?shù)據(jù)、任務(wù)完整執(zhí)行日志;

系統(tǒng)設(shè)計(jì)

1 設(shè)計(jì)思路

將調(diào)度行為抽象形成“調(diào)度中心”公共平臺(tái),而平臺(tái)自身并不承擔(dān)業(yè)務(wù)邏輯,“調(diào)度中心”負(fù)責(zé)發(fā)起調(diào)度請(qǐng)求; 將任務(wù)抽象成分散的JobHandler,交由“執(zhí)行器”統(tǒng)一管理,“執(zhí)行器”負(fù)責(zé)接收調(diào)度請(qǐng)求并執(zhí)行對(duì)應(yīng)的JobHandler中業(yè)務(wù)邏輯; 因此,“調(diào)度”和“任務(wù)”兩部分可以相互解耦,提高系統(tǒng)整體穩(wěn)定性和擴(kuò)展性;

2 系統(tǒng)組成

  • 調(diào)度模塊(調(diào)度中心): 負(fù)責(zé)管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請(qǐng)求,自身不承擔(dān)業(yè)務(wù)代碼。調(diào)度系統(tǒng)與任務(wù)解耦,提高了系統(tǒng)可用性和穩(wěn)定性,同時(shí)調(diào)度系統(tǒng)性能不再受限于任務(wù)模塊; 支持可視化、簡(jiǎn)單且動(dòng)態(tài)的管理調(diào)度信息,包括任務(wù)新建,更新,刪除,任務(wù)報(bào)警等,所有上述操作都會(huì)實(shí)時(shí)生效,同時(shí)支持監(jiān)控調(diào)度結(jié)果以及執(zhí)行日志,支持執(zhí)行器Failover

  • 執(zhí)行模塊(執(zhí)行器): 負(fù)責(zé)接收調(diào)度請(qǐng)求并執(zhí)行任務(wù)邏輯。任務(wù)模塊專注于任務(wù)的執(zhí)行等操作,開發(fā)和維護(hù)更加簡(jiǎn)單和高效; 接收“調(diào)度中心”的執(zhí)行請(qǐng)求、終止請(qǐng)求和日志請(qǐng)求等

分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些

3 工作原理

分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些

  • 任務(wù)執(zhí)行器根據(jù)配置的調(diào)度中心的地址,自動(dòng)注冊(cè)到調(diào)度中心

  • 達(dá)到任務(wù)觸發(fā)條件,調(diào)度中心下發(fā)任務(wù)

  • 執(zhí)行器基于線程池執(zhí)行任務(wù),并把執(zhí)行結(jié)果放入內(nèi)存隊(duì)列中、把執(zhí)行日志寫入日志文件中

  • 執(zhí)行器的回調(diào)線程消費(fèi)內(nèi)存隊(duì)列中的執(zhí)行結(jié)果,主動(dòng)上報(bào)給調(diào)度中心

  • 當(dāng)用戶在調(diào)度中心查看任務(wù)日志,調(diào)度中心請(qǐng)求任務(wù)執(zhí)行器,任務(wù)執(zhí)行器讀取任務(wù)日志文件并返回日志詳情

4 HA設(shè)計(jì)

4.1 調(diào)度中心高可用

調(diào)度中心支持多節(jié)點(diǎn)部署,基于數(shù)據(jù)庫(kù)行鎖保證同時(shí)只有一個(gè)調(diào)度中心節(jié)點(diǎn)觸發(fā)任務(wù)調(diào)度,參考com.xxl.job.admin.core.thread.JobScheduleHelper#start

Connection conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
connAutoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
preparedStatement = conn.prepareStatement(  "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
preparedStatement.execute();

# 觸發(fā)任務(wù)調(diào)度

# 事務(wù)提交
 conn.commit();

4.2 任務(wù)調(diào)度高可用

  • 路由策略 調(diào)度中心基于路由策略路由選擇一個(gè)執(zhí)行器節(jié)點(diǎn)執(zhí)行任務(wù),XXL-JOB提供了如下路由策略保證任務(wù)調(diào)度高可用: 忙碌轉(zhuǎn)移策略: 下發(fā)任務(wù)前向執(zhí)行器節(jié)點(diǎn)發(fā)起rpc心跳請(qǐng)求查詢是否忙碌,如果執(zhí)行器節(jié)點(diǎn)返回忙碌則轉(zhuǎn)移到其他執(zhí)行器節(jié)點(diǎn)執(zhí)行(參考 com.xxl.job.admin.core.route.strategy.ExecutorRouteBusyover) 故障轉(zhuǎn)移策略: 下發(fā)任務(wù)前向執(zhí)行器節(jié)點(diǎn)發(fā)起rpc心跳請(qǐng)求查詢是否在線,如果執(zhí)行器節(jié)點(diǎn)沒返回或者返回不可用則轉(zhuǎn)移到其他執(zhí)行器節(jié)點(diǎn)執(zhí)行 (參考com.xxl.job.admin.core.route.strategy.ExecutorRouteFailover)

  • 阻塞處理策略 當(dāng)執(zhí)行器節(jié)點(diǎn)存在多個(gè)相同任務(wù)id的任務(wù)未執(zhí)行完成,則需要基于阻塞策略對(duì)任務(wù)進(jìn)行取舍: 串行策略:默認(rèn)策略,任務(wù)進(jìn)行排隊(duì)、丟棄舊任務(wù)策略、丟棄新任務(wù)策略(參考:com.xxl.job.core.biz.impl.ExecutorBizImpl#run)

同類框架比較

特性quartzelastic-job-litexxl-jobLTS
依賴MySQL、jdkjdk、zookeepermysql、jdkjdk、zookeeper、maven
高可用多節(jié)點(diǎn)部署,通過競(jìng)爭(zhēng)數(shù)據(jù)庫(kù)鎖來保證只有一個(gè)節(jié)點(diǎn)執(zhí)行任務(wù)通過zookeeper的注冊(cè)與發(fā)現(xiàn),可以動(dòng)態(tài)的添加服務(wù)器基于競(jìng)爭(zhēng)數(shù)據(jù)庫(kù)鎖保證只有一個(gè)節(jié)點(diǎn)執(zhí)行任務(wù),支持水平擴(kuò)容??梢允謩?dòng)增加定時(shí)任務(wù),啟動(dòng)和暫停任務(wù),有監(jiān)控集群部署,可以動(dòng)態(tài)的添加服務(wù)器??梢允謩?dòng)增加定時(shí)任務(wù),啟動(dòng)和暫停任務(wù)。有監(jiān)控
任務(wù)分片×
管理界面×
難易程度簡(jiǎn)單簡(jiǎn)單簡(jiǎn)單略復(fù)雜
高級(jí)功能-彈性擴(kuò)容,多種作業(yè)模式,失效轉(zhuǎn)移,運(yùn)行狀態(tài)收集,多線程處理數(shù)據(jù),冪等性,容錯(cuò)處理,spring命名空間支持彈性擴(kuò)容,分片廣播,故障轉(zhuǎn)移,Rolling實(shí)時(shí)日志,GLUE(支持在線編輯代碼,免發(fā)布),任務(wù)進(jìn)度監(jiān)控,任務(wù)依賴,數(shù)據(jù)加密,郵件報(bào)警,運(yùn)行報(bào)表,國(guó)際化支持spring,spring boot,業(yè)務(wù)日志記錄器,SPI擴(kuò)展支持,故障轉(zhuǎn)移,節(jié)點(diǎn)監(jiān)控,多樣化任務(wù)執(zhí)行結(jié)果支持,F(xiàn)ailStore容錯(cuò),動(dòng)態(tài)擴(kuò)容。
版本更新半年沒更新2年沒更新最近有更新1年沒更新

使用

快速上手

具體如何快速上手使用,官方文檔:http://www.xuxueli.com/xxl-job/ 已經(jīng)介紹得比較詳細(xì)和清楚,不再贅述

注意事項(xiàng)

  • 1 時(shí)鐘同步問題調(diào)度中心和任務(wù)執(zhí)行器需要時(shí)間同步,同步時(shí)間誤差需要在3分鐘內(nèi),否則拋出異常 參考:com.xxl.rpc.remoting.provider.XxlRpcProviderFactory#invokeService

if (System.currentTimeMillis() - xxlRpcRequest.getCreateMillisTime() > 3*60*1000) {
	xxlRpcResponse.setErrorMsg("The timestamp difference between admin and executor exceeds the limit.");
	return xxlRpcResponse;
}
  • 2 時(shí)區(qū)問題任務(wù)由調(diào)度中心觸發(fā),按照在調(diào)度中心設(shè)置任務(wù)的cron表達(dá)式觸發(fā)時(shí),需要注意部署調(diào)度中心的機(jī)器所在的時(shí)區(qū),按照該時(shí)區(qū)定制化cron表達(dá)式

  • 3 任務(wù)執(zhí)行中服務(wù)宕掉問題調(diào)度中心完成任務(wù)下發(fā),執(zhí)行器在執(zhí)行任務(wù)的過程中,如果執(zhí)行器突然服務(wù)宕掉,會(huì)導(dǎo)致任務(wù)的執(zhí)行問題在調(diào)度中心是執(zhí)行中,調(diào)度中心并不會(huì)發(fā)起失敗重試。即使任務(wù)設(shè)置了超時(shí)時(shí)間,執(zhí)行器宕掉導(dǎo)致導(dǎo)致任務(wù)長(zhǎng)時(shí)間未執(zhí)行完成,調(diào)度中心界面也不會(huì)看到任務(wù)超時(shí),因?yàn)槿蝿?wù)超時(shí)是由執(zhí)行器檢測(cè)的并上報(bào)給調(diào)度中心的

因此遇到任務(wù)長(zhǎng)時(shí)間未執(zhí)行完成,可以關(guān)注是否發(fā)生了執(zhí)行器突然服務(wù)宕掉

  • 4 優(yōu)雅停機(jī)問題執(zhí)行器執(zhí)行任務(wù)基于線程池異步執(zhí)行,當(dāng)需要重啟時(shí)需要注意線程池中還有未執(zhí)行完成任務(wù)的問題,需要優(yōu)雅停機(jī),可以直接基于XxlJobExecutor.destroy()優(yōu)雅停機(jī),注意該方法在v2.0.2之前的版本存在bug導(dǎo)致無法優(yōu)雅停機(jī),v2.0.2及之后的版本才修復(fù)(參考:https://github.com/xuxueli/xxl-job/issues/727)

  • 5 失敗重試問題當(dāng)執(zhí)行器節(jié)點(diǎn)部分服務(wù)不可用,例如節(jié)點(diǎn)磁盤損壞,但在調(diào)度中心仍然處于在線時(shí),調(diào)度中心仍可能基于路由策略(包括故障轉(zhuǎn)移策略)路由到該未下線的節(jié)點(diǎn),并不斷重試,不斷失敗,導(dǎo)致重試次數(shù)耗盡。所以路由策略盡量不要采用固定化策略,例如固定第一個(gè)、固定最后一個(gè)

感謝各位的閱讀,以上就是“分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


當(dāng)前名稱:分布式任務(wù)調(diào)度平臺(tái)XXL-JOB的功能有哪些
分享網(wǎng)址:http://weahome.cn/article/giooip.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部