我有一套有限的资源,我想在多个进程之间共享,而不是在多台服务器上运行。我想我需要的可以称为分布式信号量。如何实现分布式信号量?
我发现一个旧Perl implementation(基于memcached的),可以进行调整。我还没有完全调查过。
是否有图书馆/组件/软件,已经这样做了吗?算法,也许? 故障转移如何?
我有一套有限的资源,我想在多个进程之间共享,而不是在多台服务器上运行。我想我需要的可以称为分布式信号量。如何实现分布式信号量?
我发现一个旧Perl implementation(基于memcached的),可以进行调整。我还没有完全调查过。
是否有图书馆/组件/软件,已经这样做了吗?算法,也许? 故障转移如何?
的算法这就是所谓的Paxos。还有其他的算法,但它们都减少到Paxos(或不正确)。最流行的实现是Apache Zookeeper。 Zookeeper服务器自己运行Paxos。客户端参考命名对象,并可以锁定他们等
为了实现分布式信号,你需要定义一个权威之间节点的集群,那么一旦它被选中,你需要集中请求它。处理锁定请求是小菜一碟,选择领导者更加复杂。
的Paxos将解决你。我刚刚更新了wikipedia页面,因为算法描述不完整且具有误导性。
还有类似的Paxos一个简单的算法,这就是所谓的筏: http://raftconsensus.github.io/
我有点希望我能得到更多的东西简单,但我想我会学到一些东西钻研这一点。感谢您的链接。 – Mac 2011-03-28 11:59:30
[扎卜≠的Paxos](https://cwiki.apache.org/ZOOKEEPER/zab-vs-paxos.html) – smparkes 2012-08-15 00:54:05
扎卜INSTANCEOF垂直的Paxos;垂直Paxos INSTANCOF Paxos – 2012-10-30 18:49:10