2017-11-09 7 views
0

ロードバランシングの代わりにクライアントを直接クラスタノードに接続するとどうなりますか?アプリケーションサーバー「シャーディング」

ので:

  1. クライアントはDispatcher
  2. Dispatcherに要求を送信し、サービスノードが
  3. クライアントが失敗するまで、与えられたサービスノードに継続使用するようにクライアントに指示します。この設定は、あなたがする必要があるような方法あまりスケーラブルであるためにあなたの艦隊を残し:次にクライアントは、すべてのサービスノードがクライアント
  4. @Almaドによって表示されている必要があり短所

    • (1)

に進みます全体的な

賛否

も悪化し、負荷分散を意味するかもしれないクライアント<>ノード接続を持続0
  • Dispatcherはバランサよりも簡単で、少ないリソース

任意の追加の考えを必要としますか?このアプローチをどこかで使用すると、説明へのリンクを共有できますか?

+0

なぜ「ディスパッチャ」は簡単ですか?さらに、あなたが言うことは、ほとんどのロードバランシングソフトウェアで、「スティッキーセッション」や同様のフラグ(単にクッキーになるウェブのコンテキスト)を使って簡単に実装できます。さらに、この構成では、全体の負荷分散が悪化する可能性があるクライアント<>ノード接続を維持する必要があるため、艦隊のスケーラビリティが向上しません –

+0

"Dispatcher"はクラスタトラフィック全体をルーティングせず、ノードアドレスそれがより簡単だと思います。しかし、あなたは正しい - 全体的な負荷分散が悪化する可能性があります。 –

答えて

1

ディスパッチャはどのノードに送信するのかをどのように知っていますか?ロードバランサの利点は、すべての要求を取得していることです。そのため、負荷の高いノードが分かります。ディスパッチャは、クライアントを一度見て、もう一度見ることはありません。

また、ノードに障害が発生したときにクライアントがディスパッチャに戻る方法を知っていますか?失敗の本質は、クライアントのリダイレクトが生きていないことを意味します。

+0

単純なアプローチとして、ディスパッチャは、クライアントIDをアクティブノードの数で割った余りを使用することができます。より複雑なシナリオでは、アクティブノードのCPU使用を使用できます。ノードが接続を受け入れなくなったとき、クライアントはディスパッチャに戻ります。 –

+0

スマートクライアントを作っているので、負荷を分散する方法を知っています。この時点で、ディスパッチャが必要なのでしょうか?各操作では、「遅すぎる」、「下がった」のいずれかを判断し、ディスパッチャに戻り、同じアルゴリズムを実行してクライアントに渡すことを知る必要があります。 –

関連する問題