2015-04-27 128 views
1

我正在開發分佈式系統項目。我需要創建一個允許多個用戶同時編輯同一文本文件的程序。我一直在網上尋找一個相對簡單的解決方案,但我沒有找到一個。我已經閱讀了關於BlockingQueue的內容,但這對我來說沒有多大意義。我已經和我的助理談過了,他建議每個客戶都會有一個文本文件的副本,他們會編輯它。這些子文件將被合併到主副本中。但是,問題在於我無法在編輯文本文件時更新這些子文件。分佈式文本編輯器:多個用戶同時編輯文本文件

回答

2

據我所知,它需要一個在線文本編輯器,您可以使用它同時修改文件,更新應儘可能實時。

這裏是我會做什麼:

  1. 如果用戶打開一個文件,他收到它的副本和用戶添加到已打開文件的用戶列表。
  2. 用戶進行更改後,請等待X秒以累積更多更改,然後將其發送到服務器。
  3. 服務器一個接一個地處理文件的更改請求(當然,不同的文件可以並行完成,也可以通過將文件拆分成可以並行獨立處理的塊來更智能地完成,至少在服務器端[這只是部分正確,如果變更A和變更B中的受影響塊的交集爲空,則可以並行處理兩個更改])
  4. 更改請求要麼被接受,要麼所有更改對於所有打開文件或拒絕更改的用戶來說都是最廣泛的。這可能相當複雜。最簡單的方法是跟蹤版本號並拒絕所有來自舊版本的更改。 (如果每個塊都有一個版本號,並且塊的大小很小,那麼如果兩個或更多人同時在文檔中的幾乎相同的位置工作,則只會遇到拒絕,但它會相當一些工作,考慮如果它們變得太大或太小,你將不得不拆分/合併/刪除/插入塊。)