我需要了解Cassandra 3.0的read-repair。例如,我有三个节点A、B和C。我的复制因子是3。现在,我使用Quorum写入,它在节点A和B上成功写入,因此客户端将收到成功,但不知何故数据未写入节点C(它已关闭,并提示已过限制时间)。
我没有运行手动修复,并且我的read repair更改为0.1。
几天后,我的节点A停机了,只剩下节点B和节点C。因此,如果我使用quorum发出读查询,将始终读写数据到节点C并成功返回给客户端,或者可能存在这样的情况,客户端可能会收到“无法达到一致性级别”的错误。
发布于 2018-01-23 15:45:10
如果3个副本中有2个处于运行状态,则将实现仲裁一致性,因此客户端将能够读取数据。由于其中一个节点没有任何数据,因此将发生读取修复。
根据我的理解(我是Cassandra的新手),每当在Cassandra中执行查询时,协调节点都会检查所需数量的副本(请求的一致性)是否能够响应查询。如果发生这种情况,则客户端接收数据的最新版本(比较每个节点返回的数据的时间戳),然后在不匹配的情况下通过读取修复覆盖所有剩余的副本。
https://stackoverflow.com/questions/42638008
复制相似问题