一个 Swift 包,用于帮助构建 收敛且可交换的复制数据类型。
CRDT 对于同步最终收敛到一致状态的数据非常有用。当节点/副本可能无法直接相互通信时,CRDT 会很有用。CRDT 可以用来代替始终处于活动状态的前台同步协议。
将此包添加到您的 Package.swift
dependencies
和目标的 dependencies
import PackageDescription
let package = Package(
name: "Example",
dependencies: [
.package(
url: "https://github.com/bluk/CRDT",
from: "0.1.0"
),
],
targets: [
.target(
name: "YourProject",
dependencies: ["CRDT"]
)
]
)
import Foundation
import CRDT
// First system
let actorA = UUID()
var a = GCounter<UUID>()
a.incrementCounter(for: actorA)
// a.value == 1
// Second system
let actorB = UUID()
var b = GCounter<UUID>()
b.incrementCounter(for: actorB)
// b.value == 1
try b.merge(a)
// b.value == 2
a.incrementCounter(for: actorA)
a.incrementCounter(for: actorA)
// a.value == 3
try b.merge(a)
// b.value == 4
请参阅测试以获取更多示例。
请参阅其他具有 CRDT 实现的项目