まだタスクスケジューリングコードを作成していますか?この視覚的な分散スケジューリングフレームワークを試す

マイクロサービスシステムでは、タスクスケジューリングのシナリオがよくあります。たとえば、毎日定期的にデータを同期し、ビジネスレポートを定期的に生成し、ログを定期的にクリーンアップします。今日は、タスクスケジューリングを簡単に完了するために、分散スケジューリングフレームワークをすべての人におすすめします。

PowerJobの概要

PowerJobは、タスクスケジューリングと複雑なタスク分散コンピューティングを簡単に完了することができる新世代の分散スケジューリングとコンピューティングフレームワークです。

主な特徴:

  • 使いやすい:フロントエンドWebインターフェースを提供し、開発者がスケジュールされたタスクの管理を視覚的に完了し、タスクの実行ステータスとログを表示できるようにします。
  • 完璧なタイミング戦略:4つのタイミングスケジューリング戦略をサポート:CRON式、固定周波数、固定遅延、API。
  • 豊富な実行モード:スタンドアロン、ブロードキャスト、マップ、およびMapReduceの4つの実行モードをサポートします。
  • 信頼性の低減:最小はリレーショナルデータベース(MySQLなど)のみに依存し、拡張された依存性はMongoDB(巨大なオンラインログの格納に使用)です。

なぜ派遣センターがあるのですか

通常の状況では、QuartZまたはSpring Taskフレームワークを使用して、タスクスケジューリング用のアプリケーションにタイミングタスクを実装しますが、マイクロサービスアーキテクチャでは、多くのアプリケーションがこのタスクスケジューリングコードであふれている場合、少し不適切に見えます。合理的な計画は次のようにする必要があります。タスク実行メソッドはアプリケーションに存在し、これらのメソッドのスケジュールを担当するディスパッチセンターがあります。ディスパッチセンターでタスクを構成するだけで済みます。PowerJobはこのような分散型ですスケジューリングフレームワーク。

インストール準備

PowerJobのスケジューリングセンター(powerjob-server)は、MySQLを使用してデータを保存し、MongoDBを使用してログを保存する必要があるため、最初にこれら2つのサービスをインストールして開始します。

  • DockerコンテナでMySQLサービスを開始します。
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root  \-d mysql:5.7
  • MySQLでPowerJobが必要とするデータベースpowerjob-productを作成します。
CREATE DATABASE IF NOT EXISTS `powerjob-product` DEFAULT CHARSET utf8mb4
  • DockerコンテナーでMongoDBサービスを開始します。
docker run -p 27017:27017 --name mongo \
-v /mydata/mongo/db:/data/db \
-d mongo:4.2.5

派遣センターを設置

PowerJobのディスパッチセンターをDocker環境にインストールするのは非常に簡単です。

  • イメージpowerjob-serverのDockerイメージをダウンロードします。
docker pull tjqq/powerjob-server:latest
  • Dockerコンテナーでpowerjob-serverサービスを実行します。
docker run -p 7700:7700 -p 10086:10086 --name powerjob-server \
--link mysql:db \--link mongo:mongo \-e TZ="Asia/Shanghai" \
-e JVMOPTIONS="" \
-e PARAMS="--spring.profiles.active=product --spring.datasource.core.jdbc-url=jdbc:mysql://db:3306/powerjob-product?useUnicode=true&characterEncoding=UTF-8 --spring.datasource.core.username=root --spring.datasource.core.password=root --spring.data.mongodb.uri=mongodb://mongo:27017/powerjob-product" \
-v ~/docker/powerjob-server:/mydata/powerjob/powerjob-server \
-v ~/.m2:/mydata/powerjob/.m2 \
-d tjqq/powerjob-server:latest
  • 正常に実行した後、powerjob-serverのWebインターフェースにアクセスできます。Linuxファイアウォールは2つのポート7700と10086を開く必要があることに注意してください。アクセスアドレスは次のとおりです:http://192.168.3.101:7700/

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

アプリケーションでアクチュエータを初期化する

ディスパッチセンターをインストールしたら、SpringBootアプリケーションでPowerJobエグゼキューター(powerjob-worker)を初期化する必要があります。

  • 最初にpom.xmlにpowerjob-workerの依存関係を追加します。
<dependency>
    <groupId>com.github.kfcfans</groupId>
    <artifactId>powerjob-worker-spring-boot-starter</artifactId>
    <version>3.2.3</version>
</dependency>
  • 次に、application.yml構成ファイルにpowerjob-worker関連の構成を追加します。powerjob.worker.app-nameの構成に注意してください。
powerjob:
  worker:
    akka-port: 27777 # akka 工作端口
    app-name: mall-tiny-powerjob # 接入应用名称,用于分组隔离
    server-address: 192.168.3.101:7700 # 调度服务器地址
    store-strategy: disk # 持久化方式
  • スタンドアロンプ​​ロセッサStandaloneProcessorを追加するには、BasicProcessorインターフェイスを継承してプロセスメソッドを実装するだけです。
package com.macro.mall.tiny.job;
@Slf4j
@Component
public class StandaloneProcessor implements BasicProcessor {
    @Override
    public ProcessResult process(TaskContext context){
        //OmsLogger可以直接将日志上报到powerjob-server
        OmsLogger omsLogger = context.getOmsLogger();
        omsLogger.info("StandaloneProcessor start process,context is {}.", context);
        log.info("jobParams is {}", context.getJobParams());
        return new ProcessResult(true, "Process success!");
    }
}
  • イメージをパッケージ化してアップロードした後、DockerコンテナでSpringBootアプリケーションサービスを実行します。構成されたタイムゾーンは、スケジュールセンターと一致している必要があります。
docker run -p 8080:8080 --name mall-tiny-powerjob \
--link mysql:db \-v /etc/localtime:/etc/localtime \-v /mydata/app/mall-tiny-powerjob/logs:/var/logs \-e TZ="Asia/Shanghai" \
-d mall-tiny/mall-tiny-powerjob:1.0-SNAPSHOT

タスクの構成と実行

アクチュエーターとディスパッチセンターを使用すると、ディスパッチセンターでタスクを構成するだけで、タスクのスケジュールを達成できます。

  • まず、アプリケーション(統合アクチュエータ)をディスパッチセンターに登録する必要があります。アプリケーション名は、application.ymlのpowerjob.worker.app-nameプロパティで、mall-tiny-powerjob:123456が使用されます。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

  • その後、ホームページでマシン情報を確認できます。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

  • 次に、タスク管理機能にタスクを追加します。ここでは、CRONメソッドを使用して、20秒ごとに実行されるようにエグゼキューターの処理メソッドを設定します。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

  • タスクリストの[実行]をクリックしてタスクを開始します。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

  • タスクリストの[詳細]-> [ログの実行]をクリックして、タスクの実行ログを表示します。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

  • ログをクリックして、プロセッサーで報告されたログを表示します。jobParamsは、前にタスクを作成したときに設定されたパラメーターです。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

 

  • [詳細]をクリックして、このトリガーされたタスクの結果、つまりProcessResultで返された情報を表示します。

まだタスクスケジューリングコードを作成していますか? この視覚的な分散スケジューリングフレームワークを試す

プロジェクトのソースコードアドレスを取得します。転送+コメント、プライベートメッセージをフォローし、「666」と返信して無料で入手します。

高品質の記事の推奨読書:

アリババの高度な面接質問(最初の問題、136のよくある質問、回答を含む)

https://blog.csdn.net/weixin_45132238/article/details/107251285

GitHub Biaoxing 20wの4つの低レベルインタビューガイド(コンピューターのボトムレイヤー+オペレーティングシステム+アルゴリズム)、インタビューのヘッドライン/ Tencentは正しいです!

https://blog.csdn.net/weixin_45132238/article/details/108640805

Alibaba内部アーキテクチャの戦闘:SpringBoot / SpringCloud / Docker / Nginx / distributed

https://blog.csdn.net/weixin_45132238/article/details/108666255

おすすめ

転載: blog.csdn.net/weixin_45132238/article/details/108717025