分布式文本编辑器:多个用户同时编辑一个文本文件。

3
我正在开发一个分布式系统项目,需要创建一个程序,允许多个用户同时编辑同一个文本文件。我在网上查找相对简单的解决方案,但没有找到合适的。我了解了BlockingQueue,但并不太理解。我与我的TA交流后得知,每个客户端都将拥有文本文件的一份副本进行编辑,然后再将这些子文件合并为主文本文件。然而,问题在于当他们正在编辑文本文件时,我无法更新这些子文件。
1个回答

4
据我所理解,您想要一个在线文本编辑器,可以同时修改文件,并且更新应尽可能实时。
这是我的建议:
  1. 如果用户打开文件,则会收到其副本,并将该用户添加到已打开此文件的用户列表中。
  2. 用户进行更改后,请等待 X 秒以累积进一步的更改,然后将它们发送到服务器。
  3. 服务器逐个处理文件的更改请求(当然,不同的文件可以并行处理,而且还可以更智能地将文件分成块,这些块可以在服务器端独立并行处理,至少部分是正确的 [只有当更改A和更改B影响块集合的交集为空时,才能同时处理二者])
  4. 更改请求被接受后,所有更改都将广播给已打开该文件的所有用户,否则就会被拒绝。这可能会很复杂。最简单的方法是使用版本号来跟踪,拒绝所有来自旧版本的更改。(如果每个块都有一个版本号,块的大小很小,那么只有当两个或多个人同时在文档的几乎相同位置工作时,才会遇到拒绝。但这需要相当大的工作量,考虑一下当块变得太大或太小时,您需要拆分/合并/删除/插入块。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接