2011-03-25 80 views
9

我有一套有限的资源,我想在多个进程之间共享,而不是在多台服务器上运行。我想我需要的可以称为分布式信号量如何实现分布式信号量?

我发现一个旧Perl implementation(基于memcached的),可以进行调整。我还没有完全调查过。

是否有图书馆/组件/软件,已经这样做了吗?算法,也许? 故障转移如何?

回答

7

的算法这就是所谓的Paxos。还有其他的算法,但它们都减少到Paxos(或不正确)。最流行的实现是Apache Zookeeper。 Zookeeper服务器自己运行Paxos。客户端参考命名对象,并可以锁定他们等

+0

我有点希望我能得到更多的东西简单,但我想我会学到一些东西钻研这一点。感谢您的链接。 – Mac 2011-03-28 11:59:30

+1

[扎卜≠的Paxos](https://cwiki.apache.org/ZOOKEEPER/zab-vs-paxos.html) – smparkes 2012-08-15 00:54:05

+0

扎卜INSTANCEOF垂直的Paxos;垂直Paxos INSTANCOF Paxos – 2012-10-30 18:49:10

1

为了实现分布式信号,你需要定义一个权威之间节点的集群,那么一旦它被选中,你需要集中请求它。处理锁定请求是小菜一碟,选择领导者更加复杂。

的Paxos将解决你。我刚刚更新了wikipedia页面,因为算法描述不完整且具有误导性。