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网络编程

Download history 84/week @ 2024-03-11 67/week @ 2024-03-18 66/week @ 2024-03-25 90/week @ 2024-04-01 29/week @ 2024-04-08 48/week @ 2024-04-15 47/week @ 2024-04-22 6/week @ 2024-04-29 2/week @ 2024-05-06 33/week @ 2024-05-13 43/week @ 2024-05-20 29/week @ 2024-05-27 36/week @ 2024-06-03 33/week @ 2024-06-10 26/week @ 2024-06-17 39/week @ 2024-06-24

每月135次下载
用于 5 个crate(4 个直接使用)

MIT 许可证

210KB
4K SLoC

键值服务

此服务实现了键值存储,具有设置/获取/删除,订阅/取消订阅功能

为了在不可靠的网络中工作,我们确保即使丢失了一些之前的包,数据也是正确的。因此,我们不使用任何差分数据技术,而是在每次需要更改时发送完整数据

  • 设置:键,值,版本
  • 获取:键
  • 删除:键,版本

使用设置和删除,只有正确版本的键值才会被使用。具体来说

  • 设置:只有新版本将被应用
  • 删除:只有等于或新版本将被应用

为了确保在网络变化时数据不会丢失,我们实现了简单的复制算法,当每个键被设置为多个节点时,这些节点由

  • OriginKey
  • Rep1Key = OriginKey XOR Rep1Factor
  • Rep2Key = OriginKey XOR Rep2Factor

每次设置、获取或删除都会发送到原始键和复制键的所有副本

当前版本仅发送OriginKey

设置

我们发送设置命令,直到收到对该设置版本或更高版本确认的ack

获取

删除

我们发送删除命令,直到收到对该删除版本或已设置新数据的确认ack

订阅

我们发送订阅命令,直到收到确认或切换到取消订阅

取消订阅

我们发送取消订阅命令,直到收到确认或切换回订阅

同步

我们以每个间隔时间同步已确认的键值对或订阅状态

依赖项

~12–22MB
~351K SLoC