不均匀的缓存命中率

时间:2015-09-01 02:26:48

标签: redis amazon-elasticache twemproxy

我已将twemproxy集成到web层中,我有6个Elasticache(1个master,5个read replicas)我遇到的问题是所有副本都有相同的键一切都相同但是一个副本上的缓存命中方式比其他副本更多在每次测试中仍然进行了几次负载测试我得到了相同的结果。我有单独的数据引擎,在该集群的主服务器上写入,剩下的5个副本与它同步。所以我使用twemproxy仅用于从Elasticache读取数据而不是用于分片目的。所以我的简单问题是为什么我在Elasticache的单个读取副本上获得90%的命中率它应该在所有只读副本中均匀分配命中数?正确?

提前谢谢

1 个答案:

答案 0 :(得分:0)

我记得Twemproxy哈希的一切。这意味着它会尝试在你给它的主人之间拆分键。如果您有一个主服务器,这意味着它会将所有内容散列到一台服因此,就您而言,您有一台服务器可以接受查询。因此,在这种情况下,它无法帮助您。

如果您希望有一个端点在一组相同的从设备上分配读取,则需要在从设备前放置一个TCP负载平衡器,并让您的应用程序与负载均衡器的IP:端口通信。常见的选项是基于软件的Nginx和HAProxy,在AWS上你可以使用它们的负载均衡器,但你可能会遇到各种资源限制,而且几乎任何硬件负载均衡器都能正常工作(尽管这很难在AWS上并非不可能。)

使用哪种负载均衡器取决于您(或您的员工)对每个选项的舒适度和知识水平。