如果所有本地副本都已启动,那么一致性是否会受到低远程DC延迟的影响?

时间:2017-11-01 04:15:28

标签: cassandra datastax-java-driver

场景:我们已经拥有一个DSE 5.0群集群集,其中包含2个DC,以及一个在澳大利亚拥有3个副本且在美国西海岸拥有3个副本的密钥空间。应用程序通过dse java驱动程序与DSE进行对话。

对于悉尼的用户,如果我们使用LOCAL_QUORUM,则在客户端测量的响应时间不到90毫秒。这很好,但是如果2个副本太慢(发生在由分析集群引起的令人讨厌的修复期间),我们就会失败。

如果我们使用QUORUM,我们可以在本地丢失2个节点而不会失败,但我们的响应时间始终超过450毫秒,因为每次读取至少需要远程DC的一个答案。

我的问题是:如果所有3个本地副本都健康且行为正常,那么使用CL TWO(对于我们的情况来说足够了)会遭受与QUORUM相同的延迟成本吗?

我们的最终目标是具有低延迟,同时仍然自动进行故障转移,并在本地发生故障时消耗延迟成本。

如果它有任何区别,我们在驱动程序中使用DCAwareRoundRobin。

2 个答案:

答案 0 :(得分:1)

  

DCAwareRoundRobin策略通过节点提供循环查询   本地数据中心。它还包括在查询计划中返回一个   远程数据中心中可配置的主机数量,但这些是   总是尝试在本地节点之后。换句话说,这个政策   保证不会查询远程数据中心中的主机,除非   无法访问本地数据中心的主机。

CONSISTENCY TWO返回两个最接近的副本中的最新数据。

CONSISTENCY In Cassandra

答案 1 :(得分:1)

要通过多直流实现获得Scylla / Cassandra的最小延迟,您需要使用驱动程序的本地方面。 CL = 2的挑战是它根据您的飞贼配置提供距离最近的副本最接近的响应。 据我所知,这意味着协调器节点请求被发送到没有位置方面的所有副本。这意味着您需要为池塘两侧的出口交通收费。一次用于请求,一次用于来自所有副本的实际数据流量。