0

我已将 twemproxy 集成到 Web 层中,并且我有 6 个 Elasticache(1 个主副本,5 个只读副本)我遇到的问题是所有副本都具有相同的键,一切都相同,但是一个副本上的缓存命中率比其他副本多得多,我执行了几次加载仍然在每次测试中测试我得到相同的结果。我有一个单独的数据引擎,可以在这个集群的主节点上写入数据,剩下的 5 个副本与之同步。所以我使用 twemproxy 仅用于从 Elasticache 读取数据,而不是用于分片目的。所以我的简单问题是为什么我在 Elasticache 的单个只读副本上获得了 90% 的命中,它应该在所有只读副本之间平均分配命中?正确的?

先感谢您

4

1 回答 1

0

我记得,Twemproxy 会散列所有内容。这意味着它会尝试在你给它的主人之间分割钥匙。如果您有一个主服务器,这意味着它将所有内容散列到一台服务器。因此,就它而言,您有一台服务器用于可接受的查询。因此,在这种情况下它对您没有帮助。

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

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

于 2015-09-02T13:01:17.143 回答