etcd中用lease租約實現過期

2022-01-14 10:58:08 字數 1324 閱讀 9912

etcd中用lease租約實現過期。

簡單紀錄一下在etcd中利用lease實現kv過期的功能。

其實思路很簡單:

1.申請乙個lease,且給這個租約設定乙個ttl,比如設定這個ttl為1秒。

2.然後將這個lease與kv的操作關聯起來,那麼1s後這個就過期了。

需要注意的是:

1.centos裡的埠要放開。

**如下:

}//建立連線

client, err :=clientv3.new(config)

if err !=nil

//申請乙個租約

lease =clientv3.newlease(client)

//申請乙個5s的租約。

if leasegrantresp, err = lease.grant(context.todo(), 5); err !=nil

leaseid =leasegrantresp.id

//獲取kv,然後put kv,將之和租約關聯起來,實現過期的效果

kv =clientv3.kv(client)

if putresp, err = kv.put(context.todo(), "

/cron/lock/job1

", "", clientv3.withlease(leaseid)); err !=nil

fmt.println(

"寫入成功,當前revision是:

", putresp.header.revision)

//模擬資料,每1s去get一下資料,看5s後資料有無過期

for

if getresp.count == 0

fmt.println(

"還木有過期,當前資料

", getresp.kvs)

time.sleep(

1 *time.second)}}

由**,我們可以看到設定了乙個5s的ttl,那麼看一下效果吧:

ETCD 原始碼學習 lease 二

在 etcd 原始碼學習過程,不會講解太多的原始碼知識,只講解相關的實現機制,需要關注原始碼細節的朋友可以自行根據文章中的提示,找到相關原始碼進行學習。本文主要介紹 lessor 如果發現過期鍵,server 如何處理過期鍵的過程。lessor goroutine func le lessor ru...

etcd實現服務發現

etcd環境安裝與使用文章中介紹了etcd的安裝及v3 api使用,本篇將介紹如何使用etcd實現服務發現功能。服務發現要解決的也是分布式系統中最常見的問題之一,即在同乙個分布式集群中的程序或服務,要如何才能找到對方並建立連線。本質上來說,服務發現就是想要了解集群中是否有程序在監聽 udp 或 tc...

etcd實現分布式鎖

我們希望同一時間只有乙個執行緒能夠訪問到資源,但是分布式資源點之間的協調會非常麻煩,這個時候我們就需要乙個分布式鎖。etcd分布式鎖實現原理 1.利用租約在etcd集群中建立乙個key,這個key有兩種形態,存在和不存在,而這兩種形態就是互斥量。2.如果這個key不存在,那麼執行緒建立key,成功則...