Etcd Lock 插件
github.com/go-lynx/lynx-etcd-lock 是 Lynx 基于 etcd 的分布式锁层。它是一个 runtime plugin,但没有独立的 YAML 配置 schema,也没有单独的 example_config.yml。
Runtime 事实
| 项目 | 值 |
|---|---|
| Go module | github.com/go-lynx/lynx-etcd-lock |
| Runtime 插件名 | etcd.distributed.lock |
| 插件元数据配置前缀 | lynx.etcd-lock |
| 必需的上游 runtime 资源 | etcd.config.center |
| 公开 API | SetCallback, Lock, LockWithOptions, LockWithRetry, NewLockFromClient, GetStats(), Shutdown() |
配置边界
- 仓库模板里没有专门的
lynx.etcd-lockYAML 树。 - 没有独立的
confschema,也没有单独的conf/example_config.yml。 - 启动依赖上游 etcd 插件先发布
etcd.config.center这个共享 runtime 资源。 - 如果上游 etcd 插件不存在,或者没有暴露可用 client,初始化会直接失败,常见报错包括
etcd config center plugin not found、etcd client is nil。 - 锁行为通过代码里的
LockOptions、RetryStrategy、RenewalConfig配置,而不是通过 YAML 配置。
实际生效的 YAML:全部继承自 lynx.etcd
因为 Etcd Lock 直接复用上游 etcd client,所以真正影响它的 YAML 只有上游 Etcd 插件配置。
继承的 lynx.etcd 字段
| 字段 | 对 Etcd Lock 的影响 | 默认值 / 交互影响 | 常见误解 |
|---|---|---|---|
endpoints | 决定锁请求最终连到哪个 etcd 集群。 | 上游 client 的必填项。 | 以为不配置 endpoints 也能加锁。 |
timeout | 影响共享 etcd client 的操作超时。 | 上游默认 10s。 | 把它当成锁租约 TTL。 |
dial_timeout | 影响共享 client 的建连等待时间。 | 上游默认 5s。 | 忽略慢连接,结果还没加锁就先建连失败。 |
namespace | 影响上游 etcd 插件的配置读取前缀,但不会改写锁 key 前缀。 | 上游默认 lynx/config。 |