Page 1 of 1

什么是读取修复?

Posted: Sun Feb 09, 2025 8:08 am
by Bappy11
前两种机制将根据配置参数自动触发,配置参数可以是 cassandra.yaml 文件中的配置(用于提示切换)或表定义中的配置(用于读取修复)。最后一种机制(反熵修复)需要人工干预,可以使用命令nodetool repair运行。

当客户端发送读取请求(一致性级别为 quorum 或更高)时,集群中的一个节点将充当协调器。它识别所有副本节点,并请求最健康的节点提供数据,并请求其他副本进行摘要(副本节点发送校验和而不是整个数据集,以便提高网络效率)。

协调器节点比较校验和。如果存在任何差异,则请求所有节点(取决于一致性级别)获取完整数据。协调器比较所有节点的数据集时间戳,以检查哪个节点具有最新数据。它向所有副本发送更新请求以获取最新数据。

我们有一个参数read_repair_chance(值介于 0 和 1 之间),可以在表级别进行配置。如果我 波斯尼亚和黑塞哥维那电报数据 们读取一致性较低的数据,那么副本之间的数据比较级别就不够。

为了获得这种自动修复的一些好处,我们可以将此参数设置为对read_repair_chance百分比的查询执行读取修复。例如,如果我们将其值设置为 0.2,即对于 20% 的非法定人数查询,读取修复将自动但异步地发生。这意味着此过程仅在将数据发送到该读取请求的客户端后才会发生。