我具有复制因子3和LOCAL_QUORUM的一致性级别。我的群集大小为5.实现一致性级别后复制失败
使用LOCAL_QUORUM,我的客户端在将数据写入两个节点后写入结果成功。但是,如何复制到第三个节点,比如cassandra如何选择第三个节点,以及cassandra在第三个节点上复制失败的时间或时间?
我需要更多地了解复制部分。因为如果用于写入的两个节点之一失败,那么我的读取将无法实现LOCAL_QUORUM一致性。
我具有复制因子3和LOCAL_QUORUM的一致性级别。我的群集大小为5.实现一致性级别后复制失败
使用LOCAL_QUORUM,我的客户端在将数据写入两个节点后写入结果成功。但是,如何复制到第三个节点,比如cassandra如何选择第三个节点,以及cassandra在第三个节点上复制失败的时间或时间?
我需要更多地了解复制部分。因为如果用于写入的两个节点之一失败,那么我的读取将无法实现LOCAL_QUORUM一致性。
当你用LOCAL_QUORUM
写你正在写所有节点但你只等待LOCAL_QUORUM
确认。这意味着写入第三个(慢速)节点可能会在确认后发生,或者如果无法传递,可能会将其保存为提示。
一致性级别并不反映要写入多少副本,但在协调cassandra节点可以将响应返回给客户端之前,需要多少副本才能确认写入。写入操作最终会在所有副本上完成,即使失败了,也会有提示,读取修复和修复等机制,使您的数据进入一致状态。
阅读时,如果您想要强一致性,则应确保读取一致性和写入一致性的总和超过您的复制因子。
对于您的情况,复制因子为3,使用LOCAL_QUORUM进行读取和写入操作需要至少2个副本用于读取,而2个写入大于您的复制因子(3)。
鉴于此,即使写入失败的其他副本,但成功的两个为您提供了成功的写入响应,只要您阅读的一致性级别需要2副本或更高(即LOCAL_QUORUM),您可以确保您将获得正确的数据。
您可以在datastax docs about consistency阅读更多关于这一点:读
可靠性和写入操作取决于用于验证操作的一致性。当复制节点不是经由协调器节点可到达的
R + W>Ñ
提示,将发生在场景中,:强一致性可以保证当下列条件为真。但是在存储提示之前协调节点本身失败的情况会发生什么? –
然后你将没有任何提示,并将需要修复 – RussS