10 个版本
0.1.9 | 2024年1月31日 |
---|---|
0.1.8 | 2024年1月24日 |
0.1.7 | 2023年12月28日 |
0.1.2 | 2023年11月23日 |
#512 在 网络编程
每月135次下载
用于 5 个crate(4 个直接使用)
210KB
4K SLoC
键值服务
此服务实现了键值存储,具有设置/获取/删除,订阅/取消订阅功能
为了在不可靠的网络中工作,我们确保即使丢失了一些之前的包,数据也是正确的。因此,我们不使用任何差分数据技术,而是在每次需要更改时发送完整数据
- 设置:键,值,版本
- 获取:键
- 删除:键,版本
使用设置和删除,只有正确版本的键值才会被使用。具体来说
- 设置:只有新版本将被应用
- 删除:只有等于或新版本将被应用
为了确保在网络变化时数据不会丢失,我们实现了简单的复制算法,当每个键被设置为多个节点时,这些节点由
- OriginKey
- Rep1Key = OriginKey XOR Rep1Factor
- Rep2Key = OriginKey XOR Rep2Factor
每次设置、获取或删除都会发送到原始键和复制键的所有副本
当前版本仅发送OriginKey
设置
我们发送设置命令,直到收到对该设置版本或更高版本确认的ack
获取
删除
我们发送删除命令,直到收到对该删除版本或已设置新数据的确认ack
订阅
我们发送订阅命令,直到收到确认或切换到取消订阅
取消订阅
我们发送取消订阅命令,直到收到确认或切换回订阅
同步
我们以每个间隔时间同步已确认的键值对或订阅状态
依赖项
~12–22MB
~351K SLoC