知识卡片
OpSequencer把并发操作收窄到PG粒度的顺序队列
内容
OpSequencer 保证同一个 Sequencer 内的操作严格按顺序完成日志提交和应用,实践中一般一个 PG 对应一个 Sequencer,也就是同一个 PG 内的操作是顺序执行的,不同 PG 之间则可以并发。这是一种折中:完全串行会浪费掉多核和多设备的并行能力,完全无序又会破坏同一份数据的修改顺序语义(比如后写的操作不能先于先写的操作应用)。用”PG”这个已经存在的数据分片单位作为顺序域的边界,天然把互不相关的数据的更新操作并行化,只在真正可能冲突的同一数据集合内部保持顺序,不需要额外设计一套新的并发粒度划分规则。
参考来源
《Ceph源码分析》第7章《本地对象存储》