基于内容的负载均衡

时间:2012-10-26 05:46:45

标签: load-balancing

我想将相同内容的所有请求发送到同一个后端服务器。我怎么能这样做是否有像HaProxy这样的开源版本可以做到这一点。

例如。客户端1已请求内容A,我的负载均衡器将该请求定向到循环服务器中的一个,即循环基础上的X.现在,如果我收到来自不同客户端2的相同内容A的请求,则该请求应该定向到同一个后端服务器X.是否有任何开源解决方案可以执行此操作。

任何帮助/指示都将不胜感激。

谢谢,Nikhil

2 个答案:

答案 0 :(得分:2)

Ha proxy可以做你想要的,甚至更多。它有许多acl options可用于满足大多数要求。 Varnish是另一种具有强大acl语言的选项。

答案 1 :(得分:0)

有趣的问题! 我担心它可以依靠技术。只要你在HTTP域中,也许你可以以某种方式配置你的负载均衡器。

我是一个Java人,所以,在Java中,你可以拥有,比如EJB。这些是安装在服务器上的分布式组件,可以远程运行。他们的通信协议是二进制的,我怀疑负载均衡器可以读取它。

因此,在JBoss中,您可以创建一个服务器集群,并在不同的服务器上部署不同的EJB。 例如,假设系统中有两个EJB。一个允许买牛奶,另一个买披萨。

所以你在服务器1上部署了牛奶ejb,在服务器2上部署了pizza ejb。

现在你有一个命名解析服务(在java / jboss中称为HA-JNDI)。 它的基本思想是提供一个基于名称的远程存根:

PizzaEJB pizzaEjb = NamingService.getMyStub(PizzaEJB.class);

它当然不是真正的工作代码,但它表明了一个想法。

诀窍是这个命名服务器知道每个EJB的部署位置,所以如果你只在服务器2上拥有pizza ejb,它将总是返回一个存根,它将转到服务器2并购买披萨:)

Java程序员如此,不关心它是如何实现的。只是提出一个想法 - 命名服务在每个服务器上部署了某种形式的代理,并且彼此交谈......

这就是java可以在这里工作的方式。

现在我的想法,也许你可以将你的api基于Restful web服务,在这种情况下是它易于解析的http请求,因此实现可以相对容易(同样,如果你的负载均衡器支持这种处理)。 / p>

希望这会有所帮助