8

Azure にアップロードされる ASP.NET アプリケーションを開発しています。Azure に複数のインスタンスがあり、アプリケーションに必要な cron ジョブを実行したい場合。次に、そのcronジョブが1回だけ実行されるのか、それとも各インスタンスがそのcronを単独で実行するのかを確認したいだけですか?

例: Azure にクラウド サービスの 4 つのインスタンスがあり、アプリケーションが毎日午後 11 時に cron ジョブを実行するとします。それで、そのcronが1回だけ実行されるのか、それとも各インスタンスがそのcronを単独で実行するのか(つまり、cronは4回実行されるのか、それともインスタンスごとに1回と言えますか)を確認したいだけですか?

提案してください。

4

4 に答える 4

4

これまでのところ、cron ジョブを実行する 3 つの方法を見つけましたが、それらはすべて、タスクを実行している可能性のある複数のインスタンスをある程度管理する必要があります。

私がこれまでに使用した選択肢:

  1. Windows タスク スケジューラ - ユーザーとタスクを追加するスタートアップ スクリプトを作成し、それをスケジュールします。詳細については、こちら:実際のユーザーとして Azure スタートアップ タスクを実行する、およびこちら: Windows Azure でのタスク スケジューラの構築

  2. Quartz.Net の使用 - これは私が始めたものですが、Windows タスク スケジューラに移行しましたが、簡単にカスタマイズできるため、うまくいく可能性があります。詳細はこちら: Quartz.net を使用して Windows.Azure ワーカー ロールでジョブをスケジュールする

  3. モバイル サービスで新しいジョブ スケジューラを使用する。私はこれを使用したことはありませんが、昨年末にブログ「 Windows Azure でのジョブ スケジューリング」を読んだとき、次にジョブ スケジューラが必要になったときに検討するためのリストに入れました。まだ少し新しいですが、役に立つかもしれません。

于 2013-04-06T11:35:14.930 に答える
1

他のユーザーが言ったように、それを行うには多くの方法があります。いくつかの提案を追加します。Cloude サービスの Web ロールまたは Web サイトを開発しましたか。前者の場合、最も簡単な方法は、worker ロールも 1 つ (1 つだけ) 作成し、そこからタスクを実行することです。後者の場合は、外部の「トリガー」が必要です。Scheduler (by Aditi) を使用できます。Azure ストアから入手できます (無料のフランがあります)。

于 2013-04-06T13:09:31.947 に答える
0

ロール (Web/ワーカー/VM ロール) に複数のインスタンスがある場合は、Windows Server VM の同じアカウントを取得したことを意味します (バージョンは、構成したゲスト OS バージョンによって異なります)。各 VM はアプリケーション (ASP.NET Web アプリケーションなど) のまったく同じコードを実行し、このロールへのすべての要求は負荷分散され、VM の 1 つがラウンド ロビン ポリシーに基づいて要求を切断します。

したがって、Guarav が言ったように、cron ジョブを 1 回だけ実行する必要がある場合は、ロール インスタンスの 1 つがそれを実行できるようにするためのロック メカニズムが必要です。

于 2013-04-06T13:28:34.890 に答える