对不起,我是一个负载平衡的初学者。
在分布式环境中,我们越来越倾向于将处理(map/reduce)发送到数据,以便在本地计算结果,然后进行聚合。
我想要做的是申请分区/分布式数据,而不是复制。按照同样的原则,我希望能够在缓存用户数据的服务器上发送用户请求。
当使用嵌入式缓存或数据存储以获得较低的响应时间时,当数据集很大时,我们倾向于避免复制,并使用分布式/分区缓存。
分区算法通常是基于散列的,允许有副本来处理服务器故障。
最后,用户数据通常托管在3台服务器(1台主副本和2台副本)上。
在本地缓存丢失时,缓存通常能够在其他缓存对等点上搜索条目。这很好,但需要网络访问。我希望有一个负载平衡策略,以避免这个无用的网络调用。
我想知道的是:是否可能有一个负载均衡器知道缓存的分区机制,以便它总是转发给一个具有本地副本的we服务器(如果我们需要数据的话)?
例如,我有一个请求: www.mywebsite.com/ user =387负载均衡器将检查387 userId并知道该用户存储在服务器1、6和12中,因此他可以向其中一个服务器或其他策略进行查询。
如果没有通用解决方案,是否有开放资源或商业、软件或硬件负载均衡器允许定义自定义路由策略?
从请求中提取多少数据会减慢负载均衡器的速度?与roundrobin策略相比,提取url参数(如在我的user=387示例中)并遵循一些规则到正确的for服务器的成本是多少?
在缓存供应商之上是否有一个抽象库,以便我们可以轻松地检索分区数据并将其提供给负载均衡器?
谢谢!
发布于 2012-10-31 08:05:08
有趣的问题。我不认为您的需求有现成的解决方案,但是如果您的散列条件相对简单,并且只依赖于请求(如您的示例中的URL参数),则构建起来非常容易。
如果我正在构建这个程序,我会使用Varnish (http://varnish-cache.org),但是您也可以在其他反向代理中这样做。
https://stackoverflow.com/questions/11042586
复制相似问题