0

Node.js API アプリケーションがいくつかあります。それらはすべて非常によく似たモデルに従っています。

リクエストをリッスンする 1 つの HTTP サーバー (エクスプレス) があり、挿入リクエストをキューに入れます。

このキューをリッスンする別のイベント ハンドラーがあり (現在は mongodb にありますが、redis またはその他のものである可能性があります)、見つかった場合はアイテムを処理し、一定の時間間隔の後に再試行します。

私のサーバーはすべてマルチコア インスタンスであるため、負荷を分散するために子プロセスをフォークしました。ただし、現在、これらの各プロセスには、これらのイベント ハンドラー (HTTP とキュー ハンドラー) の両方があります。

どちらがより良いアプローチですか? ハンドラーを異なるプロセスに分離するか、または各プロセスに両方のハンドラーを配置しますか (私の現在の設定)? 私の API 呼び出しの約 90% は、後でキュー ハンドラーによって処理される必要があるアイテムをキューに追加することになります。

最初は、これらの両方を 2 つの異なるノード アプリケーション自体に分離していましたが、サーバー エンドでのプロセスとアプリケーションの管理を容易にするために、それらを 1 つにまとめました。

4

1 に答える 1

1

12-factorアプリを見てみましょう。このアプリでは、独立したタスクごとに個別のアプリケーションを実行することを推奨しています。ただし、すべてのタスクを同じコード リポジトリでホストすることをお勧めします。これにより、エンド ツー エンドのテストが容易になり、それらの同期を維持できます。次に、Procfilesのような手法を使用して、異なるアプリケーションの複数のインスタンスを起動します。

于 2013-09-12T13:59:54.070 に答える