2

私は現在、Windows のスケジュールされたタスクを実行して .net スクリプトを実行し、日の注文を処理する Windows インスタンスを AWS に持っています。

最近、ELB を使用していくつかのインスタンスの負荷を分散しましたが、これはすべて問題ありません。

問題は、すべてのインスタンスが実行しないように、スケジュールされたタスクをどのようにセットアップするかです。AWS で OpsWorks、SimpleWorkFlow などを調査しましたが、この比較的単純なタスクでどれに焦点を当てるべきかについて非常に混乱しています。

ありがとう

4

2 に答える 2

1

Amazon SWF を使用できるかもしれませんが、それはやり過ぎ/複雑に思えます。

Amazonパイプラインもあります。おそらく正しい答えですが、セットアップするには少し読む必要があります。

簡単なことは、すべてのボックスでジョブをスケジュールし、データベースに勝者を宣言させることです。

A) DB 内の未処理の注文を「ロック」してから処理することができます。単一のトランザクションをロックしている限り、他のワーカーは 0 件の注文 (またはいくつかの新しい注文) を処理します。

B) ジョブがロックする単一の行を持つ特別なテーブルを作成できます。「work_table set worker='mybox', work_start = now() where worker = '' を更新」のようなものです。

ワーカーボックスが死んでも頑強にしたい場合は、より複雑なルールを作成する必要があります: ワーカーは、自分のジョブが完了とマークされるまでぶらぶらすることができます。ジョブがタイムリーに完了しない場合、彼らは最初のワーカーが死亡したと想定し、そのワーカーからロックを盗み、自分でジョブを実行しようとする可能性があります。

データベースがない場合は、いつでも SDB (Simple DB) または DynamoDB を使用できます。DB を 1 日に数回ヒットすることは、無料利用枠に確実に収まります。

正しく行えば、全体で 20 ~ 50 行のコードしかありません。

于 2013-12-24T14:18:39.017 に答える