2015-04-27 99 views
1

我正在开发分布式系统项目。我需要创建一个允许多个用户同时编辑同一文本文件的程序。我一直在网上寻找一个相对简单的解决方案,但我没有找到一个。我已经阅读了关于BlockingQueue的内容,但这对我来说没有多大意义。我已经和我的助理谈过了,他建议每个客户都会有一个文本文件的副本,他们会编辑它。这些子文件将被合并到主副本中。但是,问题在于我无法在编辑文本文件时更新这些子文件。分布式文本编辑器:多个用户同时编辑文本文件

回答

2

据我所知,它需要一个在线文本编辑器,您可以使用它同时修改文件,更新应尽可能实时。

这里是我会做什么:

  1. 如果用户打开一个文件,他收到它的副本和用户添加到已打开文件的用户列表。
  2. 用户进行更改后,请等待X秒以累积更多更改,然后将其发送到服务器。
  3. 服务器一个接一个地处理文件的更改请求(当然,不同的文件可以并行完成,也可以通过将文件拆分成可以并行独立处理的块来更智能地完成,至少在服务器端[这只是部分正确,如果变更A和变更B中的受影响块的交集为空,则可以并行处理两个更改])
  4. 更改请求要么被接受,要么所有更改对于所有打开文件或拒绝更改的用户来说都是最广泛的。这可能相当复杂。最简单的方法是跟踪版本号并拒绝所有来自旧版本的更改。 (如果每个块都有一个版本号,并且块的大小很小,那么如果两个或更多人同时在文档中的几乎相同的位置工作,则只会遇到拒绝,但它会相当一些工作,考虑如果它们变得太大或太小,你将不得不拆分/合并/删除/插入块。)