Cassandra 如何处理错误?当某些节点关闭时,它会重试或失败请求吗?

How does Cassandra handle errors? Will it retry or fail a request when some nodes are down?

我是 运行 YCSB,使用默认设置在 6 节点 Cassandra 集群上。 假设客户端已与协调器建立连接,并找到足够的副本来满足其一致性级别,如果出现以下情况会发生什么:

(1)协调器挂了? YCSB 客户会联系不同的协调员吗?

(2) 部分副本宕机?它会重试还是让请求失败?

请一次只问一个问题。回答您的问题:

  1. 如果被选为协调器的节点宕机,则将选择另一个节点作为协调器。请注意,客户端应该与 TokenAwareLoadBalancingPolicy 连接(在 YCSB 中可配置吗?)只要在查询中传递分区键(您所有的客户端-side queries should be doing.

  2. 这取决于客户端指定的一致性级别。如果客户端以 QUORUM 一致性运行,并且您的密钥空间定义的复制因子 (RF) 为 3,那么您只需要能够命中两个副本。如果客户端以ONE的一致性运行,那么你只需要找到一个。因此,如果您的 RF 为 3,并且正在 ONELOCAL_ONE 处查询,则两个节点可能已关闭,您仍然可以处理请求。 YCSB 应该真的有办法配置它。