1

を計算する必要があるアプリケーションがありますfoo(String parm1, String parm2): String

メソッド foo が計算集約的であると仮定しましょう。

たとえば、foo を計算する AWS マイクロ インスタンスに単純なプロセスを配置したいと考えています。

簡単にするために、foo を計算する JVM プロセスを実行する 10 個のマイクロ インスタンスを開始するとします。

私が持っている質問は次のとおりです。

foo 呼び出しプロセスから foo 計算ノードへの呼び出しを自動的に負荷分散するフレームワークを探しています。そして、できれば、必要に応じて計算ノードを追加できるようにしてください。

ノート:

いくつかのアーキテクチャを使用してこれを実装できます (どれも好きではありません。よりシームレスなものを探しています)。

  1. 負荷分散メカニズムとして Queue を使用します - ただし、密結合された呼び出しから非同期メカニズムへの移行とその逆を管理する必要があります - これはあまり好きではありません
  2. 呼び出し先にある種のネーム サービスを検索させ、計算ノードをランダムに選択して Web サービス呼び出しを呼び出すことができますが、これもあまり好きではありません。
  3. コメンターが指摘したように、AWSにはロードブランサーがありますが、アーキテクチャレベルでのソリューションを探しています。
  4. 誰かがhaproxyを使用することを提案しました.これは私が検討した良いアプローチですが、JVM内ソリューションが本当に欲しいです.
  5. Haddop MapReduce のアナロジーを見ることができます。私は、Hadoop が MapReduce を使用可能な計算ノードに送信するのと同様の方法で、密結合されたメソッド呼び出しを計算ノードに送信する機能を提供するものを探しています。
4

2 に答える 2

2

AWS で利用可能なAmazonエラスティック ロード バランサーAuto Scalingグループの組み合わせにより、シンプルでスケーラブルなソリューションが得られます。

Auto Scaling は、決定したメトリクスに基づいてインスタンスを追加または削除するためにトリガーされます。ELB の数またはリクエスト、またはインスタンスの負荷になります。

一定の負荷がある場合は、複数のコアで並行して処理できるより大きなインスタンスの使用を検討する必要があります。価格の観点からは、いくつかのマイクロ インスタンスよりも大きなインスタンスを使用することをお勧めします。

于 2013-02-04T18:59:21.673 に答える
2

そのような目的のために、haproxy ロードバランサーは非常に優れたソリューションだと思います。負荷分散戦略のリストを提供し、さまざまなプロトコルをサポートします。

于 2013-02-04T02:34:03.687 に答える