Algorithm 了解尼尔·弗雷泽';s差分同步算法

Algorithm 了解尼尔·弗雷泽';s差分同步算法,algorithm,synchronization,Algorithm,Synchronization,我正试图完全理解,尤其是保证交付方法(第4节) 我不明白为什么在同步周期的上半部分需要编辑堆栈 编辑堆栈的目的如下(复制自第4节第二段): […]在数据包丢失的情况下,编辑在堆栈中排队,并在每次同步时重新传输给远程方,直到远程方返回接收确认 这是有道理的。但后来在第六段(丢失的返回包案例)中说: 这表示以前的响应一定已丢失。因此,服务器删除其编辑堆栈,并将备份卷影复制到卷影文本中(步骤4) 因此,据我所知: 正常操作期间:编辑堆栈(上半部分)将包含一个条目,在下一个同步周期中确认并删除该条目

我正试图完全理解,尤其是保证交付方法(第4节)

我不明白为什么在同步周期的上半部分需要编辑堆栈

编辑堆栈的目的如下(复制自第4节第二段):

[…]在数据包丢失的情况下,编辑在堆栈中排队,并在每次同步时重新传输给远程方,直到远程方返回接收确认

这是有道理的。但后来在第六段(丢失的返回包案例)中说:

这表示以前的响应一定已丢失。因此,服务器删除其编辑堆栈,并将备份卷影复制到卷影文本中(步骤4)

因此,据我所知:

  • 正常操作期间:编辑堆栈(上半部分)将包含一个条目,在下一个同步周期中确认并删除该条目

  • 如果出现网络错误:客户端无法确认编辑堆栈,服务器将简单地清除它

如果这是正确的,则上半部分的编辑堆栈将为空或包含单个条目。而且,在任何情况下,该单个条目都不会(重新)发送回客户机。让它完全没用

显而易见的问题是,为什么我们需要一个编辑堆栈(在上半部分)?


我肯定我错过了一些重要的事情。请帮助我。

您的观点对于客户机-服务器体系结构是有效的。服务器的
编辑
堆栈是从更通用的对称表示中保留下来的,其中客户端和服务器都具有相同的功能和结构(特别是其中任何一方都可以发起通信)。虽然客户机的
备份卷影
最好在客户机-服务器设置中删除,以节省空间/时间,
编辑
仍然可以使用堆栈数据结构,没有任何缺点,并且具有一致的API优势。请注意,该算法可追溯到大约2009年。今天(2017年),您可能会选择使用WebSockets或WebRTC。差分同步算法预期并适应这样的设置,其中双方基本上是对等的,并且遵循相同的协议