代码之家  ›  专栏  ›  技术社区  ›  let4be

重新思考数据库复制和数据一致性

  •  1
  • let4be  · 技术社区  · 10 年前

    当其中一个副本临时/永久失效时会发生什么?它与数据一致性有何关系?

    例如,让我们考虑一下这种情况: 我更新了里面的一个文档 fruits 桌子 rethinkdb用ok回答了我,然后流星立即击中了这个数据库

    但幸运的是,我配置了一个满足以下要求的集群: http://www.rethinkdb.com/docs/failover/

    但在这个场景中,我似乎失去了一个特定的更新,可能还有其他尚未复制的东西,而应用程序仍然认为数据是可靠保存的。。。

    我不太明白我应该如何设计我的应用程序,以使它能够容忍这种行为,这似乎非常复杂

    常见的做法是什么? 有什么建议吗?

    谢谢

    2 回复  |  直到 10 年前
        1
  •  3
  •   Daniel Mewes    10 年前

    RethinkDB不会在写入传播到表的大多数副本之前确认写入。因此,除非多个服务器同时发生故障(假设您总共有3个副本),否则您将不会丢失已确认的写入。

    唯一的例外是,如果显式设置 write_acks 在桌子上 "single" 。您可以在中找到此设置及其后果的详细信息 http://www.rethinkdb.com/docs/consistency/

        2
  •  0
  •   Melih    4 年前

    群集环境中的一致性需要 一致的意见 算法,RetihnkDB的幕后是 木筏 RAFT共识算法需要至少3个节点来考虑数据的强一致性。

    你可以阅读第一篇博客文章

    https://rethinkdb.com/blog/2.1-release/