1

我有一个需要计算的应用程序foo(String parm1, String parm2): String

让我们假设方法 foo 是计算密集型的。

我想有一个简单的进程坐在计算 foo 的 AWS 微实例上。

为了简单起见,我启动了 10 个运行 JVM 进程的微型实例来计算 foo。

我的问题是:

我正在寻找一个框架,该框架将自动负载平衡从我的 foo 调用进程到我的 foo 计算节点的调用。并且,如果需要,最好允许我添加计算节点。

笔记:

我可以使用几种架构来实现这一点(我都不喜欢这些架构——我正在寻找更无缝的东西):

  1. 使用队列作为负载分配机制——但是我必须管理从紧密耦合的调用到异步机制然后返回——不要太喜欢这个
  2. 我可以让被调用者查找某种名称服务并随机选择一个计算节点并调用 Web 服务调用——同样不太喜欢这个。
  3. 正如评论者指出的那样,AWS 有一个负载均衡器——但是我正在寻找架构级别的解决方案。
  4. 有人建议使用 haproxy,这是一种很好的方法,我考虑过,但是我真的很想要一个 in-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 回答