Java 中的分布式计数信号量

Distributed counting semaphore in Java

我正在寻找类似于 java.util.concurrent.Semaphore 概念的分布式信号量实现(使用 postgres / zookeeper 作为存储),它将维护一组许可使用 acquire() 获取并使用 release() 发布,允许我限制对某些资源的访问或同步某些执行。唯一的区别是这个信号量应该允许我跨多个 jvm 执行所有这些操作。

如果 java 中有任何此类实现或任何实现相同的参考算法,有人可以指点我吗?

对于 zookeeper,您可以使用 apache Curator 提供共享信号量抽象的库。

在 postgres 中,您可能会考虑为此使用咨询锁,并在此基础上实现一种应用类库。