默认情况下,复制集中只有主节点提供读操作,其他从节点读功能是关闭,我们可以配置读选项来实现从节点响应读请求,如果客户端配置了相应的读选项(一般在配置应用程序数据库连接时配置),其读的结果可以是由从节点返回的,从节点可能没有应用数据最近的更新(因为延迟),有可能读到脏数据,或者读到的相应内容有可能随后被撤销修改,一致性体现比较弱,尽管能实现最终一致性。从官方文档上看读有四种模式,包括primary,primaryPreferred,secondary,secondaryPreferred,nearest,我想这应该只能cluster中用吧,需要启mongos,否则怎么实现路由呢,而现实中多数使用者没有采用mongos,虽然官方文档到处都在说shard cluster,都无语了,造成我思想一度混乱关于Mongo读写选项的读书笔记-LMLPHP
    通过配置应用程序驱动读选项来实现读从的话,其实一致性在一定程度上可以通过配置write concern来保证,只不过写操作的响应时间会有影响,写操作有可能会被阻塞。关于write concern,可以统一配置缺省选项,也可以同样也可以通过对各成员进行标记,然后利用成员标记配置write concern,实现复制集写策略。说到tag,不仅在配置write concern用到,在实现read from secondary也是可以与上述四述mode结合使用的。
12-18 09:30