抱歉,我是负载均衡的初学者。
在分布式环境中,我们越来越倾向于将处理(map / reduce)发送到数据,以便在本地计算结果然后进行聚合。
我想做的是申请分区/分布式数据,而不是复制。 遵循相同的原则,我希望能够在缓存用户数据的服务器上发送用户请求。
当使用嵌入式缓存或数据网格来获得较慢的响应时间时,当数据集很大时,我们倾向于避免复制并使用分布式/分区缓存。
分区算法通常基于散列,允许使用副本来处理服务器故障。
最后,用户数据通常托管在3台服务器(1个主副本和2个副本)上
在本地缓存未命中时,缓存通常能够在其他缓存对等体上搜索条目。 这工作正常,但需要网络访问。 我希望有一种负载平衡策略来避免这种无用的网络呼叫。
我想知道的是:是否有可能有一个负载平衡器知道缓存的分区机制,以便它总是转发给其中一个具有本地副本的Web服务器(如果我们需要的数据?) / p>
例如,我有一个请求www.mywebsite.com/user=387 负载均衡器将检查387 userId并知道该用户存储在服务器1,6和12中。因此他可以循环到其中一个或其他策略。
如果没有通用解决方案,是否有开源或商业,软件或硬件负载平衡器允许定义自定义路由策略?
请求提取数据的数量会减慢负载均衡器的速度?提取url参数的成本是多少(比如在我的例子中用user = 387)并遵循一些规则来转到正确的网络服务器,相比之下,例如圆形策略?
缓存供应商之上是否有一个抽象库,以便我们可以轻松检索分区数据并将其提供给负载均衡器?
谢谢!
答案 0 :(得分:0)
有趣的问题。我认为没有一个现成的解决方案可以满足您的要求,但如果您的散列标准相对简单并且仅依赖于请求(如您的URL参数),那么构建将非常容易。例子)。
如果我正在构建这个,我会使用Varnish(http://varnish-cache.org),但你可以在其他反向代理中做同样的事情。