2017-10-30 12 views
1

私はsocketclusterとソケットに一般的にかなり新しいです。だから私はターミナルチャットの例を使用しました。https://github.com/devonJS/socket-cluster-chat/socketclusterはある従業員から別の従業員にクライアントを渡します

2人ではなく2人の人にスケーリングしたいと思います。特に、2番目のワーカーをバックアップしたいと思います。したがって、最初のワーカーが死亡した場合は、すべてのクライアントがバックアップワーカーに接続するようにします。そうする権利があるはずですか?

私はちょっと遊んでいますが、私はそれを正しくすることはできません。 私は本当に正しい方向にポインタを感謝します。私は永遠またはnginxのような他のソリューションがあることを知っていますが、私はそれを理解したと思うので、私はそれを自分で実装したいと思います。私はコードをポストしなかった、それはかなりビットですが、私は、必要に応じてそれを編集することができます。 ここでもまた、どんなポインタもありがとうございます。 いいえ。

答えて

0

Node.jsではプロセス間のインスタンスの受け渡しはサポートされていません。ほとんどの場合、反パターンになります。

SocketClusterでは、各クライアントソケットは任意の時点で1つのワーカーに接続されます。複数のワーカーがある場合、クライアントソケットは接続先の特定のワーカーを選択できません。デフォルトでは、SCはNode.jsクラスタモジュールのラウンドロビンアルゴリズムを使用してクライアントを自動的に配布します。これは、部分的なDDoS攻撃を軽減するセキュリティ機能です(悪意のあるクライアントがDoS固有のワーカーをターゲットにすることを許可したくない - ワーカー/ CPUコア全体に均等に分散させる必要があります)。

通常、バックアップ目的で、別のホストで2番目のSCインスタンスを起動することをお勧めします。

同じホスト上の別のポートで2番目のSCインスタンスを起動できますが、同じホスト上で2つのSCインスタンスを実行しても、ホストまたはネットワークの障害から保護することはできません。

SCの致命的な(キャッチされていない)エラーにより、ワーカーがクラッシュする可能性がありますが、基本ホストがまだ実行中でインターネットに接続していると仮定すると、ワーカーはほとんど瞬時に再生成します。不必要なワーカークラッシュを避けるための良い方法は、コード内で例外を正しくキャプチャして処理することです(メモリリークなし)。

+0

大変ありがとうございます! –

関連する問題