私は大量の同時ユーザーを持つWebアプリケーションを実装する必要があります。私はnode.jsを使用することにしました。これは、規模が非常に良く、パフォーマンスが良いし、オープンソースコミュニティなどがあるからです。そして、同じイベントループでユーザーの数が多いため、ボトルネックを避けるために、マルチコアCPUを利用するためのプロセス。さらに、私はCassandraでビッグデータを操作する必要があるため、3台のマシン(メイン+ 2)があります。これは、3 * n node.jsのプロセスがあることを意味します。ここで、nはCPUのコア数(マシンは同一)です。分散したnode.js Webサーバーを設計する方法
[OK]を、私は研究を開始し、私は次のスキーマで終わる:
- nginxのポート80でリッスンし、静的コンテンツ(IMG、CSS、JS、等)を提供するためにのみ使用。
ダイナミックトラフィックをhaproxyに転送します。私はnginxのを設定する方法を知っているが、私はまだhaproxyルックを取らなければならないので、私はそれhaproxyはnginxのとhaproxyがメインマシン(エントリー・ポイント)にインストールされているポート4000 でリッスンしていると言うでしょう。 - 3台のマシン間のハプロキシ負荷分散。それは私が、単一の正しいだ場合のNode.jsプロセスは、n個のプロセスのクラスタが4001
に耳を傾けてい
は、右、非常に正常ですか?セッションは単なるマップであり、このマップはObjectであり、このObjectはnode.jsプロセス内に存在します。 Haproxyはラウンドロビンスケジューラで設定されるため、同じユーザーを別のnode.jsプロセスに転送することができます。すべてのnode.jsプロセスで同じセッションオブジェクトを共有するにはどうすればよいですか?どのようにグローバルオブジェクト(これは同じマシン(node.jsクラスター)とネットワーク全体を含む)を共有できますか? node.jsを使用して分散型Webアプリケーションを設計するにはどうすればよいですか?同期タスクを容易にするモジュールはありますか?
haproxyには、スティッキセッションを処理する複数の方法があります。http:// stacko verflow.com/questions/6498030/load-balancing-haproxy-or-other-sticky-sessionsグローバルオブジェクトの場合は、redisなどを使用します。 – numbers1311407
http://stackoverflow.com/questions/5398209/scaling-node-js-across-multiple-cores-serversに似ています.3台のサーバもあります。 –