在客户端和服务器之间同步文本文件的低延迟、低带宽算法是什么?
是否存在这样的设计:客户端从服务器发送其当前状态和上次确认状态的增量?我在考虑Quake3 networking..
编辑1:
更具体地说,diff/delta算法在客户端/服务器环境中的行为如何。
例如,在客户端计算diff,发送到服务器,服务器解释并更新其存储,向客户端发送ACK是否更昂贵?或者,采用客户端发送完整状态并由服务器存储的复制模型是否更便宜?
编辑2:
100 KB文本文件。小一点的,不要太大。
发布于 2011-07-27 02:27:10
你的意思是像diff那样
在客户端存储文件的服务器端版本。每当您需要同步时,运行一个diff (您可以自己编写或使用库)。然后将差异发送到服务器,并让服务器patch它的本地版本。
发布于 2011-07-27 02:26:33
对于文本,您可以使用增量算法,例如,看看rsync是如何工作的。
谷歌使用了一种不同的方法来更新chrome,你可以" Google“它来看看。
编辑:如果它是一个生成一个更改的服务器,并在多个客户端进行复制,那么它应该在服务器上完成。从问题的更改中,我了解到一个客户端(或多个客户端)将产生这些更改,并希望将它们复制到服务器上。
好吧..。我会考虑4件事:
服务器和客户端的网络performance
太多的客户端在服务器上发送和执行该操作:这几乎是一个DoS,如果客户端很少,服务器性能很高,客户端性能很低,我才会在服务器上这样做。否则,我只会在客户机上这么做。
发布于 2011-07-27 21:17:16
如果客户端还编辑文本,并且具有撤消/重做功能,则可以将撤消堆栈用于增量。对于大文本和小更改,使用撤销堆栈应该比运行diff更有效。
https://stackoverflow.com/questions/6834658
复制相似问题