大纲

  • etcd分布式锁演示:使用etcdctl

  • etcd分布式的过期时间

    • etcdctl当中无法设置ttl,因为lock会默认续租:https://github.com/etcd-io/etcd/issues/10096
    • 无法使用lease来关联一个lock,因为etcdctl不支持
    • concurrency当中可以使用lease来对lock进行添加租约;若不使用租约,会默认添加一个60s的租约,当lock释放之后,租约不会立马revoke,而是60s后再revoke
  • etcd分布式锁的校验,校验一个key是否被锁定(由于无法获取mutex当中的prx,导致无法校验)

    • 那怎么办呢?锁的时候etcd会以 key/lease_id的形式存储在etcd当中,我们只要根据prefix来读取,是否存在即可
    # client1上锁
    ➜  ~ etcdctl lock pengganyu --ttl=100
    pengganyu/694d7d563e90b23e
    
    # client2读取
    ➜  ~ etcdctl get --prefix pengganyu/
    pengganyu/694d7d563e90b23e