我已经集成了twemproxy到web层,我有6个Elasticache(1个主,5个读副本)我得到的问题是所有副本都有相同的键一切都是一样的,但是在一个副本上的缓存命中率比其他副本多得多,我仍然在每个测试上执行了几次负载测试,我得到了相同的结果。我有单独的数据引擎,在这个集群的主服务器上写入数据,其余5个副本与之同步。所以我使用twemproxy只是为了从Elasticache读取数据,而不是为了分片。所以我的简单问题是,为什么我在Elasticache的单个读取副本上获得了90%的命中率,它应该在所有读取副本中均匀分布命中率?对吗?
提前谢谢你
发布于 2015-09-02 21:01:17
在我的记忆中,Twemproxy会散列所有的东西。这意味着它将尝试在您为其提供的主控对象之间拆分密钥。如果您有一个主服务器,这意味着它将所有内容散列到一台服务器上。因此,就它而言,您有一台服务器来处理可接受的查询。因此,在这种情况下,它对您没有帮助。
如果您想让单个端点跨一组相同的从节点分发读取数据,则需要将TCP负载均衡器放在从节点之前,并让应用程序与负载均衡器的IP:port进行会话。常见的选择是基于软件的Nginx和HAProxy,在亚马逊网络服务上,你可以使用他们的负载均衡器,但你可能会遇到各种资源限制,在那里你无法控制,几乎任何硬件负载均衡器都可以工作(尽管这在亚马逊网络服务上是困难的,如果不是不可能的话)。
使用哪种负载均衡器取决于您(或您的人员)对每个选项的舒适度和知识水平。
https://stackoverflow.com/questions/32322612
复制相似问题