elastic-job是噹噹⽹開源的⼀個分布式排程解決⽅案,基於quartz⼆次開發的。
分布式排程:
在分布式環境中,任務能夠按照指定條件執行。
例如:1 專案部署在多台伺服器上,其中定時任務只能有某一台主機執行,當此主機宕機其他定時任務選舉其一執行。
2 分片執行、多台例項任務執行時,每個任務例項僅負責一部分的資料段任務。
如下圖假設,每天0:05 執行統計乙個日誌表資料,分片1統計大於50歲的,分片2統計11-50歲的,分片3統計0-10歲的。這樣每個定時任務分片負責一部分的內容。
jar依賴 + zookeeper
在conf目錄下 複製乙份 zoo_sample.cfg 為 zoo.cfg
當前僅進行單例項啟動 zookeeper,配置使用預設即可
# 每次心跳時間間隔 毫秒
ticktime=2000
# 初始化的心跳次數, 從leader同步資料時,超出 心跳時間 x initlimit時則認為連不上
initlimit=10
# leader通過心跳檢測其他機器的連線狀態、超出synclimit x 心跳時間 則認為連不上
synclimit=5
# znode儲存路徑、請自行設定,不要使用/tmp儲存
datadir=/users/*****/project/zookeeper/zookeeper-3.4.9/data/
# 埠clientport=2181
啟動:
bin/zkserver.sh start
停止:bin/zkserver.sh stop
狀態:bin/zkserver.sh status
public class elasticjobdemo
// 自己建立的乙個定時任務執行的實現
public static class myjobtimer implements ******job }}
package org.ns.learn3.elastic;
import com.dangdang.ddframe.job.api.shardingcontext;
import com.dangdang.ddframe.job.api.******.******job;
import com.dangdang.ddframe.job.config.jobcoreconfiguration;
import com.dangdang.ddframe.job.config.jobcoreconfiguration.builder;
import com.dangdang.ddframe.job.config.******.******jobconfiguration;
import com.dangdang.ddframe.job.lite.api.jobscheduler;
import com.dangdang.ddframe.job.lite.config.litejobconfiguration;
import com.dangdang.ddframe.job.reg.base.coordinatorregistrycenter;
import com.dangdang.ddframe.job.reg.zookeeper.zookeeperconfiguration;
import com.dangdang.ddframe.job.reg.zookeeper.zookeeperregistrycenter;
public class elasticjobdemo2
// 自己建立的乙個定時任務執行的實現
public static class myjobtimer implements ******job }}
分布式任務排程
定時job,在什麼時間進行執行 任務。public static void main string args catch exception e thread thread new thread runnable thread.start public static void main string...
分布式排程系統 任務排程
這就是分布式任務排程所要解決的問題 舉個栗子 如何快速的做出大量的熱狗?如果將每乙個乙個熱狗按流程做的話,可見工作量會十分巨大而且效率低下 對任務按需求切分成多個子任務 再對所有的中間態結果進行reduce合併,得到最終結果 我們換個角度理解mapreduce操作 還會有一些廚師,按照一定的比例,將...
quartz的分布式任務排程
在實際的併發量較高的專案中,架構師通常會對伺服器進行集群或者對專案架構進行分布式部署 請允許筆者模擬乙個場景 某專案構架採用了nginx進行三颱應用型伺服器的負載均衡,並且每台伺服器部署同一套 這裡顯然要對quartz相應的進行集群 假設,該專案中存在乙個定時器模組 如果這裡不做特殊處理的話,三颱應...