宝典目录
- CRDT宝典(一): 引言
- CRDT宝典(二): 基本概念
- CRDT宝典(三): GCounter
- CRDT宝典(四): PNCounter
- CRDT宝典(五): GSet
- CRDT宝典(六): PNSet
- CRDT宝典(七): VClock
- CRDT宝典(八): LLW-Register
- CRDT宝典(九): ORSet
- CRDT宝典(十): AWORSet
- CRDT宝典(十一): Delta-state-AWORSet
- CRDT宝典(十二): DotKernel
- CRDT宝典(十三): Multi-Value-Register
- CRDT宝典(十四): yata算法
背景
我们学了这么多的state-based CRDT,GCounter、PNCounter、GSet、PNSet、VClock、LWW-Register、ORSet、AWORset、Delta-AWORSet、DotKernel、Multi-Value-Register、yata算法,甚至将来要讲的Boundary-Counter、Map等。
总结
我们能总结出一些经验
- 其本质就是不同节点有不同状态的数据副本
- 所有的操作组成一个state,任何操作都可以按随意顺序地、可重复地组合在一起,即不同节点的state可以随意组合,其结果都是一致的,即最终一致性。
- 为了达到最终一致性,我们只需要将不同节点的新增、删除操作组合在一起,同时解决有冲突的操作即可,即解决有冲突的state,而冲突算法的设计就是一个CRDT的核心,在不同的使用场景,其冲突算法也不一致。
我们会很明显的发现,只是设计一个CRDT,其本身并不难的。
而其锚定的场景一般是适合使用最终一致性的分布式系统,比如文档、非强一致性的游戏、分发广告,诸位可以观察下自身遇到的业务场景,使用CRDT能不能节省大量成本等。
其优势很明显,我们不需要在后台写大量的冲突解决代码,其高可用,高可靠。极低的协同成本,以极致的优化手段来减少服务器内存占用,比如yrs、yrb等。