介绍
授予租约可以为 etcd 集群里面的键授予租约。当键被附加到租约时,它的存活时间被绑定到租约的存活时间,而租约的存活时间相应的被 time-to-live (TTL)管理。在租约授予时每个租约的最小TTL值由应用指定。租约的实际 TTL 值是不低于最小 TTL,由 etcd 集群选择。一旦租约的 TTL 到期,租约就过期并且所有附带的键都将被删除
授予租约
应用客户端可以为 etcd 集群里面的键授予租约。当键被附加到租约时,它的存活时间被绑定到租约的存活时间,而租约的存活时间相应的被 TTL 管理。在授予租约时,每个租约的最小 TTL 值由应用客户端指定。
一旦租约的 TTL 到期,租约就会过期并且所有附带的键都将被删除
# 创建一个租约,时间为 100s sh-5.0# etcdctl lease grant 100 lease 525b80fbbf3b906e granted with TTL(100s)
将 key 绑定到租约上
# 将创建的租约绑定到键 key1 上 sh-5.0# etcdctl put key1 "hello" --lease=525b80fbbf3b906e OK # 查询键,在租约有效期内,可以获取到键值,租约到期后键值对被删除 sh-5.0# etcdctl get key1 key1 hello # 租约到期后键值对被删除 etcdctl get key1 # 没有任何输出
撤销租约
应用通过租约 ID 可以撤销租约。撤销租约将删除所有附带的 key
# 创建租约 sh-5.0# etcdctl lease grant 1000 lease 525b80fbbf3b98cb granted with TTL(1000s) # 绑定 key 到租约上 sh-5.0# etcdctl put key2 "hello" --lease=525b80fbbf3b98cb OK # 查询 key sh-5.0# etcdctl get key2 key2 hello # 撤销租约 sh-5.0# etcdctl lease revoke 525b80fbbf3b98cb lease 525b80fbbf3b98cb revoked # 撤销后在查询,没有任何输出 sh-5.0# etcdctl get key2
刷新租约
应用程序可以通过刷新其 TTL
保持租约存活,确保其不会过期
# 创建租约 sh-5.0# etcdctl lease grant 20 lease 525b80fbbf3b9dc2 granted with TTL(20s) sh-5.0# etcdctl put key3 "nihao" --lease=525b80fbbf3b9dc2 OK # 刷新租约 sh-5.0# etcdctl lease keep-alive 525b80fbbf3b9dc2 lease 525b80fbbf3b9dc2 keepalived with TTL(20) lease 525b80fbbf3b9dc2 keepalived with TTL(20) lease 525b80fbbf3b9dc2 keepalived with TTL(20) lease 525b80fbbf3b9dc2 keepalived with TTL(20)
查询租约
客户端可以查询租赁信息,检查续订或租赁的状态,是否存在或者是否已过期。应用客户端还可以查询特定租约绑定的 key
。
# 创建租约 sh-5.0# etcdctl lease grant 300 lease 525b80fbbf3ba39b granted with TTL(300s) # 给 key 绑定租约 sh-5.0# etcdctl put key5 "hehe" --lease=525b80fbbf3ba39b OK # 给 key 绑定租约 sh-5.0# etcdctl put key6 "hihi" --lease=525b80fbbf3ba39b OK # 查询租约,租约一共 300s,还剩 281s sh-5.0# etcdctl lease timetolive 525b80fbbf3ba39b lease 525b80fbbf3ba39b granted with TTL(300s), remaining(281s) sh-5.0# etcdctl lease timetolive 525b80fbbf3ba39b --keys # 查询租约和对应的 key,租约一共 300s,还剩 274s,绑定了 key5 和 key6 lease 525b80fbbf3ba39b granted with TTL(300s), remaining(274s), attached keys([key5 key6])