0

Alice 和 Bob 有两组约 10000 条数据(每条小于 65536 字节,通常要小得多),每条都有一个 12 字节的 ID(时间戳 + CRC32)。他们都希望拥有这些集合的并集。他们的集合只是略有不同:也许 Alice 或 Bob 获得了 10 个新数据,因此他们最好确定要相互发送哪些数据,然后只发送它们。

Alice 和 Bob 已经建立了一个 TLS 连接(访问控制有点复杂,涉及客户端证书和自己的 CA)。他们如何进行复制?

到目前为止,他们一直是:

  1. 构建一个 ID 数组
  2. 用于librsync将其复制到另一方
  3. 拥有两个数组的另一方将确定适当的操作并发送/请求丢失的数据片段

如果连接中断,他们会考虑已经收到的任何数据片段并重新启动该过程,直到不需要发送任何更改。

有没有更好的方法来做到这一点?一个现有的协议,也许?

4

1 回答 1

1

如果您信任 rsync,则修改要按您当前 ID 索引的数据以及来自 Alice 或 Bob 的数据。然后 Alice 使用 rsync 向 Bob 获取数据,Bob 使用 rsync 从 Alice 获取数据。此后两者都独立处理数据。

如果您希望在后台更高效,您可以在收到直到某个点的所有数据时使用加密签名的检查点。当一个人发送了该检查点,而另一个人验证了他们的数据与该检查点匹配时,则该检查点之前的所有数据都已知匹配,并且都不会再次尝试同步它。如果您的时间戳表示数据何时由 Alice 和/或 Bob 拥有,则它们可以用于此目的。否则,您可以为此添加一个 ID。

于 2017-09-02T17:44:38.017 回答