CRDT 与最终一致性

共 18 题
#

1. CRDT 在分布式数据库(Couchbase、Riak)的应用

A CRDT 合并会丢失更新
B CRDT 需要锁定副本才能合并
C CRDT 只能用于单副本
D CRDT 让多活副本在分区下无冲突最终一致 ✓ 正确答案
#

2. CRDT 在协同编辑(Yjs、Automerge)的应用

A 文本 CRDT 无法处理并发插入
B 协同编辑必须依赖中心服务器排序
C Yjs/Automerge 用文本 CRDT 实现并发编辑无冲突收敛 ✓ 正确答案
D CRDT 编辑需要上锁
#

3. CRDT 的半格(semilattice)合并语义,即 join、merge

A merge 结果依赖合并顺序
B merge 即求 join(最小上界),满足交换、结合、幂等 ✓ 正确答案
C merge 不满足幂等律
D join 半格与收敛无关
#

4. LWW-Register(Last-Writer-Wins Register)的 vector clock 配合

A LWW 丢弃所有并发更新
B vector clock 判断因果,LWW 用时间戳把并发写定为最新者胜出 ✓ 正确答案
C vector clock 提供全序
D LWW 与 vector clock 无法配合
#

5. 2P-Set(two-phase set)如何实现 remove-wins,为什么删除集合只增不减,墓碑膨胀如何清理?

A 删除后可以简单撤销
B 元素在 remove-set 中即被删除,remove-set 只增不减保证收敛 ✓ 正确答案
C 墓碑会随 GC 自动清理无需确认
D remove-wins 依赖 add-set 只减
#

6. CRDT 的"拜占庭"扩展 Byzantine-CRDT

A 通过签名与验证使 CRDT 在恶意节点下仍收敛 ✓ 正确答案
B 标准 CRDT 已能容忍恶意节点
C Byzantine-CRDT 无需验证
D Byzantine-CRDT 会降低安全性
#

7. δ-state CRDT 的状态差分同步

A delta 合并无法重建完整状态
B 每次同步必须传全量状态
C 只同步状态差分(delta)以降低带宽 ✓ 正确答案
D δ-CRDT 不保证收敛
#

8. CRDT 在游戏服务器(实时状态同步)的应用

A CRDT 让区服副本独立更新并最终一致 ✓ 正确答案
B 游戏必须有中心服务器排序
C CRDT 无法表达玩家状态
D 游戏状态合并必然冲突
#

9. CRDT 的"因果一致性"(causal consistency)vs"强一致性"

A CRDT 保证因果一致与最终一致,不保证实时线性一致 ✓ 正确答案
B CRDT 提供线性一致性
C 强一致性与 CRDT 的最终一致相同
D CRDT 需共识协调
#

10. G-Counter(Grow-only Counter)的实现

A G-Counter 支持递减
B 每个节点维护只增计数,总值为各节点计数之和,合并取 max ✓ 正确答案
C 合并取各节点最小值
D G-Counter 无法并发递增
#

11. CRDT(Conflict-free Replicated Data Type)的 CmRDT(operation-based)与 CvRDT(state-based)两类

A operation-based 可容忍消息丢失
B 两者都只需同步操作
C state-based 依赖可靠信道
D state-based 同步状态需半格合并,operation-based 同步操作需可靠因果信道 ✓ 正确答案
#

12. OR-Set(Observed-Remove Set)的 add、remove、observe

A remove 会删除所有同名元素,无论是否观察过
B remove 只删除自己观察到的 add 的 tag,未观察到的并发 add 被保留,从而收敛一致 ✓ 正确答案
C 元素不需要唯一 ID
D 并发 add/remove 必然导致数据丢失
#

13. CRDT 的两种类型,状态 CRDT 与操作 CRDT 的合并语义有何不同?

A 两者都需可靠因果信道
B 状态 CRDT 用 join 半格合并,操作 CRDT 用可交换操作应用 ✓ 正确答案
C 状态 CRDT 合并不幂等
D 操作 CRDT 可容忍消息乱序
#

14. 操作型 CRDT 为什么依赖可靠的因果有序信道,消息乱序或丢失时如何破坏收敛性?

A 乱序不影响操作型 CRDT
B 操作型 CRDT 可容忍消息丢失
C 依赖可靠因果有序信道,乱序/丢失会破坏收敛 ✓ 正确答案
D 操作型 CRDT 与信道无关
#

15. 状态型 CRDT 的 merge 为何要求操作满足幂等、交换、结合(join 半格),不满足时会怎样?

A merge 只需满足幂等即可
B merge 需满足幂等、交换、结合,否则合并结果依赖顺序无法收敛 ✓ 正确答案
C 不满足结合律仍能收敛
D merge 的三条律与收敛无关
#

16. PN-Counter(Positive-Negative Counter)的实现

A 由增、减两个 G-Counter 组成,总值为增量减减量 ✓ 正确答案
B PN-Counter 只能递增
C PN-Counter 无法并发更新
D PN-Counter 合并取最小值
#

17. RGA(Replicated Growable Array)的 CRDT 文本协作

A 每个字符带唯一 ID 与前驱引用,并发编辑后收敛 ✓ 正确答案
B RGA 需要中心服务器排序
C RGA 无法处理并发删除
D RGA 与 CRDT 无关
#

18. 最终一致性与冲突解决中,LWW、G-Counter 与墓碑如何配合?

A 墓碑无需使用
B LWW 能保留所有并发更新
C LWW 用时间戳、G-Counter 用单调计数、墓碑表达删除,保证收敛 ✓ 正确答案
D G-Counter 依赖时间戳