带锁的Zookeeper队列

时间:2013-05-16 05:04:54

标签: distribution distributed-computing apache-zookeeper

正如我们在Java Linked Blocking Queue中看到的那样,take()方法在从队列中出队之前对尾节点进行锁定/ gaurds。因此,没有2个线程将从尾部获取相同的节点。对于zookeeper,观察队列根节点的所有进程都会收到通知,并且所有进程都可以抓取同一组节点并开始处理相同的节点。

那么我该如何将其称为分布式队列呢?我说的是Zookeeper的制作人消费者重播。 http://zookeeper.apache.org/doc/r3.4.1/zookeeperTutorial.html#sc_producerConsumerQueues

1 个答案:

答案 0 :(得分:1)

在示例代码中,当使用代码时,

zk.delete(root + "/element" + min, 0);

只有1个节点会成功执行删除,尝试删除的每个其他进程都会抛出错误,因此消费者知道他是唯一一个使用该元素的人。