【问题标题】:Cassandra Read , Read repairCassandra Read , 读取修复
【发布时间】:2018-05-12 05:40:33
【问题描述】:

场景:具有复制因子 7 和读取一致性级别仲裁的单个数据中心。

在读取请求期间,最快的副本获取数据请求。但是有多少剩余的副本发送摘要。

Q1:所有剩余(离开最快的副本)副本是否将摘要发送给协调器。最快的3个将被认为满足一致性。或仅选择 3 ((7 / 2 + 1) - 1(fastest) = 3) 个副本来发送摘要。

Q2:在这两种情况下,读取修复将如何工作。读取修复运行后将同步多少和哪些节点。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    这摘自这篇优秀的博文,您绝对应该阅读:https://academy.datastax.com/support-blog/read-repair

    读取修复大致有两种类型:前景和背景。这里的前台意味着阻塞——我们在返回客户端之前完成所有操作。后台意味着非阻塞——我们开始后台修复操作,然后在完成之前返回给客户端。

    在您的情况下,您将执行前台读取修复,因为它是在使用高于 ONE/LOCAL_ONE 的一致性级别的查询上执行的。协调器向一个副本请求数据,向其他副本请求其数据的摘要(当前为 MD5)。如果从副本返回到协调器的数据不匹配,Cassandra 会通过从所有副本读取数据然后合并结果来解决这种情况。

    这就是确保不断运行和完成反熵修复很重要的原因之一。这样,读取时出现摘要不匹配的机会就会降低。

    【讨论】:

    • 在这种情况下,只有 3 个其他节点会被要求返回摘要?如果是,将如何选择这 3 个节点。
    • 它将从所有副本中获取摘要。因此,在您的情况下,它将获得 1 个副本和 6 个摘要。
    • 所以最快的 3 个摘要到达 coordinator 将被考虑检查一致性,其他的我们会丢弃吗?
    • Q2:如果摘要不匹配(最快的 4 个摘要),将从多少副本数据中检索以获取最新数据? Q3 : 作为读取修复的一部分,这些最新数据将写入哪些节点?
    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2012-12-04
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多