MongoDb目前的配置是:
- 一个主节点(A),两个次节点(B和C),都是一个副本集的一部分
- 对主节点的插入是通过写关注完成的:多数
- 从副本集读取时,读取首选项设置为“最近”
场景:
- 一个插入被触发,这意味着它只有在它传播到大多数副本集成员之后才会成功
- 在写操作返回之前,应用程序无法从主数据库读取(参考)
- 由于写入关注点设置为“多数”,写入操作仅在传播到至少一个辅助 ( B ) 实例后才会返回,在我们的示例中设置了 3 个成员
- 这意味着辅助(B)也被锁定以供读取,因为它正在复制(根据this)
问题是,由于应用程序设置为从最近的实例读取,并且假设最近的实例是另一个辅助实例(C),如果在其他 2 个实例上仍在进行写入操作的同时读取请求通过,将允许或阻止读取。如果允许,我该如何防止?