2015-09-01 41 views
0

我已经集成twemproxy到网络层和我有6 Elasticache(1个主站,5读副本),我得到的问题是,所有副本都有相同的密钥一切都是相同的,但缓存命中的一个副本比方法更其他人和我进行了几次负载测试仍然在每次测试中我都得到了相同的结果。我有单独的数据引擎写入此群集的主服务器上,剩下的5个副本服务器与其同步。所以我只使用twemproxy从Elasticache读取数据,而不是为了分片目的。所以我简单的问题是,为什么我得到90%的Elasticache的单一读副本命中应该在所有阅读副本均匀分布命中?对?不均匀缓存命中

谢谢你提前

回答

0

Twemproxy哈希一切,我记得。这意味着它会尝试在你给它的主人之间分配钥匙。如果你有一个主人,这意味着它将所有东西都散列到一台服务器上。因此,就其而言,您有一台服务器可以接受查询。因此,在这种情况下,它不会帮助你。

如果您希望单个端点通过一组相同的从站分布读取,则需要在从站之前放置一个TCP负载平衡器,并让您的应用程序与负载平衡器的IP端口进行通信。常用选项的Nginx和HAProxy的以软件为基础的,在AWS上可以使用它们的负载平衡器,但你可能会遇到的各种资源限制在你的控制那里,几乎所有的硬件负载平衡器将工作以及(虽然这是困难的,如果在AWS上不是不可能的)。

要使用的负载均衡是依赖于与每个选项你(或你的人员的)的舒适性和知识水平。

+0

但正如我所说,我们没有使用Twemproxy因为我们只是用它读目的哈希。 – Rohit

+0

Twemproxy总是哈希,这是它是由做。除非你自己修改源代码。使用单个可接受的服务器,所有密钥将散列到它所拥有的一个插槽。所以,一台服务器。或者,你有一个热门的碎片。或两者。无论哪种方式,无论您是否愿意,Twemproxy都会散列数据。 –