我有一组有限的资源,想要在多个服务器上运行的多个进程之间共享。我想我需要的可能被称为分布式信号量。
我找到了一个旧的Perl实现(基于memcached),可以进行适应。但我还没有完全调查它。
是否已经有库/组件/软件可以实现这个功能?也许是算法?至于容错性如何呢?
我有一组有限的资源,想要在多个服务器上运行的多个进程之间共享。我想我需要的可能被称为分布式信号量。
我找到了一个旧的Perl实现(基于memcached),可以进行适应。但我还没有完全调查它。
是否已经有库/组件/软件可以实现这个功能?也许是算法?至于容错性如何呢?
这个算法被称为Paxos。虽然还有其他算法,但它们都可以简化为Paxos(或者是错误的)。最流行的实现方式是Apache Zookeeper。Zookeeper服务器之间运行Paxos,客户端引用命名对象并可以锁定等操作。
我建议基于 Consul 会话实现分布式信号量。在 Consul 中,会话代表了一个具有非常特定语义的契约。
Consul 提供的契约是,在以下任何情况下,会话将被作废:
当会话被作废时,它会被销毁,并且不能再使用。