2017-08-08 32 views
0

我有一個基於用戶輸入創建文件的API。我需要通過一個集羣來分發這個文件,這樣一個文件只能在1個節點上。我可以使用zookeeper來實現這一點,以及如何?使用zookeeper通過集羣分發文件

用戶可能想要刪除該文件。這意味着當被問到時,zookeeper需要從節點中刪除文件。

我已經讀過zookeeper wiki,但很難理解如何/何時使用它。

回答

0

是的,你可以使用Apache Curator Recipes來做到這一點。 Apache Curator是Apache Zookeeper的一個改進的客戶端庫。

您可以使用zookeeper 手錶 API和Curator的分佈式鎖來實現你想要的。

  1. 首先,當文件被創建,創建一個Z序節點(可以是與該文件作爲數據的內容)在其下是由集羣中的所有節點觀看了Z序節點。然後,集羣中的所有節點將通過通知對文件進行創建。
  2. 然後,節點將競爭獲取分佈式鎖,並且獲取它的節點將下載文件(如果需要,您可以刪除以前創建的帶有文件內容的ZNode,或引入另一種機制來跟蹤獲取的文件) 。

希望你有一些想法。

+0

謝謝。在刪除文件的同時,獲取該文件的節點應該能夠刪除它。我如何管理? – wittyameta

+0

由於正在獲取文件的節點具有「分佈式鎖定」,因此可以毫無問題地將其刪除。 此外,您可以編寫程序邏輯,只有在能夠獲取文件的情況下才能繼續。我認爲這是最簡單的方法。獲取該文件的節點也負責刪除它。 –

+0

通過不同的請求調用文件刪除(因此是一個新線程)。我是否需要維護當前節點獲取的鎖的列表? – wittyameta