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

}

更多內容請關注每日編程,每天進步一點。


分享到:


相關文章: