1. 程式人生 > >Lts分散式任務排程

Lts分散式任務排程

1LTS簡介

LTS(light-task-scheduler)主要用於解決分散式任務排程問題,支援實時任務,定時任務和Cron任務。有較好的伸縮性,擴充套件性,健壯穩定性而被多家公司使用,同時也希望開源愛好者一起貢獻。

LTS節點

JobClient:主要負責提交任務, 並接收任務執行反饋結果。

JobTracker:負責接收並分配任務,任務排程。

TaskTracker:負責執行任務,執行完反饋給JobTracker

LTS-Admin:主要負責節點管理,任務佇列管理,監控管理等。

其中JobClinetJobTrackerTaskTracker節點都是無狀態的。 可以部署多個並動態的進行刪減,來實現負載均衡,實現更大的負載量

, 並且框架採用FailStore策略使LTS具有很好的容錯能力。

LTS任務型別

實時任務:提交了之後立即就要執行的任務。

定時任務:在指定時間點執行的任務。

Cron任務:週期性任務,CronExpression,和quartz類似。

LTS架構圖

 

 

LTS特性

1Spring支援

LTS可以完全不用Spring框架,但是考慮到很用使用者專案中都是用了Spring框架,所以LTS也提供了對Spring的支援,包括Xml和註解,引入lts-spring.jar即可。

2、業務日誌記錄器

TaskTracker端提供了業務日誌記錄器,供應用程式使用,通過這個業務日誌器,可以將業務日誌提交到

JobTracker,這些業務日誌可以通過任務ID串聯起來,可以在LTS-Admin中實時檢視任務的執行進度。

3SPI擴充套件支援

SPI擴充套件可以達到零侵入,只需要實現相應的介面,並實現即可被LTS使用,目前開放出來的擴充套件介面有對任務佇列的擴充套件,使用者可以不選擇使用mysql或者mongo作為佇列儲存,也可以自己實現。對業務日誌記錄器的擴充套件,目前主要支援consolemysqlmongo,使用者也可以通過擴充套件選擇往其他地方輸送日誌。

4、故障轉移

當正在執行任務的TaskTracker宕機之後,JobTracker會立馬將分配在宕機的TaskTracker的所有任務再分配給其他正常的

TaskTracker節點執行。

5、節點監控

可以對JobTrackerTaskTracker節點進行資源監控,任務監控等,可以實時的在LTS-Admin管理後臺檢視,進而進行合理的資源調配。

6、多樣化任務執行結果支援

LTS框架提供四種執行結果支援,EXECUTE_SUCCESSEXECUTE_FAILEDEXECUTE_LATEREXECUTE_EXCEPTION,並對每種結果採取相應的處理機制,譬如重試。

EXECUTE_SUCCESS: 執行成功,這種情況,直接反饋客戶端(如果任務被設定了要反饋給客戶端)。

EXECUTE_FAILED:執行失敗,這種情況,直接反饋給客戶端,不進行重試。

EXECUTE_LATER:稍後執行(需要重試),這種情況,不反饋客戶端,重試策略採用1min2min3min的策略,預設最大重試次數為10次,使用者可以通過引數設定修改這個重試次數。

EXECUTE_EXCEPTION:執行異常, 這中情況也會重試(重試策略,同上)

7FailStore容錯

採用FailStore機制來進行節點容錯,Fail And Store,不會因為遠端通訊的不穩定性而影響當前應用的執行。具體FailStore說明,請參考概念說明中的FailStore說明。

2、工作流程

1. JobClient 提交一個 任務 給 JobTracker, 這裡我提供了兩種客戶端API, 一種是如果JobTracker 不存在或者提交失敗,直接返回提交失敗。另一種客戶端是重試客戶端, 如果提交失敗,先儲存到本地FailStore(可以使用NFS來達到同個節點組共享leveldb檔案的目的,多執行緒訪問,已經做了檔案鎖處理),返回 給客戶端提交成功的資訊,待JobTracker可用的時候,再將任務提交。

2. JobTracker收到JobClient提交來的任務,將任務存入任務佇列。JobTracker等待TaskTrackerPull請求,然後將任務PushTaskTracker去執行。

3. TaskTracker收到JobTracker分發來的任務之後,然後從執行緒池中拿到一個執行緒去執行。執行完畢之後,再反饋任務執行結果給 JobTracker(成功or 失敗[失敗有失敗錯誤資訊]),如果發現JobTacker不可用,那麼儲存本地FailStore,等待TaskTracker可用的時候再反饋。反饋 結果的同時,詢問JobTacker有沒有新的任務要執行。

4. JobTacker收到TaskTracker節點的任務結果資訊。根據任務資訊決定要不要反饋給客戶端。不需要反饋的直接刪除,需要反饋的,直接反饋,反饋失敗進入FeedbackQueue, 等待重新反饋。

5. JobClient收到任務執行結果,進行自己想要的邏輯處理。

3、專案搭建

準備工作

1.1下載例子,並匯入進IDEAEclipse

例子地址 https://github.com/ltsopensource/lts-examples

1.2 下載Admin

地址:http://git.oschina.net/hugui/light-task-scheduler/blob/master/dist/lts-1.6.8-bin.zip

1.3 啟動zookeeper

我的電腦是 192.168.202.128 2181

 

1.4 啟動mysql

這裡假設是 127.0.0.1:3306 使用者名稱密碼:root, root

建立資料庫:假設資料庫名稱是 lts

資料庫

 

啟動專案

2.1 啟動JobTracker

啟動 lts-examples/lts-example-jobtracker/lts-example-jobtracker-java

com.github.ltsopensource.example.java.Main , 出現

com.github.ltsopensource.core.cluster.JobNode - [LTS] ========== Start success 日誌

表示啟動成功

 

2.2 啟動TaskTracker

啟動 lts-examples/lts-example-tasktracker/lts-example-tasktracker-java

com.github.ltsopensource.example.java.Main , 出現

com.github.ltsopensource.core.cluster.JobNode - [LTS] ========== Start success 日誌

表示啟動成功

 

2.3 啟動JobClient並提交任務

啟動 lts-examples/lts-example-jobclient/lts-example-jobclient-java

com.github.ltsopensource.example.java.Main , 出現

com.github.ltsopensource.core.cluster.JobNode - [LTS] ========== Start success 日誌

表示啟動成功, 這個例子裡面在jobclient啟動完成之後,提交了四個不同的任務。在提交

之後,你回收到任務執行完成的日誌,並檢視tasktracker端,也會有執行的日誌

到這裡一個LTS的任務執行鏈路已經成功打通,但是還沒有一個視覺化的介面提供使用者檢視,

操作等。

 

啟動後臺

3.1 解壓前面下載到的lts-1.6.8-beta1-bin.zip

檔案結構大概如下

-- lts-${version}-bin

|-- bin

| |-- jobtracker.cmd

| |-- jobtracker.sh

| |-- lts-admin.cmd

| |-- lts-admin.sh

| |-- lts-monitor.cmd

| |-- lts-monitor.sh

| |-- tasktracker.sh

|-- conf

| |-- log4j.properties

| |-- lts-admin.cfg

| |-- lts-monitor.cfg

| |-- readme.txt

| |-- tasktracker.cfg

| |-- zoo

| |-- jobtracker.cfg

| |-- log4j.properties

| |-- lts-monitor.cfg

|-- lib

| |-- *.jar

|-- war

|-- jetty

| |-- lib

| |-- *.jar

|-- lts-admin.war

1. 修改 conf/lts-monitor.cfg conf/lts-admin.cfg 下的配置,如果有需要的話 (如果需

要改下埠,新增 port=埠號 到 lts-admin.cfg)

2. 啟動windows下執行 bin/lts-admin.cmd, linux 下執行bin/lts-admin.sh 訪問

 

部署tomcat

拷貝 war/lts-admin.war tomcat的部署目錄,解壓之後,修改相應的配置檔案即可

conf/lts-monitor.cfg conf/lts-admin.cfg

4、專案執行

 

相關推薦

LTS分散式任務排程在專案中的實際應用

公司專案是分散式的,所以定時任務用lts框架,簡單的看看程式碼,分析了一下,找到呼叫流程。 注意:不瞭解lts的先看下這個文件,我也是看完才看懂程式碼 文件地址:https://www.cnblogs.com/dion-90/articles/8674591.html lts的

LTS分散式任務排程文件

LTS介紹 LTS(light-task-scheduler)主要用於解決分散式任務排程問題,支援實時任務,定時任務,Cron任務,Repeat任務。有較好的伸縮性,擴充套件性,健壯穩定性而被多家公司使用,同時也希望開源愛好者一起貢獻。 主要功能 支援分散式,解決多

Lts分散式任務排程

1、LTS簡介 LTS(light-task-scheduler)主要用於解決分散式任務排程問題,支援實時任務,定時任務和Cron任務。有較好的伸縮性,擴充套件性,健壯穩定性而被多家公司使用,同時也希望開源愛好者一起貢獻。 LTS節點 JobClient:主要負責提交任務,

LTS原理--輕量級分散式任務排程框架(Light Task Schedule)(一)

LTS(light-task-scheduler)主要用於解決分散式任務排程問題,支援實時任務,定時任務和Cron任務。有較好的伸縮性,擴充套件性,健壯穩定性而被多家公司使用,同時也希望開源愛好者一起貢獻。 專案地址 這兩個地址都會同步更新。感興趣,請加Q

LTS 輕量級分散式任務排程框架(Light Task Scheduler)

框架概況: LTS是一個輕量級分散式任務排程框架。有三種角色, JobClient, JobTracker, TaskTracker。各個節點都是無狀態的,可以部署多個,來實現負載均衡,實現更大的負載量, 並且框架具有很好的容錯能力。 採用多種註冊中心(Zoo

分散式任務排程平臺

一、任務排程概述  1.什麼是任務排程--定時job 在什麼時間進行執行程式碼任務 任務排程場景:定時檢查紅包過期 2.java實現定時任務有幾種?         Thread.sleep TimerTask  uti

分散式任務排程平臺搭建

分散式情況下定時任務會出現哪些問題? 分散式叢集的情況下,怎麼保證定時任務不被重複執行 分散式定時任務解決方案 ①使用zookeeper實現分散式鎖 缺點(需要建立臨時節點、和事件通知不易於擴充套件) ②使用配置檔案做一個開關  缺點發布後,需要重啟 ③資料庫唯一約束,缺點效率低 ④使用

Go語言開發分散式任務排程 輕鬆搞定高效能Crontab

Go語言開發分散式任務排程 輕鬆搞定高效能Crontab 第1章 課程介紹 本章中將介紹一下本課程的基本內容,包括:我們要做什麼、要求什麼基礎、將學會哪些工具、收穫哪些獨家乾貨,以及課程具體安排。 1-1 導學視訊 第2章 如何執行shell命令 執行

分散式任務排程平臺XXL-Job叢集版搭建

如果叢集:  儲存後:   啟動兩個 job   第二個job的配置: # web port server.port=8082 # log config logging.config=classpath:logback.xml ### xxl-jo

利用uncode-schedule(冶衛軍)構建分散式任務排程

碼雲:https://gitee.com/uncode/uncode-schedule zookeeper中許可權簡書:https://www.jianshu.com/p/147ca2533aff 環境:zookeeper單機環境 技術:springboot(適用於springcloud)沒有

springboot 整合分散式任務排程平臺xxl-job

一、簡介 1.1 概述 XXL-JOB是一個輕量級分散式任務排程平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴充套件。現已開放原始碼並接入多家公司線上產品線,開箱即用。 1.2 特性 1、簡單:支援通過Web頁面對任務進行CRUD操作,操作簡單,一分鐘上手; 2、

XXL-JOB v1.9.2 釋出,分散式任務排程平臺

v1.9.2 新特性 1、任務超時控制:新增任務屬性 “任務超時時間”,並支援自定義,任務執行超時將會主動中斷任務; 2、任務失敗重試次數:新增任務屬性 “失敗重試次數”,並支援自定義,當任務失敗時將

XXL-JOB v2.0.1 釋出,分散式任務排程平臺

1、簡單:支援通過Web頁面對任務進行CRUD操作,操作簡單,一分鐘上手; 2、動態:支援動態修改任務狀態、啟動/停止任務,以及終止執行中任務,即時生效; 3、排程中心HA(中心式):排程採用中心式設計,“排程中心”基於叢集Quartz實現並支援叢集部署,可保證排程中心HA; 4、執行器HA(分散式):任務

分散式任務排程平臺XXL-JOB

一:簡介 1.1 概述 XXL-JOB是一個輕量級分散式任務排程平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴充套件。 1.2 特性 簡單:支援通過Web頁面對任務進行CRUD操作,操作簡單,一分鐘上手; 動態:支援動態修改任務狀態. 啟動/停止

分散式任務排程實現方式

背景   分散式任務排程是非常常見的一種應用場景,一般對可用性和效能要求不高的任務,採用單點即可,例如linux的crontab,spring的quarz,但是如果要求部署多個節點,達到高可用的效果,上面的方案就不適用了。 實際上任務排程的實現有兩種情況,第一種

【stark_summer的專欄 】專注於開發分散式任務排程框架、分散式同步RPC、非同步MQ訊息佇列、分散式日誌檢索框架、hadoop、spark、scala等技術 如果我的寫的文章能對您有幫助,請您能給點捐助,請看首頁置頂

專注於開發分散式任務排程框架、分散式同步RPC、非同步MQ訊息佇列、分散式日誌檢索框架、hadoop、spark、scala等技術 如果我的寫的文章能對您有幫助,請您能給點捐助,請看首頁置頂...

赫拉(hera)分散式任務排程系統之開發中心(三)

簡介 開發中心,顧名思義。我們進行開發的地方(當然我們也可以直接在排程中心加任務,建議任務首先在開發中心測試,通過之後再加到排程中心)。 目錄介紹 如圖所示,開發中心有兩個資料夾。分別是個人文件、共享文件。這兩個資料夾不允許刪除。 個人文件 提供給

赫拉(hera)分散式任務排程系統之專案啟動(二)

克隆hera 暫時還未開源 後面補上。 建立表 當使用git把hera克隆到本地之後,首先在hera/hera-admin/resources目錄下找到hera.sql檔案,在自己的資料庫中新建這些必要的表,並插入初始化的資料。 此時可以在hera/hera-admin/

赫拉(hera)分散式任務排程系統之架構,基本功能(一)

文章目錄 為資料平臺打造的任務排程系統 前言 架構 設計目標 支援任務的定時排程、依賴排程、手動排程、手動恢復 支援豐富的任務型別:shell,hive,python,spark-sql,java

赫拉(hera)分散式任務排程系統之Q&A(五)

文章目錄 往期目錄 加入群聊 q&a q:依賴任務的週期怎麼填? q:新加的任務什麼時候會加入排程 q:想立刻加入排程怎麼辦 q:資原始檔怎麼上傳不成功 q:開啟/關閉/失