CRDT宝典 - state-based CRDTs阶段性总结

124 阅读2分钟

宝典目录

背景

我们学了这么多的state-based CRDT,GCounterPNCounterGSetPNSetVClockLWW-RegisterORSetAWORsetDelta-AWORSetDotKernelMulti-Value-Registeryata算法,甚至将来要讲的Boundary-CounterMap等。

总结

我们能总结出一些经验

  1. 其本质就是不同节点有不同状态的数据副本
  2. 所有的操作组成一个state,任何操作都可以按随意顺序地、可重复地组合在一起,即不同节点的state可以随意组合,其结果都是一致的,即最终一致性。
  3. 为了达到最终一致性,我们只需要将不同节点的新增、删除操作组合在一起,同时解决有冲突的操作即可,即解决有冲突的state,而冲突算法的设计就是一个CRDT的核心,在不同的使用场景,其冲突算法也不一致。

我们会很明显的发现,只是设计一个CRDT,其本身并不难的。

而其锚定的场景一般是适合使用最终一致性的分布式系统,比如文档非强一致性的游戏分发广告,诸位可以观察下自身遇到的业务场景,使用CRDT能不能节省大量成本等。

其优势很明显,我们不需要在后台写大量的冲突解决代码,其高可用,高可靠。极低的协同成本,以极致的优化手段来减少服务器内存占用,比如yrsyrb等。