我有一个需要计算的应用程序foo(String parm1, String parm2): String
。
让我们假设方法 foo 是计算密集型的。
我想有一个简单的进程坐在计算 foo 的 AWS 微实例上。
为了简单起见,我启动了 10 个运行 JVM 进程的微型实例来计算 foo。
我的问题是:
我正在寻找一个框架,该框架将自动负载平衡从我的 foo 调用进程到我的 foo 计算节点的调用。并且,如果需要,最好允许我添加计算节点。
笔记:
我可以使用几种架构来实现这一点(我都不喜欢这些架构——我正在寻找更无缝的东西):
- 使用队列作为负载分配机制——但是我必须管理从紧密耦合的调用到异步机制然后返回——不要太喜欢这个
- 我可以让被调用者查找某种名称服务并随机选择一个计算节点并调用 Web 服务调用——同样不太喜欢这个。
- 正如评论者指出的那样,AWS 有一个负载均衡器——但是我正在寻找架构级别的解决方案。
- 有人建议使用 haproxy,这是一种很好的方法,我考虑过,但是我真的很想要一个 in-JVM 解决方案。
- 可以看一下 Haddop MapReduce 类比,我正在寻找一种能够以类似于 Hadoop 将 MapReduce 发送到可用计算节点的方式向计算节点发送紧密耦合方法调用的能力。