2 个不稳定版本
0.2.0 | 2023年6月1日 |
---|---|
0.1.0 | 2023年3月9日 |
#1334 in 数据结构
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。