Rethinkdb复制和数据一致性
Posted
技术标签:
【中文标题】Rethinkdb复制和数据一致性【英文标题】:Rethinkdb replication and data consistency 【发布时间】:2015-08-14 12:54:42 【问题描述】:当其中一个副本临时/永久死亡时会发生什么,它与数据一致性有何关系?
例如,让我们考虑这种情况:
我更新了fruits
表中的文档,
rethinkdb 用 ok 回答我,然后流星立即命中了这个数据库
但幸运的是,我的集群配置满足以下要求: http://www.rethinkdb.com/docs/failover/
但看起来在这种情况下,我丢失了这个特定的更新,并且可能还没有被复制的其他东西,而应用程序仍然认为数据被可靠地保存了......
我不太明白我应该如何设计我的应用程序以使其能够容忍这种行为,这似乎是难以置信的复杂
什么是常见的做法? 有什么建议吗?
谢谢
【问题讨论】:
【参考方案1】:RethinkDB 不会在写入传播到表的大多数副本之前确认写入。因此,除非多台服务器同时发生故障(假设您总共有 3 个副本),否则您将永远不会丢失已确认的写入。
唯一的例外是如果您将表上的write_acks
显式设置为"single"
。您可以在http://www.rethinkdb.com/docs/consistency/中找到有关此设置及其后果的更多详细信息
【讨论】:
【参考方案2】:集群环境中的一致性需要共识算法,而RetihnkDB的幕后就是RAFT。 RAFT 共识算法需要至少 3 个节点才能考虑数据的强一致性。
您可以阅读第一篇博文
https://rethinkdb.com/blog/2.1-release/
【讨论】:
以上是关于Rethinkdb复制和数据一致性的主要内容,如果未能解决你的问题,请参考以下文章