來(lái)源:EFbiz
blog.csdn.net/guyue35/article/details/84883408
把分散的,可靠性差的計(jì)劃任務(wù)納入統(tǒng)一的平臺(tái),并實(shí)現(xiàn)集群管理調(diào)度和分布式部署的一種定時(shí)任務(wù)的管理方式。叫做分布式定時(shí)任務(wù)。
elastic-job 是由當(dāng)當(dāng)網(wǎng)基于quartz 二次開(kāi)發(fā)之后的分布式調(diào)度解決方案 , 由兩個(gè)相對(duì)獨(dú)立的子項(xiàng)目Elastic-Job-Lite和Elastic-Job-Cloud組成 。
Elastic-Job-Lite定位為輕量級(jí)無(wú)中心化解決方案,使用jar包的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù)。
Elastic-Job-Cloud使用Mesos + Docker(TBD)的解決方案,額外提供資源治理、應(yīng)用分發(fā)以及進(jìn)程隔離等服務(wù)
亮點(diǎn):
elastic-job結(jié)合了quartz非常優(yōu)秀的時(shí)間調(diào)度功能,并且利用ZooKeeper實(shí)現(xiàn)了靈活的分片策略。除此之外,還加入了大量實(shí)用的監(jiān)控和管理功能,
以及其開(kāi)源社區(qū)活躍、文檔齊全、代碼優(yōu)雅等優(yōu)點(diǎn),是分布式任務(wù)調(diào)度框架的推薦選擇。
由于elastic-job-lite 不支持動(dòng)態(tài)添加作業(yè),此處僅貼上elastic-job-Cloud架構(gòu)圖
由個(gè)人開(kāi)源的一個(gè)輕量級(jí)分布式任務(wù)調(diào)度框架 ,主要分為 調(diào)度中心和執(zhí)行器兩部分 , 調(diào)度中心在啟動(dòng)初始化的時(shí)候,會(huì)默認(rèn)生成執(zhí)行器的RPC代理
對(duì)象(http協(xié)議調(diào)用), 執(zhí)行器項(xiàng)目啟動(dòng)之后, 調(diào)度中心在觸發(fā)定時(shí)器之后通過(guò)jobHandle 來(lái)調(diào)用執(zhí)行器項(xiàng)目里面的代碼,核心功能和elastic-job差不多
,同時(shí)技術(shù)文檔比較完善
系統(tǒng)架構(gòu)圖:
quartz 的常見(jiàn)集群方案如下,通過(guò)在數(shù)據(jù)庫(kù)中配置定時(shí)器信息, 以數(shù)據(jù)庫(kù)悲觀鎖的方式達(dá)到同一個(gè)任務(wù)始終只有一個(gè)節(jié)點(diǎn)在運(yùn)行,
優(yōu)點(diǎn):
缺點(diǎn):
Saturn是唯品會(huì)在github開(kāi)源的一款分布式任務(wù)調(diào)度產(chǎn)品。它是基于當(dāng)當(dāng)elastic-job 1.0版本來(lái)開(kāi)發(fā)的,其上完善了一些功能和添加了一些新的feature。
亮點(diǎn):
缺點(diǎn):
一個(gè)功能完善真正通用的linux定時(shí)任務(wù)調(diào)度定系統(tǒng),滿足多種場(chǎng)景下各種復(fù)雜的定時(shí)任務(wù)調(diào)度,同時(shí)集成了linux實(shí)時(shí)監(jiān)控,webssh,提供一個(gè)方便管理定時(shí)任務(wù)的平臺(tái)
缺點(diǎn):僅支持 kill任務(wù), 現(xiàn)場(chǎng)執(zhí)行,查詢?nèi)蝿?wù)運(yùn)行狀態(tài) 等, 主要功能是著重于任務(wù)的修改和查詢上。不能動(dòng)態(tài)的添加任務(wù)以及任務(wù)分片。
優(yōu)點(diǎn):
缺點(diǎn):
系統(tǒng)架構(gòu)圖如下:
此處列出了幾個(gè)代表性的開(kāi)源產(chǎn)品
feature | quartz | elastic-job-cloud | xxl-job | antares | opencron |
---|---|---|---|---|---|
依賴 | mysql | jdk1.7+, zookeeper 3.4.6+ ,maven3.0.4+ ,mesos | mysql ,jdk1.7+ , maven3.0+ | jdk 1.7+ , redis , zookeeper | jdk1.7+ , Tomcat8.0+ |
HA | 多節(jié)點(diǎn)部署,通過(guò)競(jìng)爭(zhēng)數(shù)據(jù)庫(kù)鎖來(lái)保證只有一個(gè)節(jié)點(diǎn)執(zhí)行任務(wù) | 通過(guò)zookeeper的注冊(cè)與發(fā)現(xiàn),可以動(dòng)態(tài)的添加服務(wù)器。支持水平擴(kuò)容 | 集群部署 | 集群部署 | — |
任務(wù)分片 | — | 支持 | 支持 | 支持 | — |
文檔完善 | 完善 | 完善 | 完善 | 文檔略少 | 文檔略少 |
管理界面 | 無(wú) | 支持 | 支持 | 支持 | 支持 |
難易程度 | 簡(jiǎn)單 | 較復(fù)雜 | 簡(jiǎn)單 | 一般 | 一般 |
公司 | OpenSymphony | 當(dāng)當(dāng)網(wǎng) | 個(gè)人 | 個(gè)人 | 個(gè)人 |
高級(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ó)際化 | 任務(wù)分片, 失效轉(zhuǎn)移,彈性擴(kuò)容 , | 時(shí)間規(guī)則支持quartz和crontab ,kill任務(wù), 現(xiàn)場(chǎng)執(zhí)行,查詢?nèi)蝿?wù)運(yùn)行狀態(tài) |
缺點(diǎn) | 沒(méi)有管理界面,以及不支持任務(wù)分片等。不適用于分布式場(chǎng)景 | 需要引入zookeeper , mesos, 增加系統(tǒng)復(fù)雜度, 學(xué)習(xí)成本較高 | 調(diào)度中心通過(guò)獲取 DB鎖來(lái)保證集群中執(zhí)行任務(wù)的唯一性, 如果短任務(wù)很多,隨著調(diào)度中心集群數(shù)量增加,那么數(shù)據(jù)庫(kù)的鎖競(jìng)爭(zhēng)會(huì)比較厲害,性能不好。 | 不支持動(dòng)態(tài)添加任務(wù) | 不適用于分布式場(chǎng)景 |
使用企業(yè) | 大眾化產(chǎn)品,對(duì)分布式調(diào)度要求不高的公司大面積使用 | 36氪,當(dāng)當(dāng)網(wǎng),國(guó)美,金柚網(wǎng),聯(lián)想,唯品會(huì),亞信,平安,豬八戒 | 大眾點(diǎn)評(píng),運(yùn)滿滿,優(yōu)信二手車,拍拍貸 | — | — |
聯(lián)系客服