Cassandra驱动程序是否有自己的推测重试机制?

时间:2015-10-17 10:44:15

标签: cassandra cassandra-2.0

自v2.0.2以来,Cassandra具有详细描述here中名为Rapid Read Protection的机制。对于这个问题,博客文章的重要说明是:

  1. 由每个表speculative_retry设置控制的机制
  2. 协调器节点负责应用此机制 - 如果满足重试条件,它将启动新的读取请求。
  3. 但cassandra java-driver的文档描述了一些非常相似的here,其名称也类似于speculative query execution。但是驱动程序需要一些额外的库才能使用此功能。

    Q1:我是对的,这意味着它是在驱动程序端实现的,与cassandra中实现的快速读取保护无关? 如果是这样,这意味着如果满足驱动程序重试条件,驱动程序将使用其他协调器重试查询。

    Q2:对于读取查询,在协调器端重试似乎更有效,因为即使你切换协调器进行查询,它仍然有可能另一个查询同一组节点(并且将具有与之前相同的响应时间)。但是我没有找到如何仅为写入查询启用驱动程序端重试。所以,如果我想对所有类型的查询使用重试 - 我应该在cassandra-server端禁用RR,因为双重保护会给集群带来更大的压力吗?或者我可以通过启用它们来获得一些利润?

1 个答案:

答案 0 :(得分:1)

Q1:是的,驱动程序中的推测性查询执行完全独立于群集快速读取。

Q2.1:对于第一部分,由于协调员可能忙于处理其他请求等,因此并非绝对必要。

Q2.2:我认为您可以启用这两种机制(群集和客户端)并对其配置进行一些操作。