etcd v3 lease(租约)

etcd v3 lease(租约)

在etcd v3中并没有临时节点的概念,但是支持lease租约机制。

什么叫lease?其实就是etcd支持申请定时器,比如:可以申请一个TTL=10秒的lease(租约),会返回给你一个lease ID标识定时器。你可以在set一个key的同时携带lease ID,那么就实现了一个自动过期的key。

在etcd中,一个lease可以关联给任意多的Key,当lease过期后所有关联的key都将被自动删除。

通过命令行介绍:

申请租约:从申请开始计算时间

etcdctl lease grant 40

lease 4e5e5b853f528859 granted with TTL(40s)

授权租约:节点的生命伴随着租约到期将会被DELETE

etcdctl put --lease=4e5e5b853f528859 /test/ok/first xx

OK

撤销租约:撤销租约和租约到期一样,节点都会被删除

etcdctl lease revoke 4e5e5b853f5286cc

lease 4e5e5b853f5286cc revoked

租约续约:每当到期将会续约

etcdctl lease keep-alive 4e5e5b853f52892b

lease 4e5e5b853f52892b keepalived with TTL(40)

主要方法:

type Lease interface {

// Grant creates a new lease.

Grant(ctx context.Context, ttl int64) (*LeaseGrantResponse, error)

// Revoke revokes the given lease.

Revoke(ctx context.Context, id LeaseID) (*LeaseRevokeResponse, error)

// TimeToLive retrieves the lease information of the given lease ID.

TimeToLive(ctx context.Context, id LeaseID, opts ...LeaseOption) (*LeaseTimeToLiveResponse, error)

// KeepAlive keeps the given lease alive forever.

KeepAlive(ctx context.Context, id LeaseID) (

// KeepAliveOnce renews the lease once.

KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error)

// Close releases all resources Lease keeps for efficient communication with the etcd server.

Close() error

}

更多内容请关注每日编程,每天进步一点。


分享到:


相關文章: