node.jsスケーラブル、その意味は? node.jsサーバーのどの部分がスケーラブルであるか。私はそれがCPUリソースの多くを必要とするアプリケーションには適していないシングルスレッド技術だと読んでいます。これらの事実はスケーラビリティに適合しないので、それはどういう意味ですか?Node.jsをスケーラブルにするのはなぜですか?
答えて
ノードが実行するjavascriptはシングルスレッドですが、ネットワークやファイルなど、ノードで呼び出すことの多くがバックグラウンドスレッドで実行されます。基本的な概要については、この記事を参照してください。 Node is not single threaded
あなたがザラザラの詳細が必要な場合は、libuvになりますイベントにスレッドを変換する「魔法」の部分がループしている: http://nikhilm.github.io/uvbook/basics.html#event-loops
また、あなたが必要な場合はノード自体にCPUを多用するには、これを子プロセスに簡単に送ることができます - 詳細はhttp://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_optionsを参照してください。
データベースからの読み取りや更新、ブロッキング、ノンブロッキングなどの操作ですか?これはRDBMSと同じです。あなたは、そのようなアプリケーションのためのNodeをお勧めしますか? – LearningToCode
ロードバランシングのためにスケーラビリティがあります。基本的には、ノードごとに複数のジョブを処理することができ、重大な負担をかけることなく処理できます。これによりスケーラビリティが向上します。
ロードバランシングはどのように実現されていますか? – vuvu
これはスケーラブルではありません。 あなたがしているのは、何も特別なことをせずに(I/O)スケーラブルであることだけです。
I/Oは、実行スレッド間でデータを共有しないため、より安全で簡単に並列処理できます。 Node.jsを使用すると、シンプルでエレガントで使いやすいイベントプログラミングを使用して行うことができます。 GUIやゲームなどのグラフィカルなアプリケーションが長年に渡って使用されてきた、古いかつ証明されたプログラミングのパラダイムです。
実際、完全なマルチスレッドの使用によってはるかに優れたスケールアウトが可能な、C++、c、javaなどの本格的な言語よりもスケーラビリティが劣ります。これにより、CPUの規模を拡大することができますが、ワームの可能性もあります。 CPUを共有するには、データを共有する必要があります。これは別の話です(セマフォ、ロックなど)
上記のいずれの言語でもnode.jsと同じことができますが、あなた自身でロールを張るか、それを提供するライブラリを使用する必要があります。 これは難しいことではありませんが、node.jsよりも確かに難しいです
ほとんどのWebサービスはIOバインドなので、Node.jsはよく適合し、ほとんどの場合OKです。しかし、CPU集約型作業を使用し始めると、イベントは処理されず、すべて停止します。 その場合、別の言語を使用することをお勧めします。そのためにNodeには本当に良い解決策はありません。複数のプロセスを起動できますが、プロセス間でデータを共有することはできません。データを共有しないと、CPUを効率的に拡張する方法がないので、試してみることはできません。
IOにはNode.jsを使用し、CPU集約的な作業には適切なマルチスレッドで適切な言語を使用してください。
NodeのすべてのAPIは、コールバックをサポートするような方法で記述されています。
たとえば、ファイルを読み込む関数は、ファイルの読み込みを開始し、実行環境に即座に戻り、次の命令を実行することができます。ファイルI/Oが完了すると、ファイルの内容をパラメータとしてコールバック関数を渡しながらコールバック関数を呼び出します。したがって、ファイルI/Oがブロックされたり、待機したりすることはありません。これにより、Node.jsのスケーラビリティが向上します。これは、関数が結果を返すのを待つことなく、多数の要求を処理できるためです。 - チュートリアルのポイント。
- 1. Node.jsでサーバ(Nginx、Apache ...)をインストールするのはなぜですか?
- 2. このHTTPモジュールをNode.jsにロードできないのはなぜですか?
- 3. 先物なしでスケーラブルなソリューションを作成するには?
- 4. Node.jsサーバーがこの小さなスクリプトでハングするのはなぜですか?
- 5. スクラムをスケーラブルにするためのテクニックは何ですか?
- 6. jquery mobile - enterpriseスケーラブルなソリューションですか?
- 7. なぜこのjavascriptブロックはNode.jsにありますか?
- 8. スケーラブルなMoebius-stripをWPFで作成するには?
- 9. 共有サーバーでnode.jsを使用できないのはなぜですか?
- 10. node.jsでIndexedDBを使用できないのはなぜですか?
- 11. node.jsを共有ホスティングで実行できないのはなぜですか?
- 12. RabbitMQをスケーラブルにするには?
- 13. なぜNode.jsのfs.readFile()は文字列ではなくバッファを返しますか?
- 14. 実行時にNode.jsがコンパイルされないのはなぜですか?
- 15. phpはリバースajaxロングポーリングでスケーラブルですか?
- 16. 製品カタログの中で最もスケーラブルなデータモデルは何ですか?
- 17. ファイルにホスト名を追加するとnode.jsファイルが機能しなくなるのはなぜですか?
- 18. シンプルでスケーラブルなアプリケーションに使用するHTTPフレームワークは何ですか?
- 19. MySQLのスケーラブルなデータモデル
- 20. スケーラブルなクラウドコンピューティングサービス
- 21. スケーラブルなネットワーク
- 22. スケーラブルなルビーアプリケーション
- 23. Node.jsは何を分離したのですか?なぜ彼らは今死んでいるのですか?
- 24. なぜ永遠にNode.JSがrc.localで動作しないのですか?
- 25. なぜNode.jsのMySQLが遅いのですか?
- 26. このnode.jsコードがブロックされているのはなぜですか?
- 27. node.jsサーバーのプロセスがクローンされているのはなぜですか?
- 28. Response.writeがブラウザをNode.jsでブロックするように見えるのはなぜですか?
- 29. NoSQLがNode.jsでRDBMSよりもはるかに多く使われているのはなぜですか?
- 30. コーディングプロセスをスケーラブルにする方法はありますか?
Duplicate of:[Scaling node.js](http://stackoverflow.com/questions/4710420/scaling-node-js) –
@ Jasonテクニカルコーディングの回答を探しているわけではありません – vuvu
この投稿は、負荷分散とレディスを含むスケーラビリティを強調しています。 –