アーラン使用して、どのように私は、クラスタ間で負荷を分散する必要がありますか?

StackOverflow https://stackoverflow.com/questions/662131

  •  20-08-2019
  •  | 
  •  

質問

私は、スレーブ/プール・モジュールを見ていたし、それがどのような私に似ているようです したいが、私は私の中で単一障害点を持っているように、それもそうです アプリケーション(マスターノードがダウンした場合)。

クライアントはフォールバックのために(ゲートウェイのリストを持っている - すべてがやります 接続を受け入れ、そして1同じことが)から選択されます ランダムにクライアントによる。クライアントが接続すると、すべてのノードがあります その後、少なくとも負荷とleast-のIPを持っているかを確認するために調査 ロードされたサーバーがクライアントに返送されます。その後、クライアント このサーバに接続し、すべてがそこに実行されます。

要約すると、私はすべてのノードが両方のゲートウェイとして動作するようにしたいと、実際に プロセスのクライアント要求。負荷分散がのみ行われたとき クライアントは、最初に接続している - 実際のパケットの全てとに処理さ クライアントの「ホーム」ノードます。

私はこれをどのように行うのでしょうか?

役に立ちましたか?

解決

まだ実装され、このモジュールがある場合は、

私は知らないが、私は、ロードバランスが過大評価され、言うことができますか。私が主張することができますすることで、負荷が将来的に、あなたが本当にない例ほとんどで来るどこまでより多くの情報を知っている場合を除き、ジョブのランダム配置が最善の策である、です。あなたが書いた何ます:

  

クライアントは、すべてのノードが少なくとも負荷を有するかを確認するために検査され、その後least-ロードされたサーバのIPがクライアントに転送される接続した場合。

あなたはすべてのそれらの最も負荷のノードは最高のすぐ隣ミリ秒でロードされないことを知ってどのように?あなたがリストに含まれません全てのものを、高負荷のノードだけで次のミリ秒で負荷をドロップしないことを知ってどのように?あなたは非常にまれなケースを持っていない限り、あなたは本当にそれを知ることはできません。

ただ、測定(または計算)あなたのノードのパフォーマンスとセットのノードの確率が選択されることがそれを依存しています。ランダムにかかわらず、現在の負荷のノードを選択してください。最初のアプローチとして、これを使用してください。あなたはそれを設定すると、あなたはいくつかのより高度なアルゴリズムを構成して試すことができます。私はこの最初のアプローチを打ち負かすことは非常に困難な作業になることを賭けます。非常に難しい、私を信頼しています。

編集:1つの微妙な詳細に、より明確にするために、私は強くあなたが現在および過去の負荷から将来の負荷を予測することはできませんが、あなたは確率との現在の分解期間の作業に関する知識を使うべきだと主張タスクの存続期間。この作品は、達成しようとするのは難しいです。

他のヒント

監督ツリーの目的は、必ずしも前方の要求をプロセスを管理することです。あなたが使用可能なプロセスのリストのメンバーに直接リクエストを送信するために異なるコードを使用することができなかった理由はありません。これらのリストを取得するための一つの方法のためget_node()関数

:get_nodesまたはプール:プールを参照してください。

あなたは、プールモジュールは、(処理を、監視を再開し、殺害)プロセスの管理を処理し、透過的にプロセスのプールに要求をリダイレクトするために、いくつかの他のモジュールを使用させることができます。たぶん、あなたはしかし、分散のプールを探していましたか?分散ノードに行くwhithout Erlangでマスタープロセスから逃げるのは難しいだろう。全体の稼働中のシステムはかなり一つの大きな監督の木です。

私は最近、セットアッププロセスグループにあなたを可能にPGモジュールを思い出しました。グループに送信されたメッセージは、グループ内のすべてのプロセスに進みます。それはあなたが望むものに向けて一部の方法を取得する可能性があります。あなたが本当の要求を処理するプロセスを決定するコードを記述する必要がありますが、あなたはそれを使用してマスターせずにプールを得るでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top