写入路径失败时的Cassandra读取一致性

问题描述 投票:0回答:1

我是cassandra的新手,并试图弄清楚cassandra如何在写入失败的情况下提供一致性。考虑以下CL为QUORUM的情况,在这种情况下,必须有3个副本中的2个响应。写入请求将照常发送到所有3个副本,如果写入2个副本失败,并且对1个副本成功,则cassandra将返回Failed。由于cassandra不回滚,因此该记录将继续存在于成功的副本中。现在,当带有CL = QUORUM的读取时,读取请求将转发到2个副本节点,并且如果其中一个副本节点是先前成功的副本节点,则cassandra将返回新记录,因为它将具有最新时间戳。但是从客户端的角度来看,该记录根本没有写入,因为cassandra在写入过程中返回了失败。如果是这种情况,那么在这种情况下,cassandra将永远不会保持一致。如何处理这种情况如果这种理解正确,请告诉我。

database cassandra cassandra-2.0 cassandra-2.1 eventual-consistency
1个回答
0
投票

您的理解是正确的。在这种情况下,客户端应接收UnavailableException,但应了解该写操作最终将传播到其他副本(如果节点处于活动状态或变为活动状态),并且这不是一次失败的写操作。

有关更多详细信息,请参见以下文章:

© www.soinside.com 2019 - 2024. All rights reserved.