客户/服务器之间同步文本的算法

时间:2011-07-26 18:23:13

标签: algorithm text synchronization

什么是低延迟,低带宽算法,用于同步客户端和服务器之间的文本文件?

是否存在客户端发送其当前状态的增量并且它是服务器的最后一次ACK状态的设计?我在想Quake3网络..

编辑1:

更具体地说,diff / delta算法在客户端/服务器环境中的行为如何。

e.g。在客户端计算差异,发送到服务器,服务器解释并更新其存储,向客户端发送ACK是否更昂贵?或者是否有一个复制模型更便宜,其中客户端发送其完整状态,服务器存储它..?

编辑2:

100 KB文本文件。小东西,不是太大。

3 个答案:

答案 0 :(得分:2)

你的意思是diff

将服务器端的文件版本存储在客户端中。无论何时需要同步,运行diff(您可以自己编写或使用库)。然后将差异发送到服务器并让服务器patch为本地版本。

答案 1 :(得分:1)

对于文本,您可以使用增量算法,例如,查看rsync的工作原理。

Google使用不同的方法更新Chrome,您可以“谷歌”查看。

编辑:如果是服务器生成一个更改并在许多客户端中复制,则应在服务器中完成。根据问题的变化,我了解客户端(或许多客户端)将产生更改并希望它们在服务器上进行复制。

嗯......我会考虑4件事:

  • 网络性能
  • 客户数量
  • 预期的更改次数
  • 服务器和客户端的性能

太多客户端在服务器上发送和执行此操作:它几乎是一个DoS 如果客户端很少,服务器性能高,客户端性能低,我只会在服务器上执行此操作。 否则,我只会对客户这样做。

答案 2 :(得分:1)

如果客户端也编辑文本,并具有撤消/重做功能,则可以将撤消堆栈用于增量。对于大文本和使用撤消堆栈的小更改应该比运行差异更有效。