知识卡片
多数写交叉多数选
内容
MongoDB replica set 要避免选主丢失确认更新,需要 majority write 与多数选举相交:被确认的数据至少存在于会参与新主选择的集合中。发散:多数派协议的力量来自集合交叉,而不是“副本多”本身。
参考来源
- 位置:《分布式系统与一致性》第5章《文档数据库MongoDB》"解决方法(第二部分):大多数写"一节(源文件:_epub-src/OEBPS/Text/chapter9.xhtml)
- 结论依据:原文明确"如果客户端要求首要副本在得到大多数次要副本的通知后再返回ack,那么确认集合与选举集合必定有一个成员是重合的。也就是说,选举集合中一定存在包含最新数据的次要副本"。
- 原始内容:为了防止发生丢失更新,按照上面的选举过程,我们必须让参与选举的大多数集合中一定要包含具有最新数据的次要副本。如果客户端要求首要副本在得到大多数次要副本的通知后再返回ack,那么确认集合与选举集合必定有一个成员是重合的。