Cassandra 驱动程序是否有自己的推测重试机制?
Does the Cassandra driver have its own speculative-retry mechanism?
Cassandra 自 v2.0.2 起具有名为 Rapid Read Protection
的机制,详细描述 here。对于这个问题,来自博客 post 的重要说明是:
- 机制由每个 table
speculative_retry
设置控制
- 协调器节点负责应用此机制 - 如果满足重试条件,它会启动新的读取请求。
但是 cassandra java-driver 的文档描述了一些非常相似的东西 here,命名也很相似 speculative query execution
。但是驱动程序需要一些额外的库才能使用此功能。
Q1:我是说它是在驱动端实现的,与cassandra内部实现的Rapid Read Protection没有关系,我说得对吗?
如果是这样,这意味着如果满足驱动程序重试条件,驱动程序将重试与花药协调器的查询。
问题 2:对于读取查询,在协调器端重试似乎更有效,因为即使您切换协调器进行查询,另一个协调器仍有可能查询同一组节点(并且响应时间与之前相同) .但是我没有找到如何只为写入查询启用驱动程序端重试。因此,如果我想对所有类型的查询使用重试——我应该在 cassandra 服务器端禁用 RR,因为双重保护会给集群带来更多压力吗?或者我可以通过启用它们来获得一些利润?
Q1:是的,驱动程序中的推测查询执行完全独立于集群快速读取。
Q2.1:对于第一部分,这不是绝对必要的,因为协调器可能正忙于处理其他请求等。
Q2.2:我认为您可以启用这两种机制(集群和客户端)并尝试一下它们的配置。
Cassandra 自 v2.0.2 起具有名为 Rapid Read Protection
的机制,详细描述 here。对于这个问题,来自博客 post 的重要说明是:
- 机制由每个 table
speculative_retry
设置控制 - 协调器节点负责应用此机制 - 如果满足重试条件,它会启动新的读取请求。
但是 cassandra java-driver 的文档描述了一些非常相似的东西 here,命名也很相似 speculative query execution
。但是驱动程序需要一些额外的库才能使用此功能。
Q1:我是说它是在驱动端实现的,与cassandra内部实现的Rapid Read Protection没有关系,我说得对吗? 如果是这样,这意味着如果满足驱动程序重试条件,驱动程序将重试与花药协调器的查询。
问题 2:对于读取查询,在协调器端重试似乎更有效,因为即使您切换协调器进行查询,另一个协调器仍有可能查询同一组节点(并且响应时间与之前相同) .但是我没有找到如何只为写入查询启用驱动程序端重试。因此,如果我想对所有类型的查询使用重试——我应该在 cassandra 服务器端禁用 RR,因为双重保护会给集群带来更多压力吗?或者我可以通过启用它们来获得一些利润?
Q1:是的,驱动程序中的推测查询执行完全独立于集群快速读取。
Q2.1:对于第一部分,这不是绝对必要的,因为协调器可能正忙于处理其他请求等。
Q2.2:我认为您可以启用这两种机制(集群和客户端)并尝试一下它们的配置。