2 个不稳定版本

0.2.0 2023年6月1日
0.1.0 2023年3月9日

#1334 in 数据结构

MIT 许可证

18KB
366

示例 CRDT

包含一些 Rust 中 CRDT 实现的仓库。

CRDT 类型 测试
[Aworset] Add-Wins Observed Remove Set 基于状态的 aworset.rs
[Aworset 优化] Add-Wins Observed Remove Set 基于状态的 ---
[GCounter] 仅增长计数器 基于状态的 --
[PnCounter] 正负计数器 基于状态的 --
[MvReg] 多值寄存器 [进行中] 基于状态的 ---

辅助结构

构建一些 CRDT 时创建了一些辅助结构

名称 测试 说明 参考
DotContext dotcontext.rs 巴托什·斯皮特科夫斯基博客 delta-enabled-crdts

用法

cargo 包可在以下位置找到

将以下代码片段添加到您的 Cargo.toml

[dependencies]
crdt-sample = "0.1.0"

示例

use crdt_sample::{AworsetOpt, NodeId};
fn main() {
    let node_id = NodeId::new(1, "addr".to_string());
    let mut  aworset: AworsetOpt<i32> = AworsetOpt::new(node_id);
    aworset.add(1);
    println!("{:?}", aworset);
    // AworsetOpt { id: addr1, set: {(addr1, 1, 1)}, cc: DotContext { cc: {addr1: 1}, dc: {} } }
}

参考

  • N. Preguiça, C. Baquero, 和 M. Shapiro, “无冲突的复制数据类型 (CRDTs),” arXiv:1805.06358 [cs],2018年5月,doi: 10.1007/978-3-319-63962-8_185-1。
  • P. S. Almeida, A. Shoker, 和 C. Baquero, “Delta 状态复制数据类型,” Journal of Parallel and Distributed Computing, 第 111 卷,第 162-173 页,2018年1月,doi: 10.1016/j.jpdc.2017.08.003。
  • P. S. Almeida, A. Shoker, 和 C. Baquero, “通过 delta 变异实现高效的基于状态的 CRDT,” Networked systems,Cham,2015年,第 62-76 页。
  • P. S. Almeida, A. Shoker, 和 C. Baquero, “Delta 状态复制数据类型,” Journal of Parallel and Distributed Computing, 第 111 卷,第 162-173 页,2018年1月,doi: 10.1016/j.jpdc.2017.08.003。

无运行时依赖