溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何正確的使用elastic-job

發(fā)布時間:2021-06-18 17:45:05 來源:億速云 閱讀:137 作者:Leah 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何正確的使用elastic-job,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

1、Docker基礎(chǔ)命令
docker ps 列出當(dāng)前正在運(yùn)行的容器
docker ps -a 列出全部的容器
docker rm 容器ID 移除容器
docker images 全部鏡像

運(yùn)行zookeeper:
docker run --name elasticzookeeper -p 2181:2181 -v /Users/abc/Desktop/WorkSpace/DockerData/elsaticzookeeper/data:/data/ -d zookeeper
docker run 運(yùn)行一個容器  —name 給容器起個名字(標(biāo)識,docker不能重復(fù)) -p 宿主端?口:容器?端?口  -v  宿主?目錄:容器??目錄,掛載磁盤卷  -d 后臺運(yùn)行容器

docker exec -it 容器id  bash  登錄到容器中
2、elastic-job

我們可以參考官方的文檔(有中文的),很詳細(xì)有具體的使用,http://elasticjob.io/docs/elastic-job-lite/00-overview/

elastic-job是什么:

(摘自官網(wǎng))Elastic-Job是一個分布式調(diào)度解決方案,由兩個相互獨(dú)立的子項(xiàng)目Elastic-Job-Lite和Elastic-Job-Cloud組成。Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù);Job-Cloud采用自研Mesos Framework的解決方案,額外提供資源治理、應(yīng)用分發(fā)以及進(jìn)程隔離等功能(PS:我在這里只說Elastic-Job-Lite,因?yàn)镴ob-Cloud我沒去研究)。 簡單的說Elastic-Job-Lite就是一個分布式定時任務(wù)。

怎么使用elastic-job:
1、maven依賴:
<dependency>
  <groupId>com.dangdang</groupId>
  <artifactId>elastic-job-lite-spring</artifactId>
  <version>2.1.5</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.dangdang/elastic-job-lite-core -->
<dependency>
  <groupId>com.dangdang</groupId>
  <artifactId>elastic-job-lite-core</artifactId>
  <version>2.1.5</version>
</dependency>
2、簡單的列子
2.1寫簡單的定時任務(wù)的代碼
public class FirstSimpleJobDemo implements SimpleJob {

    private static final Logger logger = LoggerFactory.getLogger(FirstSimpleJobDemo.class);

    @Override
    public void execute(ShardingContext shardingContext) {

        int shardingTotalCount = shardingContext.getShardingTotalCount();
        int item = shardingContext.getShardingItem();
        String shardingParameter = shardingContext.getShardingParameter();

        logger.info("shardingTotalCount:{},shardingParameter:{}",shardingTotalCount,shardingParameter);

        logger.info("----- ThredID:{},當(dāng)前分片項(xiàng):{}",Thread.currentThread().getId(),item);



    }
}

只要實(shí)現(xiàn)SimpleJob類然后實(shí)現(xiàn)execute就可以了,在execute中寫我們的定時任務(wù)處理邏輯。

(摘自官網(wǎng))SimpleJob 意為簡單實(shí)現(xiàn),未經(jīng)任何封裝的類型。需實(shí)現(xiàn)SimpleJob接口。該接口僅提供單一方法用于覆蓋,此方法將定時執(zhí)行。與Quartz原生接口相似,但提供了彈性擴(kuò)縮容和分片等功能。 看下官方的demo

public class MyElasticJob implements SimpleJob {
    
    @Override
    public void execute(ShardingContext context) {
        switch (context.getShardingItem()) {
            case 0: 
                // do something by sharding item 0
                break;
            case 1: 
                // do something by sharding item 1
                break;
            case 2: 
                // do something by sharding item 2
                break;
            // case n: ...
        }
    }
}

使用context.getShardingItem()使用多線程對不同的數(shù)據(jù)做不同的處理。

  • 我們還可以實(shí)現(xiàn)Dataflow類型作業(yè)用來處理流作業(yè),Script類型作業(yè),用來處理腳本作業(yè)。具體可以查看官方文檔。

2.2定時任務(wù)的配置:

a)需要配置注冊中心

代碼如下:

<reg:zookeeper id="regCenter" server-lists="localhost:2181" namespace="elsatic-job" base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3" />

其中參數(shù)的意思為:

  • server-lists 連接Zookeeper服務(wù)器的列表

  • namespace Zookeeper的命名空間

  • base-sleep-time-milliseconds 等待重試的間隔時間的初始值

  • max-sleep-time-milliseconds 等待重試的間隔時間的最大值

  • maxRetries 最大重試次數(shù)

其具體使用和參數(shù)的單位等請去官網(wǎng)的配置手冊中查看。

b)配置任務(wù)

<!-- 配置作業(yè)-->
<job:simple id="demoSimpleSpringJob" class="org.chen.demo.FirstSimpleJobDemo"
            registry-center-ref="regCenter" cron="0 0/2 * * * ?" sharding-total-count="2" sharding-item-parameters="0=A,1=B" overwrite="true"/>

其中參數(shù)的意思為:

  • id 作業(yè)名稱

  • class 作業(yè)實(shí)現(xiàn)類,需實(shí)現(xiàn)ElasticJob接口

  • registry-center-ref 注冊中心Bean的引用,需引用reg:zookeeper的聲明

  • sharding-total-count 作業(yè)分片總數(shù)

  • sharding-item-parameters 分片序列號和參數(shù)用等號分隔,多個鍵值對用逗號分隔 分片序列號從0開始,不可大于或等于作業(yè)分片總數(shù)

  • overwrite 本地配置是否可覆蓋注冊中心配置,如果可覆蓋,每次啟動作業(yè)都以本地配置為準(zhǔn)

具體使用可以參考官方配置手冊。需要注意,overwrite這個參數(shù)默認(rèn)為false

3、運(yùn)維平臺:
  1. 從github把console的代碼下載下來然后運(yùn)行代碼,然后輸入http://localhost:8899/即可訪問控制臺。8899為默認(rèn)端口號,可通過啟動腳本輸入-p自定義端口號。

  2. 進(jìn)入平臺,新建全局配置,填寫注冊中心名稱(就是自己好辨識是哪個項(xiàng)目或者那塊業(yè)務(wù)相關(guān)的),注冊中心地址(zookeeper的地址),命名空間需要和定時任務(wù)項(xiàng)目中配置的一致,加完后點(diǎn)擊連接按鈕,連接上后可進(jìn)行下步操作

  3. 進(jìn)入作業(yè)操作->作業(yè)維度 顯示每個定時任務(wù),然后可以操作每個定時任務(wù)

  4. 進(jìn)入作業(yè)操作->服務(wù)器維度 顯示服務(wù)器的IP,運(yùn)行任務(wù)的個數(shù)等。

上述內(nèi)容就是如何正確的使用elastic-job,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI