Multi-resource distributed lock server
npm install mlock-serverMulti-resource distributed lock server
- 原子性多资源锁支持
- TCP 协议通信
- 锁超时和续期
- 队列等待机制
- 断线重连支持
- 实时状态查询
``bash`
npm install mlock-server
`javascript
const Server = require('mlock-server');
const server = new Server({ port: 12340 });
await server.listen();
console.log('Server started on port 12340');
`
`typescript
import Server from 'mlock-server';
const server = new Server({ port: 12340, debug: true });
await server.listen();
`
`bash启动服务
npx mlock-server --port 12340
配置选项
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| port | number | 12340 | 监听端口 |
| debug | boolean | false | 是否输出调试日志 |
API
$3
创建服务端实例。
`javascript
const server = new Server({
port: 12340,
debug: true
});
`$3
启动服务监听。
`javascript
await server.listen();
`$3
关闭服务,清理所有连接和锁。
`javascript
await server.close();
`协议说明
mlock-server 使用简单的文本协议,通过 TCP 通信。
$3
所有消息以空格分隔,由
packet-wrapper 处理数据包边界。$3
#### CONNECT
客户端连接认证。
`
connect
`响应:
`
connected
`#### LOCK
请求上锁。
`
lock
`-
requestId: 请求 ID,用于响应匹配
- resources: 资源列表,用 | 分隔
- ttl: 锁生存时间(毫秒)
- timeout: 上锁超时时间(毫秒),0 表示不超时
- tolerate: 容忍队列长度,0 表示不限制响应:
`
result success
result failed
`#### EXTEND
续期锁。
`
extend
`响应:
`
result success
result failed
`#### UNLOCK
解锁。
`
unlock
`响应:
`
result success done
result failed
`#### PING
心跳检测。
`
ping
`响应:
`
result success pong
`#### STATUS
查询服务器状态。
`
status
`响应:
`
result success
`$3
服务器会主动推送以下消息:
`
connected # 连接成功
error # 连接错误
locked # 锁获取成功
timeout # 锁超时
expired # 锁过期
`状态查询
通过 Telnet 或 netcat 直接连接可获取状态:
`bash
nc localhost 12340
status
`返回文本格式的状态信息:
`
socketCount: 1
currentLocks: 0
liveTime: 12345
lockCount: 5
lockedCount: 5
...
``MIT