首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在客户/服务器之间同步文本的算法

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

Stack Overflow用户
提问于 2011-07-27 02:23:13
回答 3查看 369关注 0票数 1

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

是否存在这样的设计:客户端从服务器发送其当前状态和上次确认状态的增量?我在考虑Quake3 networking..

编辑1:

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

例如,在客户端计算diff,发送到服务器,服务器解释并更新其存储,向客户端发送ACK是否更昂贵?或者,采用客户端发送完整状态并由服务器存储的复制模型是否更便宜?

编辑2:

100 KB文本文件。小一点的,不要太大。

EN

回答 3

Stack Overflow用户

发布于 2011-07-27 02:27:10

你的意思是像diff那样

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

票数 2
EN

Stack Overflow用户

发布于 2011-07-27 02:26:33

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

谷歌使用了一种不同的方法来更新chrome,你可以" Google“它来看看。

编辑:如果它是一个生成一个更改的服务器,并在多个客户端进行复制,那么它应该在服务器上完成。从问题的更改中,我了解到一个客户端(或多个客户端)将产生这些更改,并希望将它们复制到服务器上。

好吧..。我会考虑4件事:

服务器和客户端的网络performance

  • number of clients

  • number of changes of
  • number of changes of server and of client

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

票数 1
EN

Stack Overflow用户

发布于 2011-07-27 21:17:16

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6834658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档