2016-10-05 2 views
0

現在、私はエンジニアリングの問題を解決しており、SOコミュニティへの会話を開きたいと考えています。複数のインスタンスの後のタスクスケジューリング

私はタスクスケジューラを実装したいと思います。私は、弾性ロードバランサ(ELB)の背後にあるnodeJSアプリケーションの2つの別々のインスタンスを持っています。問題は、両方のインスタンスが起動し、同じタスクロジックを実行しようとして、タスクが複数回実行された場合です。

私の現在のソリューションは、彼らは、それが実行時間間隔を指定していますので、タスクが既に実行されていないかどうかを確認するために、データベースを参照する必要があり、その後、実行するようにスケジュールタスクにノードのスケジュールを使用することです。

ここで論理は少し厄介である、と私はこれを行うに取り掛かることができ、よりエレガントな方法があるかどうか、私は疑問に思って。そのインスタンスのみがタスクを実行するように -

は、おそらく特定のインスタンス上の特定のenv変数を設定することが可能です。

あなたはどう思いますか?あなたがAWSシンプルなキューサービスの利用例完璧な例のように見えるが記述されている何

答えて

0

。あなたの溶液中で外を見るために

https://aws.amazon.com/sqs/details/

キーポイント:

  • あなたの作業負荷の反射で視認性のタイムアウトを選ぶことを確認します(そのメッセージはまだながらキューを再入力しないでください他の作業者が処理中)
  • ワークロードをメッセージに保存しないでください。メッセージのサイズは最大256 KBに過ぎず、メッセージサイズはパフォーマンスとコストに影響します。
  • 請求を理解していることを確認してください。請求は64KBチャンクで課金されるため、1 220KBメッセージは4x 64KBチャック/リクエストとして課金されます。
  • メッセージを小さくすると、バッチリクエストを行うことで、より多くのお金を節約することができます。
  • longpollingを使用してメッセージを取得し、メッセージ要求から最大の価値を引き出す。
  • EC2 IAMロールを使用してSQSへのアプリケーション権限を付与します。これは、AWSが推奨する最良のセキュリティ手法と推奨されている方法です。

それは優れたサービスだし、うまくあなたの現在の必要性を解決する必要があります。

ありがとうございます!

ザビエル。

関連する問題