私は最近、私のアプリをAmazonに移動させて自動スケーリングを使用するように強制されましたが、私はcronジョブと自動スケーリングの問題に遭遇しました。水平スケーリングとcronジョブ
15分ごとに実行されるcronジョブがあり、サブスクリプションを請求するかどうかを確認し、期限が過ぎているすべてのサブスクリプションを選択して料金請求を試みます。一度処理されると状態が変わりますが、バッチでフェッチされ、プロセスには1〜3分かかります。
同じcronジョブで複数のインスタンスがある場合、simutanoislyを起動してサブスクリプションに複数回請求する可能性があります。これは実際には一度起こりました。
ここで最善のアプローチは何ですか?どういうわけかテーブルをロックするか?
私はAmazonの弾力のある豆の茎とsymfony3を使用しています。
ベストなアプローチを持っているキューおよびサブスクリプションの充電要求ごとに1つのキュージョブです。 RabbitMQ、AMQP、Pheanstalkなどを参照してください。そうでない場合は、一意のパス/名前を持つtmpロックファイルを設定します。ファイルが存在する場合、他のcronは起動しません。それ以外の場合は、tmpファイルが作成され( 'touch( '/ tmp/uniquely.lock')')、終了時または例外/スクリプト終了時にtmpファイルを削除します。後者の問題は、実行中かどうかを監視する必要があることです。そうでなければ、まったく動かない可能性があります。 –
http://queues.io/ Amazonの関連タグを質問に追加することもできます。 –
しかし、一時的な映画はどのようにAmazonのインスタンスで共有されますか?これらは別々のサーバーです – user3908531