当前,我们的数据库集合做了最简单的一个集合,1 台 primary,2 台 secondary。系统中所有的读写,现在都指向了 primary,这就带来的问题是,primary 负载过高。但是如果 primary 只写,而把所有读操作放到 secondary 上,可能会遇到读写不一致的情况。
请问,大家有没有遇到类似的问题,读写不一致的延迟大概会有多长时间?如何来测试呢?你们是如何做选择的?
我也遇到了类似的问题,持续关注。
默认情况下写入是不检查是否同步到 repliatset 的。可以设置为一定要检查,但这样肯定会拖慢 primary。
一般流量的应用,延迟应该问题不大。MongoDB 本来对实时一致性和事务等就持不予支持的态度。
详见 Write Concern。
#2 楼 @ashchan
补充二楼的。看里面的 w option 那里。
w option
另可以结合业务逻辑进行优化: 1、更新后马上需要操作的数据,相对比较实时的数据采取 primary 写 primary 读; 2、将更新后不需要马上进行操作的数据 primary 写 secondary 读。