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

时间:2015-04-27 23:47:51

标签: java io distributed synchronized

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

1 个答案:

答案 0 :(得分:3)

据我了解,您需要一个在线文本编辑器,您可以使用该编辑器同时修改文件,并且更新应尽可能实时地进行。

以下是我要做的事情:

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