Database 什么';在Cassandra中使用暗示切换的意义何在,特别是为了一致性>;任何

Database 什么';在Cassandra中使用暗示切换的意义何在,特别是为了一致性>;任何,database,cassandra,replication,consistency,Database,Cassandra,Replication,Consistency,在Cassandra中,暗示切换(HH)仅在满足一致性级别时发生。此外,客户端无法读取提示。在一致性级别>任意的情况下,使用HH既不能提高写入可用性,也不能提高读取可用性。请求仍然失败,因为在线副本不足以满足一致性要求。 使用暗示切换有什么意义?绩效交易能力? 为什么不将失败和返回的节点与其他副本节点同步(即重新复制)?暗示的切换只是额外的反熵措施。i、 e.当节点重新联机时,您不必立即运行修复,数据也会保持一致(如果有小的中断) 我想一直用复制来处理这件事太复杂了,因为你必须以某种方式标记没有

在Cassandra中,暗示切换(HH)仅在满足一致性级别时发生。此外,客户端无法读取提示。在一致性级别>任意的情况下,使用HH既不能提高写入可用性,也不能提高读取可用性。请求仍然失败,因为在线副本不足以满足一致性要求。
使用暗示切换有什么意义?绩效交易能力?
为什么不将失败和返回的节点与其他副本节点同步(即重新复制)?

暗示的切换只是额外的反熵措施。i、 e.当节点重新联机时,您不必立即运行修复,数据也会保持一致(如果有小的中断)

我想一直用复制来处理这件事太复杂了,因为你必须以某种方式标记没有被复制的数据等等。基本上,你会有类似于暗示切换的东西

官方文件中的一些内容:

基本上,它是为了在有少量中断的情况下最大化集群的写吞吐量。它是可配置的,当读写都涉及到高一致性级别时,您可以在您描述的情况下禁用它

此外,您还必须运行“重新复制”,即无论如何都要进行修复。因为暗示的交接并不能解决所有问题

就我个人而言,我在一种情况下使用它们,R-CL:1,W-CL:1,RF:2,节点:3。它们非常有用,因为我们在集群上进行维护和滚动重启时保持了写吞吐量。所以我想说它在W-CL 还有这样的观点:


事实上,只需在配置中禁用它们。在长时间停机或负载尖峰期间,数据很容易丢失,如果某个节点因为负载尖峰而宕机,您只会将问题传递到环上,最终导致多个或所有节点宕机。我们在Cassandra上从未遇到过这种情况,但在其他支持暗示切换的系统上也遇到过这种情况。

非常感谢您的回答!我还有几个问题。HH如何最大化写入吞吐量?为什么Cassandra要求人们手动进行修复,而不是安排常规的自动修复(如读取修复)?基本上修复是一项昂贵的操作,因为所有数据都必须与merkle树进行比较,所以由管理员安排。甚至有一些工具可以自动完成这项工作。此过程或多或少应在gc_宽限期内运行一次,以保持数据一致。最大化是间接实现的。当一个节点关闭时,它不接受写操作。如果协调器节点在节点返回后保存它们(廉价操作),则整个集群中的写入记录量与节点一直在那里的记录量相同。