IN NODEJS: ノードが複数のスレッドを使用していない場合、同時に実行できる関数は 1 つだけです。多数のリクエストが同時に Web サーバーに到着した場合、これはどのように機能しますか?
スレッドとプロセスに関するパノラマをクリアできますか??
IN NODEJS: ノードが複数のスレッドを使用していない場合、同時に実行できる関数は 1 つだけです。多数のリクエストが同時に Web サーバーに到着した場合、これはどのように機能しますか?
スレッドとプロセスに関するパノラマをクリアできますか??
理論的には、同じ秒内に多数のリクエストが発生した場合、または各リクエストが難しい計算のように時間がかかる処理を行う必要がある場合、サーバーが動かなくなる可能性があります。ラインの「最後」に人に応答しない (ミリ秒単位で遅れる) か、ラインの「前」でそれらの要求に対応するためにノードが実行する必要があるすべてのことを決して完了しないかのいずれかです。
一般に、ノードがとる戦略は、データベースのクエリなどの長い操作を実行する場合、プログラムの実行を待機するのではなく、データベースクエリが実行されたときに他の関数に「コールバック」する必要があるというものです。最終的に完了しました。
これについては、別の SO answerで詳しく説明します。あなたが話していることの他の例については、「node.jsは癌です」とグーグルで検索できます。
しかし、この戦略の普及は、Node と他の言語/フレームワークとの大きな違いの 1 つです。それが Javascript の対処方法です。
さて、実際には、いくつかのことが実際に起こります。
まず、実稼働ノード アプリは、実際にはクラスターまたは負荷分散を提供する何らかのソリューションで実行する必要があります。アプリの動作には複数のプロセスがあるため、ソリューションは一度に複数のことを実行できます。
第二に、すべてを待たないという考えにより、一般的に Node.js は非常にうまく機能します。何かが行われるのを待っているジェットを冷却する代わりに、サーバーをビジー状態に保ちます。
第三に、はい、サーバーで何をするかについて注意する必要があります。何か (データベース内のすべてのレコードを変更する) に時間がかかりすぎる場合は、何らかのワーカー キュー システムを介してバックグラウンドで実行するのがおそらく賢明です。 in the database」はおそらく、ワーカーであるさらに別の Node.js プロセスによって発生するはずです。