XXL-JOB軽量分散タスクスケジューリングプラットフォーム

分散タスクスケジューリングプラットフォームXXL-JOB


前書き:

XXL-JOBは軽量の分散タスクスケジューリングプラットフォームであり、その主な設計目標は、迅速な開発、簡単な学習、軽量、簡単な拡張です。これで、ソースコードが開いて多くの企業のオンライン製品ラインに接続され、すぐに使用できるようになりました。

公式サイト文書

https://www.xuxueli.com/xxl-job/


特性

1.シンプル:Webページを介したタスクのCRUD操作、シンプルな操作、開始まで1分を
サポートします。2。ダイナミック:タスクのステータスの動的な変更をサポートし、タスクの開始/停止、実行中のタスクを終了し、即時に影響を与えます
。3。ディスパッチセンターHA (中央):スケジューリングは中央設計である「ディスパッチセンター」の自己開発スケジューリングコンポーネントを採用し、ディスパッチセンターのHAを確保できるクラスターの展開をサポートします
。4。アクチュエーターHA(分散):タスクは分散方式で実行され、タスク「エグゼキューター」タスク実行のHAを確保するためのクラスター展開のサポート;
5.登録センター:エグゼキューターはタスクを定期的に自動的に登録し、ディスパッチセンターは登録されたタスクを自動的に検出して実行をトリガーします。同時に、アクチュエーターアドレスの手動入力もサポートしています;
6.柔軟な拡張と縮小:新しいアクチュエーターマシンがオンラインまたはオフラインになると、タスクは次のスケジューリング中に再配布されます;
7.ルーティング戦略:豊富なアクチュエータークラスターの配備を提供します。ルーティング戦略には、最初、最後、ポーリング、ランダム、一貫性のあるHASH、最も頻繁に使用されない、最も最近使用されていない、フェイルオーバー、ビジー転送などがあります。8
。フェイルオーバー:タスクルーティング戦略の選択「失敗」 「転送」の場合、アクチュエータクラスタ内のマシンに障害が発生すると、通常のアクチュエータに自動的にフェイルオーバーして、スケジューリング要求を送信します。
9.ブロッキング処理戦略:スケジューリングが集中的で、エグゼキューターが処理するには遅すぎる場合の処理​​戦略。戦略には、単一マシンのシリアル(デフォルト)、後続のスケジューリングの破棄、および以前のスケジューリングの上書き、
10。タスクタイムアウト制御:カスタムタスクタイムアウト時間のサポート、タスク残業を実行すると、タスクがアクティブに中断されます
。11。タスクの失敗時の再試行:カスタムタスクの失敗時の再試行時間をサポートします。タスクが失敗した場合、事前に設定された失敗時の再試行時間に従ってアクティブに再試行します。断片化タスクは断片化をサポートしています詳細な失敗の再試行、
12。タスクの失敗のアラーム、デフォルトの電子メールの失敗のアラームが提供され、拡張インターフェースが同時に予約されているため、SMSや釘などのアラーム方法を簡単に拡張できます。
13.断片化されたブロードキャストタスク:エグゼキュータークラスターがデプロイされ、タスクルーティング戦略が「断片化されたブロードキャスト」を選択すると、タスクスケジューリングがブロードキャストされ、クラスター内のすべてのエグゼキューターをトリガーしてタスクを実行します。断片化されたタスクは、シャーディングパラメーターに従って開発できます。 ;
動的拡張アクチュエータークラスターをサポートするディメンションとしてのアクチュエーターへのフラグメンテーションフラグメンテーションブロードキャストタスク、動的にフラグメント数を増加させる、共同ビジネスプロセス;大量のデータトラフィック操作中にタスクを大幅に改善できる:14、ダイナミックフラグメンテーション処理能力と速度。
15.イベントのトリガー:「Cronモード」および「タスク依存モード」でのタスク実行のトリガーに加えて、イベントベースのタスクのトリガーをサポートします。ディスパッチセンターは、タスクの単一の実行をトリガーするAPIサービスを提供します。これは、ビジネスイベントに応じて柔軟にトリガーできます。
16.タスクの進行状況の監視:タスクの進行状況のリアルタイム監視をサポートします
。17。ローリングのリアルタイムログ:スケジューリング結果のオンライン表示をサポートし、ローリングモードのアクチュエーターによる完全な実行ログ出力のリアルタイム表示を
サポートします。18。GLUE:Web IDEを提供し、オンラインでサポートします。タスクロジックコードを開発し、動的に公開し、リアルタイムでコンパイルし、展開とオンラインのプロセスを省略します。履歴バージョンのバックトラッキングの30バージョンをサポートします。
19.スクリプトタスク:シェル、Python、NodeJS、PHP、PowerShell、およびその他の種類のスクリプトを含む、GLUEモードでのスクリプトタスクの開発と操作をサポートします
。20。コマンドラインタスク:一般的なコマンドラインタスクハンドラー(Beanタスク、「CommandJobHandler」)をネイティブで提供します。 ;ビジネス側はコマンドラインを提供するだけで十分です;
21.タスクの依存関係:サブタスクの依存関係の構成をサポートします。親タスクが実行されて正常に実行されると、サブタスクの実行が自動的にトリガーされ、複数のサブタスクはコンマで区切られます;
22。一貫性:「ディスパッチセンター」は、DBロックによるクラスター分散スケジューリングの一貫性を保証します。


25.データ暗号化:ディスパッチセンターとアクチュエータの間の通信は暗号化され、ディスパッチ
ング情報のセキュリティが向上します。26。メールアラーム:タスクが失敗した場合のメールアラームをサポートし、アラームメールを送信するための複数のメールアドレスの構成をサポートします
。27。Mavenセントラルをプッシュします。ウェアハウス:最新の安定したバージョンがMaven中央ウェアハウスにプッシュされます。これは、ユーザーがアクセスして使用するのに便利です
。28。実行中のレポート:タスクの数、スケジュール時間、エグゼキューターの数などの実行中のデータのリアルタイム表示のサポート、およびスケジュールなどのレポートのスケジュール日付分布図、スケジューリング成功分布図など;
29.完全非同期:完全に非同期の設計とタスクスケジューリングプロセスの実装(非同期スケジューリング、非同期操作、非同期コールバックなど)。集中的なスケジューリングのトラフィックを効果的にピークにし、任意の期間のタスクを理論的にサポートします。操作、
30、クロス言語:ディスパッチセンターとアクチュエータはRESTful APIサービスを提供し、言語に依存しないため、サードパーティは任意の言語ドッキングディスパッチセンターまたはアクチュエータを実装できます。さらに、「マルチタスクモード」や「httpJobHandler」などの他のクロスランゲージソリューションも提供されます;
31.国際化:ディスパッチセンターはインターナショナル設定をサポートし、中国語と英語の2つのオプション言語を提供します。デフォルトは中国語です;
32 、コンテナ化:公式のDockerイメージを提供し、リアルタイムでdockerhubを更新およびプッシュして、製品をすぐに使用できるようにさらに実現します;
33.スレッドプールの分離:スレッドプールの分離と分割をスケジュールします。遅いタスクは、消費を避けるために自動的に「遅い」スレッドプールにダウングレードされますスレッドを可能な限りディスパッチしてシステムの安定性を向上させる;
34.ユーザー管理:システムユーザーのオンライン管理をサポートし、管理者と通常のユーザーの2つの役割があります;
35.権限制御:アクチュエーターの次元での権限制御、管理者は完全な権限、通常のユーザーを持っています関連する操作を許可する前に、実行者権限を割り当てる必要があります。

展開する

拉取代码:这是我放到了自己 的 gitee 上,拉取速度非常快
git clone https://gitee.com/Liu_YiHong/xxl-job.git  
导入sql 文件到数据库MySQL
cd xxl-job/doc/db    //会有一份tables_xxl_job.sql 文件,导入到数据库就好。 
修改xxl-job-admin配置文件:
cd xxl-job/xxl-job-admin/src/main/resources
vim application.properties
修改如下 参数:
server.port=8086
spring.datasource.url=jdbc:mysql://数据库IP:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=0GXwwchW4rP
修改 xxl-job-executor-sample-springboot 配置文件:
cd xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources
vim application.properties
修改如下参数:
server.port=8087
xxl.job.admin.addresses=http://xxxxxxIP地址:8086/xxl-job-admin
cd xxl-job  //项目得根目录下打包
1·打包之前最好修改maven 得仓库地址,否则太慢。

Maven 配置
打开 Maven 的配置文件(windows机器一般在maven安装目录的conf/settings.xml),在<mirrors></mirrors>标签中添加 mirror 子节点:

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

2· 执行打包命令
mvn clean package -Dmaven.test.skip=true
3·制作xxl-job-admin镜像
cd xxl-job-admin
docker build -t xxl-job-admin .
4`制作 xxl-jobs-pringboot 镜像
cd xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-springboot
docker build -t xxl-jobs-pringboot .
5·编写docker-compose.yml 文件
version: '3'
services:
  xxl-job-admin:
    image: xxl-job-admin
    restart: always
    container_name: xxl-job-admin
    ports:
    - 8086:8086
    environment:
    - TZ=Asia/Shanghai
    volumes:
    - ./data/applogs:/data/applogs

  xxl-job-springboot:
    image: xxl-jobs-pringboot
    restart: always
    container_name: xxl-job-springboot
    ports:
      - 8087:8087
    environment:
    - TZ=Asia/Shanghai
6·启动服务:
docke-compose up -d
7·访问方式:
http://IP+端口号/xxl-job-admin

おすすめ

転載: blog.51cto.com/13746824/2535169