所谓保持独占,就是所有试图来获取这个锁的客户端,最终只有一个可以成功获得这把锁。通常的做法是把zk上的一个znode看作是一把锁,通过create znode的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。
#!/usr/bin/env python2.7
# -*- coding: utf8 -*-
"""
File: zklock.py
Brief: 分布式锁
Author:
Date:
"""
import logging, os, time
from kazoo.client import KazooClient
from kazoo.recipe.lock import Lock
class ZKDistributedLock():
def __init__(self, hosts, name, logger=None, timeout=1):
"