2

PHP + Laravel + MySQL で Web アプリを作成しています。

システムでは、ユーザーは任意の時間にメール (およびその他の API 呼び出し) をスケジュールできます (WordPress で投稿をスケジュールするのと同じように)。CRON を使用してデータベースを 5 分ごとに検査し、送信すべきメールを見つけて送信し、ステータスを更新できます。

ただし、これは SaaS アプリです。そのため、特定の時間に送信される電子メールの量が急速に増加する可能性があります。CRONスクリプトが実行されるたびに「ロックファイル」を作成して、一度に実行されるインスタンスが1つだけになるようにすることができます。スクリプトの実行が終了すると、ロック ファイルは削除されます。

しかし、データが大きくなる可能性があるため、複数の「ワーカー」を使用して、複数のメッセージを同時に処理する方法が必要です。そのようなキューを管理する既存のソリューションはありますか?

4

1 に答える 1

2

はい!タスク/メッセージ/ジョブキューは、あなたが探しているものです! さまざまなタスクをキューに入れ、そこから取得して処理することができます。このプロセスは、各ワーカーが前のタスクで終了したタスクをプルできるため、水平方向にスケーリングできます。

タスクと実行する必要があるものをアップロードするだけの cron が 1 分または 2 分ごとにあるはずです。これにより、cron が非常に高速になります。

Iron.ioを見てみましょう。これは、これらの種類のシステムの概要を説明している Web サイトからの抜粋です。

クラウド開発者がフロントエンド タスクをオフロードし、スケジュールされたジョブを実行し、バックグラウンドで大規模にタスクを処理する簡単な方法を提供する、使いやすくスケーラブルなタスク キュー。

Gearmanは、自分で使用できる非常にシンプルな優れたソリューションでもあります。メッセージをさまざまな言語で送信し、別の言語を使用して処理することができます。PHPと言う-> Cなど...

ウィキペディアのリンクは、あなたが知る必要があるすべてを教えてくれます。ここに簡単な抜粋があります:

メッセージ キューは、非同期通信プロトコルを提供します。つまり、メッセージの送信者と受信者は、同時にメッセージ キューと対話する必要はありません。キューに配置されたメッセージは、受信者が取得するまで保存されます。

于 2013-10-03T11:21:31.947 に答える