Tag: cassandra 2.1

Cassandra使用TokenAwarePolicy和shuffleReplicas进行负载均衡

我们有6个节点集群,我们将所有内容部署到具有3个可用区的AWS上的一个区域。 我们正在使用Ec2Snitch,它应该在每个可用区域中分配一个副本。 我们使用DataStax Java驱动程序。 执行写入和读取的服务器分布在与节点相同的可用区域中(AZ服务器为1个服务器)。 我们想要实现的是最佳的读取性能,对于我们来说,写入并不是那么重要,因为我们需要编写数据但不是必需的快速。 我们使用复制因子3,但读取和写入一致性级别为ONE。 我们正在调查TokenAwarePolicy中的 shuffle副本。 在DataStax Java Driver中可以说它可以提高读取性能但减少写入分配。 第一个问题是关于shuffleReplicas实现,我遵循newQueryPlan方法的实现,我想到的是对于副本LinkedHashSet使用意味着主副本将始终优先于非主副本。 // Preserve order – primary replica will be first Set replicas = new LinkedHashSet(); 只是为了确认,这意味着如果我们将shuffleReplicas设置为false,那么驱动程序将始终更喜欢连接到主副本所在的节点,将其作为协调器,这可能会产生热点? 第二个问题是关于将连接分离到集群的想法,对于写入,使用shuffleReplicas on true,它将在集群中均匀地分配令牌,并且读取使用TokenAwarePolicy和false的shuffleReplicas以获得最佳可能读取,这个想法是否可行,你看到了吗?有什么问题吗? 我们希望始终从相同的可用区读取数据,以便在读取数据时获得最大可能的速度。 这是更好的方法,然后将shuffleReplicas为true,让集群均匀地选择协调器。 想法也可以使用WhiteListPolicy ,它将仅选择从同一个AZ到放置在该AZ中的服务器的节点,这将导致本地读取但可以创建热点。