を計算する必要があるアプリケーションがありますfoo(String parm1, String parm2): String
。
メソッド foo が計算集約的であると仮定しましょう。
たとえば、foo を計算する AWS マイクロ インスタンスに単純なプロセスを配置したいと考えています。
簡単にするために、foo を計算する JVM プロセスを実行する 10 個のマイクロ インスタンスを開始するとします。
私が持っている質問は次のとおりです。
foo 呼び出しプロセスから foo 計算ノードへの呼び出しを自動的に負荷分散するフレームワークを探しています。そして、できれば、必要に応じて計算ノードを追加できるようにしてください。
ノート:
いくつかのアーキテクチャを使用してこれを実装できます (どれも好きではありません。よりシームレスなものを探しています)。
- 負荷分散メカニズムとして Queue を使用します - ただし、密結合された呼び出しから非同期メカニズムへの移行とその逆を管理する必要があります - これはあまり好きではありません
- 呼び出し先にある種のネーム サービスを検索させ、計算ノードをランダムに選択して Web サービス呼び出しを呼び出すことができますが、これもあまり好きではありません。
- コメンターが指摘したように、AWSにはロードブランサーがありますが、アーキテクチャレベルでのソリューションを探しています。
- 誰かがhaproxyを使用することを提案しました.これは私が検討した良いアプローチですが、JVM内ソリューションが本当に欲しいです.
- Haddop MapReduce のアナロジーを見ることができます。私は、Hadoop が MapReduce を使用可能な計算ノードに送信するのと同様の方法で、密結合されたメソッド呼び出しを計算ノードに送信する機能を提供するものを探しています。