文章目录
  1. 1. There are two approaches to replication
    1. 1.1. CRDT
    2. 1.2. Operations at primary
    3. 1.3. Replicate the result
    4. 1.4. 简单累加时钟模型
    5. 1.5. 两个时钟模型
    6. 1.6. 如何实现CRDT

There are two approaches to replication

CRDT

  • Conflict-free replicated Data Type;
  • Commutative Replicated Data Types
  • Convergent Replicated Data Types

    Operations at primary

  1. Date type:

    Convergent Replicated Data Types.

    Replicate the result

  2. Date type:

    Commutative Replicated Data Types.

简单累加时钟模型

两个计数器 每个计数器要么增长要么保持不变,对于两个时钟的一系列操作,最终一致是Max(每个步骤)并将Max的结果求和

两个时钟模型

  1. 两个时钟一个加一个减
  2. 需要全局的时钟来计算所有可以减的值(当前的净资产)【依赖于同步】

如何实现CRDT

1:LastWriter-Win

merge函数就是取时间戳的最大值

2: 多值寄存器

merge就是依赖于一个版本控制向量,取得最大的向量的数就是最终结果

3:Grow Set
4: 2P-Set

两步骤操作,一个操作中可以被增加和减少,但是第二步中智能减少

5:A Last-Writer-Wins element Set

keeps an add-set and a remove-set, with timestamped entries

6:A 2P2P-Graph

which is the combination of two 2P-Sets for vertices and edges

7:An add-only monotonic DAG.
8:An add-and-remove partial order data type
A couple of data types supporting collaborative text editing

文章目录
  1. 1. There are two approaches to replication
    1. 1.1. CRDT
    2. 1.2. Operations at primary
    3. 1.3. Replicate the result
    4. 1.4. 简单累加时钟模型
    5. 1.5. 两个时钟模型
    6. 1.6. 如何实现CRDT