ラベルベースのルーティングを使用して、カナリアジョブのスケジューリングを実行できます。このメソッドは、指定されたラベルを持つジョブが、同じラベルを持つエグゼキュータにスケジュールされることを保証します。このトピックでは、ラベルベースのルーティングのアーキテクチャ、カナリアジョブスケジューリングのベストプラクティス、およびラベルベースのルーティングを設定する手順について説明します。
ラベルベースのルーティングのアーキテクチャ
XXL-JOB は、ラベルベースのルーティングポリシーをサポートしています。エグゼキュータがサーバーにハートビートを送信するとき、そのラベル情報が含まれます。ラベルを指定することで、各ジョブに対してラベルベースのルーティングを設定できます。これにより、各ジョブが指定されたラベルを持つエグゼキュータにスケジュールされることが保証されます。
カナリアジョブスケジューリングのベストプラクティス
カナリアジョブスケジューリングの実行方法
たとえば、ユーザー ID が 2xx で始まるデータのカナリアリリースを実行する場合、ジョブをコピーして jobA-base と jobA-gray の 2 つのジョブを作成できます。各ジョブのジョブパラメーターを設定します。jobA-base のジョブパラメーターを userId=-2xx に、jobA-gray のジョブパラメーターを userId=2xx に設定します。jobA-gray が実行されると、2xx で始まるユーザー ID のデータのみが処理されます。jobA-base が実行されると、2xx で始まらないユーザー ID のデータが処理されます。
エンドツーエンドカナリアリリースの実行方法
ラベルベースのルーティングを使用して、シングルホップのカナリアリリースを実行できます。これは、ラベルが gray のマシンにカナリアジョブをスケジュールできることを意味します。ジョブがマイクロサービスやメッセージなどのダウンストリームサービスも呼び出す必要があり、それらのカナリアノードを呼び出したい場合は、MSE Microservices Governance を使用してすべてのサービスをカナリアレーンに追加できます。これにより、エンドツーエンドのカナリアリリースが自動的に実行されます。
ラベルベースのルーティングを設定する手順
ステップ 1: ユーザー側ノードのラベルを設定する
SDK プラグインを使用した拡張 (コードの変更が必要)
pom.xml ファイルに次の依存関係を追加し、
xxl-job-core依存関係の前に配置します。バージョン番号の詳細については、「バージョンガイド」をご参照ください。<dependency> <groupId>com.aliyun.schedulerx</groupId> <artifactId>schedulerx3-plugin-xxljob</artifactId> <version>${Latest version number}</version> </dependency>アプリケーションの起動時に、Java 仮想マシン (JVM) パラメーター
-Dxxl.job.executor.labelを追加してラベルを設定します。たとえば、次のサンプルコマンドを実行してアプリケーションを起動し、ラベルを設定できます。java -Dxxl.job.admin.addresses=http://xxljob-xxxx -Dxxl.job.executor.appname=app1 -Dxxl.job.accessToken=xxx -Dxxl.job.executor.label=gray app.jar
MSE Microservices Governance のエージェントを使用した拡張 (コードの変更は不要)
アプリケーションのデプロイメント方法に基づいて、アプリケーションを MSE Microservices Governance エージェントに接続します。詳細については、「アプリケーションの接続」をご参照ください。
重要エージェントのバージョンは 4.4.0 以降である必要があります。
アプリケーションのデプロイメント方法に基づいて、カナリアアプリケーションクラスターとエンドツーエンドカナリアリリースレーングループを作成してデプロイします。詳細については、「エンドツーエンドカナリアリリース」をご参照ください。
ステップ 2: 接続の確認
左側のナビゲーションウィンドウで、[アプリケーション管理] をクリックします。表示されたページで、[エグゼキュータ数] を確認します。接続されたマシンのラベルが表示されていれば、接続は成功です。
ステップ 3: ラベルベースのルーティングを設定する
左側のナビゲーションウィンドウで、[ジョブ管理] をクリックします。表示されたページで、ターゲットジョブを見つけ、[操作] 列で を選択します。[指定タイプ] を [ラベル] に設定します。これにより、ジョブが指定されたラベルを持つエグゼキュータ上でのみ実行されるようになります。