構成された天気を生成/計算する天気シミュレーターがあり、0.5秒ごとにsetIntervalが起動し、一連の計算を実行して、読み取り値を取得し、データを人間が読めるように処理するとします。
次に、おそらくデータが実際に変更された場合にのみ、ソケットを介してログインしたパーティに関連データを送信します。
では、天気シミュレーション/ジェネレーターを子プロセスで単独で実行し、I/Oをノードのシングルスレッドに保持する方がよいでしょうか。
または、それはロック要件を作成しますか?
構成された天気を生成/計算する天気シミュレーターがあり、0.5秒ごとにsetIntervalが起動し、一連の計算を実行して、読み取り値を取得し、データを人間が読めるように処理するとします。
次に、おそらくデータが実際に変更された場合にのみ、ソケットを介してログインしたパーティに関連データを送信します。
では、天気シミュレーション/ジェネレーターを子プロセスで単独で実行し、I/Oをノードのシングルスレッドに保持する方がよいでしょうか。
または、それはロック要件を作成しますか?
あなたを導くべき原則は関心の分離だと思います。node.jsサーバーは通信コンジットです。あなたの気象シミュレーターはそれだけです。それらの1つに加えられた変更が、他の変更に関係する可能性はほとんどありません。これは、後で気象シミュレーターが重くなったり、予想よりも多くのユーザーを獲得し始めたりした場合にも、よりスケーラブルな選択肢です。
Webクライアントができれば、天気イベントフィードを直接購読したいと思うでしょうが、シミュレーターでWebSocketをいじくりまわす必要があると思わせないでください。
計算が集中する場合は、それらを子プロセスとして実行し、node.jsイベントループの応答性を維持することを強くお勧めします。子のstdoutでイベントデータを聞いて完了したら、データが利用可能になり次第送信できます。
非同期の読み取りと書き込みを使用して、物事をブロックし始めたり、ロックについて心配したりしないようにしてください。