3

私たちのプロジェクトは、node.jsに対してTCPパケットの負荷分散を行う必要があります。

提案は次のとおりです:(NginxまたはLVS)+キープアライブ+ノードクラスター

ここに画像の説明を入力してください

質問:

  1. TCPサーバーへの高い同時クライアント接続は、長期間有効である必要があります。NginxとLVSのどちらが適していますか?
  2. マスターサーバー上のノードマスターに異なる優先度レベルを割り当てる必要があります(ローカルホストサーバーの優先度はリモートサーバーよりも高くなります)。NginxとLVSのどちらがこれを実行できますか?
  3. NginxとLVSのどちらのCPU使用率が小さく、スループットが高いですか?
  4. NginxとLVSのパフォーマンスベンチマーク/機能比較に関する推奨ドキュメントはありますか?

最後に、私たちの提案が合理的かどうか疑問に思います。他に選択すべきより良い提案やコンポーネントはありますか?

4

1 に答える 1

3

サーバーの静的アセットにnginxは必要ないと思います。そうでない場合、LVSはオプションになりません。

1)nginxはサードパーティモジュールを介したTCPのみをサポートしますhttps://github.com/yaoweibin/nginx_tcp_proxy_module Webサーバーが必要ない場合は、LVSの方が適していると思いますが、#の最後にある追加のコメントを参照してください。答えます。

2)LVSは優先度をサポートしますが、nginxはサポートしません。

3)おそらくLVS:nginxはユーザーランド、LVSカーネルです。

4)嘘、大嘘、ベンチマーク。機器への負荷をシミュレートし、ノードクライアントスクリプトを記述して、セットアップを強化する必要があります。

https://github.com/LearnBoost/up まだ本番環境ではありませんが、次の理由から、このルートを追求しています。

1)優先度の要件もありますが、それらはカスタムであり、動的に変更されます。実行時に優先度を調整しており、ノードをプログラムするのに1時間もかかりませんでした。

2)多くのコード更新を展開し、既存のクライアントを中断することなくそれを実行できるようにします。好きなことをするようにコーディングできるので、新しい接続を処理するために新しいプロセスを起動し、既存の接続がすべてなくなったときに古いプロセスを停止させることができます。

3)表示したいメトリックをredisサーバーにプッシュするため、すべてを表示できます。

プロセス/サーバーごとに最もパフォーマンスが高いわけではないと思いますが、プログラムによる制御が非常に多いという利点は価値があります。スケールアウトには冗長性が高いという利点があるため、パフォーマンスの最後のビットを絞り出すことは検討していません。スタック。

たくさんのコードをコピーして貼り付けることができるかどうかをすばやく確認しましたが、急速にコーディングしており、一般の消費には適さないものへの参照がたくさんあります。

于 2012-04-20T07:22:24.017 に答える