0

对不起,我是负载平衡的初学者。


在分布式环境中,我们越来越倾向于将处理(map/reduce)发送到数据,以便结果在本地计算然后聚合。

我想做的事情适用于分区/分布式数据,而不是复制。遵循同样的原则,我希望能够在缓存用户数据的服务器上发送用户请求。


当使用嵌入式缓存或数据网格来获得低响应时间时,当数据集很大时,我们倾向于避免复制并使用分布式/分区缓存。

分区算法通常是基于散列的,并且允许有副本来处理服务器故障。

最后,用户数据通常托管在 3 个服务器(1 个主副本和 2 个副本)上

在本地缓存未命中时,缓存通常能够搜索其他缓存对等点上的条目。这工作正常,但需要网络访问。我想要一个负载平衡策略来避免这种无用的网络调用。


我想知道的是:是否有可能拥有一个知道缓存分区机制的负载均衡器,以便在我们需要数据时它总是转发到具有本地副本的网络服务器之一?

例如,我有一个请求 www.mywebsite.com/user=387 负载均衡器将检查 387 userId 并知道该用户存储在服务器 1、6 和 12 中。因此他可以轮询其中一个或其他战略。


如果没有通用解决方案,是否有允许定义自定义路由策略的开源或商业、软件或硬件负载平衡器?

请求中提取多少数据会减慢负载均衡器的速度?与例如循环策略相比,提取 url 参数(例如在我的 user=387 示例中)并遵循一些规则转到正确的网络服务器的成本是多少?

在缓存供应商之上是否有一个抽象库,以便我们可以轻松检索分区数据并将其提供给负载均衡器?

谢谢!

4

1 回答 1

0

有趣的问题。我认为没有现成的解决方案可以满足您的要求,但是如果您的散列标准相对简单并且仅取决于请求(如您的示例中的 URL 参数),那么构建将非常容易。

如果我正在构建它,我会使用 Varnish (http://varnish-cache.org),但你可以在其他反向代理中做同样的事情。

于 2012-10-31T08:05:08.583 回答