了解 Neil Fraser 的差分同步算法
Understanding Neil Fraser's Differential Synchronization algorithm
我正在尝试完全理解 Differential Synchronization algorithm,尤其是 保证交付方法(第 4 节)。
我不明白为什么在同步周期的上半部分需要一个编辑堆栈。
编辑堆栈的用途如下(从第 4 节的第二段复制):
[...] in the case of packet loss, the edits are queued up in a stack and are retransmitted to the remote party on every sync until the remote party returns an acknowledgment of receipt.
有道理。但是在第六段的后面(丢失return数据包的情况)它说:
This indicates that the previous response must have been lost. Therefore the server deletes its edit stack and copies the Backup Shadow into Shadow Text (step 4).
所以,据我了解:
在正常操作期间:编辑堆栈(在上半部分)将包含一个条目,该条目在下一个同步周期中被确认并删除。
如果出现网络错误:客户端无法确认编辑堆栈,然后服务器将简单地清除它。
如果这是正确的,那么上半部分的编辑堆栈将是空的或包含一个条目。此外,在任何情况下,该单一条目都不会(重新)发送回客户。让它完全没用?!
那么显而易见的问题是 为什么我们根本需要 编辑堆栈(在上半部分)?
我确信我遗漏了一些重要的东西。请帮帮我。
您的观点适用于 客户端-服务器 架构。服务器的 Edits
堆栈是更通用的对称表示的保留,其中客户端和服务器具有相同的功能和结构(特别是,任何一方都可以发起通信)。虽然客户端的 Backup Shadow
最好在客户端-服务器设置中删除以节省 space/time,但 Edits
仍然可以使用堆栈数据结构而没有任何缺点,并且具有一致的好处API。请注意,该算法大约可追溯到 2009 年。今天(2017 年),您可能会选择使用 WebSockets 或 WebRTC。差分同步算法预期并适应这样一种设置,其中双方本质上是 对等方 并遵循相同的协议。
我正在尝试完全理解 Differential Synchronization algorithm,尤其是 保证交付方法(第 4 节)。
我不明白为什么在同步周期的上半部分需要一个编辑堆栈。
编辑堆栈的用途如下(从第 4 节的第二段复制):
[...] in the case of packet loss, the edits are queued up in a stack and are retransmitted to the remote party on every sync until the remote party returns an acknowledgment of receipt.
有道理。但是在第六段的后面(丢失return数据包的情况)它说:
This indicates that the previous response must have been lost. Therefore the server deletes its edit stack and copies the Backup Shadow into Shadow Text (step 4).
所以,据我了解:
在正常操作期间:编辑堆栈(在上半部分)将包含一个条目,该条目在下一个同步周期中被确认并删除。
如果出现网络错误:客户端无法确认编辑堆栈,然后服务器将简单地清除它。
如果这是正确的,那么上半部分的编辑堆栈将是空的或包含一个条目。此外,在任何情况下,该单一条目都不会(重新)发送回客户。让它完全没用?!
那么显而易见的问题是 为什么我们根本需要 编辑堆栈(在上半部分)?
我确信我遗漏了一些重要的东西。请帮帮我。
您的观点适用于 客户端-服务器 架构。服务器的 Edits
堆栈是更通用的对称表示的保留,其中客户端和服务器具有相同的功能和结构(特别是,任何一方都可以发起通信)。虽然客户端的 Backup Shadow
最好在客户端-服务器设置中删除以节省 space/time,但 Edits
仍然可以使用堆栈数据结构而没有任何缺点,并且具有一致的好处API。请注意,该算法大约可追溯到 2009 年。今天(2017 年),您可能会选择使用 WebSockets 或 WebRTC。差分同步算法预期并适应这样一种设置,其中双方本质上是 对等方 并遵循相同的协议。