跳转到内容
OpenClaw 不踩坑恶意 Skills ,企业需 Skills Registry:Nacos 3.2 发布点此了解

分布式锁

Nacos 分布式锁是 3.x 中的实验性能力。它面向简单、短时的互斥控制,例如避免多个进程同时执行一段轻量级任务。

适合的场景

  • 多个应用实例中,只希望一个实例短时间执行某个任务。
  • 控制一次轻量级运维动作,避免重复触发。
  • 在测试环境验证 Nacos 锁能力和 SDK 行为。

不适合的场景

  • 需要强生产级锁服务的关键业务事务。
  • 需要 fencing token、owner token、可重入、公平队列或自动续约的场景。
  • 需要跨语言 SDK、完整管理 API、查询 API 或监听 API 的场景。
  • 运行在不可信网络中,并把锁作为安全边界的场景。

当前能力边界

能力当前状态
锁类型内置类型为 NACOS_LOCK
锁标识主要由 lockTypekey 标识。
租约客户端传入租约时长,服务端按当前时间计算过期时间。
默认租约请求租约为负数时,使用 nacos.lock.default_expire_time
最大租约使用 nacos.lock.max_expire_time 限制最大租约时长。
SDK当前主要通过 Java SDK 的 LockService 使用。
管理能力暂不提供完整的查询、监听和运维管理 API。
鉴权当前不建议在不可信网络中使用。

Java SDK 使用示例

Properties properties = new Properties();
properties.put("serverAddr", "127.0.0.1:8848");
LockService lockService = NacosLockFactory.createLockService(properties);
LockInstance lock = NLockFactory.getLock("demo-lock", 5000L);
try {
if (lockService.lock(lock)) {
// Execute a short critical section.
}
} finally {
lockService.unLock(lock);
}

混合版本集群中,如果服务端不支持分布式锁能力,客户端可能无法成功创建或使用锁。升级和灰度验证时,请先确认所有目标节点都支持该能力。

运维建议

  • 只在可信内部网络中使用,并控制调用方范围。
  • 为锁设置较短租约,避免长时间占用。
  • 在业务侧做好失败和超时处理,不要假设加锁一定成功。
  • 关注锁相关指标,观察加锁成功率、解锁成功率和存活锁数量。

相关文档