正在寻找分布式可重入ReadWrite锁解决方案。有没有人知道它是已经实现了还是在工作中?
找到了引用它的旧线程,但没有解决方案:https://groups.google.com/forum/#!searchin/hazelcast/readwrite/hazelcast/YBQtgHPMdP0/xwoTYdu_Z58J
发布于 2014-10-27 18:04:29
Hazelcast没有实现ReadWrite锁,这是有充分理由的。我确实按照建议实现了自己的readwrite锁,但它太复杂了。
结果是读写锁需要过多的网络调用(性能下降)。并且仍然不能满足节点故障的需要(如果使用多个节点)
问题源于您需要使用信号量进行读锁定(因为传统的锁只能由锁定它们的线程解锁)。这样做的问题是,当一个节点失败时,它的所有锁都会被释放,但信号量不会被释放,因此会产生死锁。
我们有几个人在做这件事。而提到的问题只是冰山一角。如果有人找到了解决方案,请分享,但我不认为这是一个可行的问题来解决,因为可能的解决方案松散的性能和太复杂。
发布于 2014-10-27 15:12:20
它没有实现;但如果您确实需要它,您可以在通过spi公开的hazelcast低级基础设施之上构建它。
发布于 2017-06-14 02:45:36
这似乎是一个很好的问题解决方案:https://github.com/ThoughtWire/hazelcast-locks
它使用Hazelcast以分布式方式实现java.util.concurrent.locks.ReadWriteLock接口。描述起来有点复杂,但通过查看源代码是可以理解的。值得一评。
https://stackoverflow.com/questions/26554920
复制相似问题