2017-08-08 88 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