SpringBoot2.0實戰(36)整合ElasticJob之快速入門


SpringBoot2.0實戰(36)整合ElasticJob之快速入門

寫在前面的文章

相關知識

什麼是 ElasticJob

ElasticJob 是噹噹網開源的一個分佈式調度解決方案,由兩個相互獨立的子項目 Elastic-Job-Lite 和 Elastic-Job-Cloud 組成。

Elastic-Job-Lite 定位為輕量級無中心化解決方案,使用jar包的形式提供分佈式任務的協調服務;Elastic-Job-Cloud 採用自研 Mesos Framework 的解決方案,額外提供資源治理、應用分發以及進程隔離等功能。

ElasticJob 特性

  • 分佈式調度協調
  • 彈性擴容縮容
  • 失效轉移
  • 錯過執行作業重觸發
  • 作業分片一致性,保證同一分片在分佈式環境中僅一個執行實例
  • 自診斷並修復分佈式不穩定造成的問題
  • 支持並行調度
  • 支持作業生命週期操作
  • 豐富的作業類型
  • Spring整合以及命名空間提供
  • 運維平臺

官網資料

Elastic-Job官網地址:http://elasticjob.io/index_zh.htmlElastic-Job-Lite官方文檔地址:http://elasticjob.io/docs/elastic-job-lite/00-overview/intro/

目標

整合 ElasticJob,實現定時任務打印輸出

準備工作

安裝 Zookeeper

使用 Docker 進行簡單安裝

拉取鏡像

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

啟動容器

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

實戰

第一步:添加依賴

引入 Spring Boot Starter 父工程

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

添加 elastic-job-lite 的依賴,本文使用的版本是 2.1.5,添加後的整體依賴如下

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第二步:配置

因為 SpringBoot 並沒有提供 ElasticJob 的相關 starter,所以配置參數需要我們自行定義

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第三步:編寫定時任務執行類

需要實現 SimpleJob 接口

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第四步:註冊 Zookeeper

使用前面的配置進行註冊

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第五步:註冊定時任務

使用前面創建的 ExampleJob 進行註冊 JobScheduler,並執行其 init 方法。

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

ElasticJobProperties 類用於支持使用配置文件進行配置,因為使用了默認值,所以在配置文件中並沒有進行相關配置

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第六步:驗證

啟動項目,查看日誌

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

源碼地址

本章源碼 : https://gitee.com/gongm_24/spring-boot-tutorial.git

結束語

將任務加入 Elastic-Job 的步驟就是

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

擴展

開啟事件追蹤

Elastic-Job-Lite 在提供了 JobEventConfiguration,目前支持數據庫方式配置,操作步驟如下:

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

需要配置一個數據源,配置之後,對應庫自動創建 JOB_EXECUTION_LOG 和 JOB_STATUS_TRACE_LOG 兩張表以及若干索引。

開啟任務監聽

監聽器分為每臺作業節點均執行和分佈式場景中僅單一節點執行2種。

  • 為每臺作業節點均執行的監聽

若作業處理作業服務器的文件,處理完成後刪除文件,可考慮使用每個節點均執行清理任務。此類型任務實現簡單,且無需考慮全局分佈式任務是否完成,請儘量使用此類型監聽器。

第一步:定義監聽器

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第二步:將監聽器作為參數傳入 JobScheduler

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

  • 分佈式場景中僅單一節點執行的監聽

若作業處理數據庫數據,處理完成後只需一個節點完成數據清理任務即可。此類型任務處理複雜,需同步分佈式環境下作業的狀態同步,提供了超時設置來避免作業不同步導致的死鎖,請謹慎使用。

第一步:定義監聽器

SpringBoot2.0實戰(36)整合ElasticJob之快速入門

第二步:將監聽器作為參數傳入JobScheduler

SpringBoot2.0實戰(36)整合ElasticJob之快速入門


分享到:


相關文章: