SuperAPI AI 工具集

distributed-lock

通用与其它

查看项目

更新于 10-15 20:30

技能介绍

用途:在多实例部署中防止竞态条件,确保同一时刻只有一个实例执行某段关键逻辑,适用于多实例处理同一任务、防止重复操作、跨实例单例定时任务以及分布式系统中的临界区。

主要能力:原子获取锁,同一时间仅一个持有者;TTL 过期机制,持有者崩溃时自动释放以防死锁;锁续期,支持长时间运行的操作;持有者 ID 用于追踪锁归属。提供 TypeScript 与 Python 实现,包含内存锁(单实例)和基于 PostgreSQL 的多实例锁,后者通过 SQL 函数 acquire_lock 与 release_lock 实现原子获取与释放。

使用方式:TypeScript 中通过 getDistributedLock() 获取单例,调用 acquire、release、extend 或 withLock;Python 中通过异步上下文管理器 lock.lock("job:123") 使用。锁命名建议按资源、任务或单例操作区分,如 lock:user:${userId}:profile-update、job:${jobType}:${jobId}、cron:${taskName}。

适用场景:支付处理、定时清理、报表生成等需要互斥的操作。

限制与注意事项:TTL 需匹配操作时长,过长或过短均可能引发问题;长时间操作需定期续期;必须在 finally 中释放锁;持有者 ID 应按实例而非请求生成;需处理获取失败的情况。资料未提供具体收费、价格或平台信息。