Rethinkdb复制和数据一致性

Rethinkdb replication and data consistency

当其中一个副本死亡时会发生什么temporary/permanently,它与数据一致性有何关系?

例如让我们考虑这种情况: 我更新了 fruits table 中的文档, rethinkdb 回答我好,然后立即流星命中这个数据库

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

但在这种情况下,我似乎丢失了这个特定的更新,可能还丢失了其他尚未复制的内容,而应用程序仍然认为数据已可靠保存...

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

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

谢谢

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

唯一的例外是您将 table 上的 write_acks 显式设置为 "single"。您可以在 http://www.rethinkdb.com/docs/consistency/

中找到有关此设置及其后果的更多详细信息

集群环境下的一致性需要consensus算法,RetihnkDB背后的算法是RAFT。 RAFT 共识算法需要至少 3 个节点来考虑 strong-ish 数据的一致性。

您可以阅读第一篇博客post

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