知识卡片
Read Concern引入quorum读一致性:对应CAP中的W+R>N
内容
MongoDB复制集早期只支持Write Concern(控制一次写入需要被多少个节点确认才算成功),没有对等的读一致性控制手段,如果业务想要读到强一致的数据,唯一的办法是强制把读请求全部路由到Primary节点(Read Preference设为Primary),否则从Secondary节点读到的数据就可能是尚未同步的旧值(stale read)——但这种”只能靠强制读主”的做法,等于放弃了复制集在读扩展上的价值。后续版本引入的Read Concern弥补了这个缺口,允许显式声明一次读操作需要满足的一致性级别,这本质上和CAP理论中”写入确认节点数(W)加读取查询节点数®大于总副本数(N)“(W+R>N)就能保证读到最新写入的原理相通——一致性不再是”只能读主”这种单一粗粒度的选择,而是可以按需要在写、读两端分别配置quorum强度,在一致性和读扩展性之间做更灵活的取舍。
参考来源
- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.11 MongoDB2015回顾:全新里程碑式的WiredTiger存储引擎"节,"6.11.2 复制集改进"(源文件:_epub-src/OEBPS/Text/Chapter6_11_3.xhtml)
- 结论依据:原文说明"在此之前,复制集只支持Write Concern,因此如果想做到强一致读只能将Read_Preferanence设置为Primary,否则依然会导致stale read。而read concern的引入弥补了这个不足。类似CAP中的W+R>N",直接支撑本卡片结论。
- 原始内容:在此之前,复制集只支持Write Concern,因此如果想做到强一致读只能将Read_Preferanence设置为Primary,否则依然会导致stale read。而read concern的引入弥补了这个不足。类似CAP中的W+R>N。