zookeeper锁的不可靠性

假设两个client竞争一个锁,拿到锁的client有资格处理指定的资源。系统的设计目标是同一时刻只有一个client在处理资源。

假设当前client1拿到锁了,client2等待中。 client1正在处理指定资源。

这时client1断开,client2拿到锁,开始处理指定资源;但由于client1并不知道自己已经断开了,所以会继续处理资源,结果造成两个client都在处理同一个资源。

解决办法是每个client在处理时要时不时地轮询自己跟zk是否已经断开连接。

见:

http://stackoverflow.com/questions/14275613/concerns-about-zookeepers-lock-recipe

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.