Apache zookeeper 重新要求馆长跨进程读写锁
我试图用Curator进程间锁替换数据库悲观锁。对于数据库锁,我在事务开始时对实体执行Apache zookeeper 重新要求馆长跨进程读写锁,apache-zookeeper,apache-curator,Apache Zookeeper,Apache Curator,我试图用Curator进程间锁替换数据库悲观锁。对于数据库锁,我在事务开始时对实体执行select for updatelock,并在提交事务时释放它。事务可以跨越多个方法,如果链中的任何方法再次尝试获取该锁,它将在同一事务/线程中运行时获取该锁 现在使用zookeeper lock,我看到的示例如下所示: InterProcessMutex lock = new InterProcessMutex(client, lockPath); if ( lock.acquire(maxWait, wa
select for update
lock,并在提交事务时释放它。事务可以跨越多个方法,如果链中的任何方法再次尝试获取该锁,它将在同一事务/线程中运行时获取该锁
现在使用zookeeper lock,我看到的示例如下所示:
InterProcessMutex lock = new InterProcessMutex(client, lockPath);
if ( lock.acquire(maxWait, waitUnit) )
{
try
{
// do some work inside of the critical section here
}
finally
{
lock.release();
}
}
如果我的服务调用跨越多个方法,并且这些方法中的任何一个单独尝试获取该锁,这将产生问题。我不希望锁被传递,因为这些是独立的业务方法。如果我在同一个线程中运行,是否有一些服务/工厂实现可以返回相同的锁对象?如何将其置于threadLocal?这是可以做到的,但我想知道是否存在获取此锁的标准方法?