npm install distributed-locknpm install distributed-lock
---
``javascript
// 引用模块
const DistributedLock = require('distributed-lock');
// 使用zookeeper分布式锁
const DistributedLockService = DistributedLock.ZKDistributedLockService;
// 创建分布式锁服务(如果实例只需要一种分布式锁则可以使用单例)
let service = new DistributedLockService();
// 采用链式风格
service.lock('Gary').then((reentrantLock) => {
// 5秒后解锁
setTimeout(() => {
reentrantLock.unlockSync()
}, 5000);
}).catch(err => {
console.log('lock failed', err)
});
`
暴露属性
#### Function Logger
返回日志记录器
#### DistributedLockService
分布式锁服务接口.
#### DistributedReentrantLock
分布式锁处理器接口
#### ZKDistributedLockService
zookeeper 协议分布式锁服务实现.
#### ZKDistributedReentrantLock
zookeeper 协议分布式锁处理器实现.
#### RedisDistributedLockService
Redis 协议分布式锁服务实现.
#### RedisDistributedReentrantLock
Redis 协议分布式锁处理器实现.
#### setLogConfig(config)
设置日志记录配置,使用 tracer 第三方日志服务
分布式锁服务接口.
#### Promise lock(id, [timeout = 3000], [cb])
锁定资源
Arguments
* id String - 待锁定资源ID.int
* timeout - optional 锁资源成功后过期时间(毫秒) 默认3000毫秒.Function
* cb(error, reentrantLock) - 回调函数.
#### Promise unlock(locked, [cb])
解锁资源
Arguments
* locked DistributedReentrantLock - 锁定资源后的返回.Function
* cb(error, reentrantLock) - 回调函数.
---
zookeeper 协议分布式锁服务实现
#### constructor(config)
构造函数.
Default Config
`javascript`
{
host: '127.0.0.1',
port: 2181,
url: false,
area: '/distributed_lock',
ReentrantLock: ZookeeperDistributedReentrantLock,
lockAwait: 2000,
zkOption: {}
}
* host String - zk IP 地址.int
* port - zk 端口.String
* url - 使用逗号分隔: host:port 每个代表一个zk服务地址.
* 'localhost:2181,localhost:2182/test'
* area String - zk root路径DistributedReentrantLock
* ReentrantLock - 分布式锁实现int
* lockAwait - 请求锁等待时间(毫秒)Object
* zkOption - zk 参数
#### events
connectedReadOnly、disconnected、expired、authenticationFailed、ready
---
Redis 协议分布式锁服务实现
#### constructor(config)
构造函数.
Default Config
`javascript`
{
retryInterval: 300,
area: 'distributed_lock',
ReentrantLock: RedisDistributedReentrantLock,
lockAwait: 2000,
redisOptions: {}
}
* retryInterval int - 重试间隔(毫秒).String
* area - redis root路径DistributedReentrantLock
* ReentrantLock - 分布式锁实现int
* lockAwait - 请求锁等待时间(毫秒)Object` - redis 参数
* zkOption
#### events
connect、 ready、 error、 close、 reconnecting、 end