日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)

發(fā)布時(shí)間:2023/11/28 生活经验 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. etcd 客戶端

etcdctl 是一個(gè)命令行客戶端,便于我們進(jìn)行服務(wù)測(cè)試或手動(dòng)修改數(shù)據(jù)庫(kù)內(nèi)容,etcdctl 在兩個(gè)不同的 etcd 版本(v2 和 v3)下的功能和使用方式也完全不同。

一般通過(guò)如下方式來(lái)指定使用 etcd 的版本:

export ETCDCTL_API=2
export ETCDCTL_API=3

在前面我們已經(jīng)在 /tmp/etcd-download-test/ 安裝了 etcd,那么就可以將當(dāng)前的安裝路徑加到環(huán)境變量 PATH 中,如下:

vi ~/.bashrc

在最后加入

export PATH=$PATH:/tmp/etcd-download-test/

然后執(zhí)行以下命令讓其生效:

source ~/.bashrc

此時(shí)就可以直接輸入 etcdctl 命令進(jìn)行操作了,如下:

wohu@ubuntu-dev:~/tools$ etcdctl -h
NAME:etcdctl - A simple command line client for etcd3.USAGE:etcdctl [flags]VERSION:3.4.15API VERSION:3.4

支持的 COMMANDS 見下圖:

支持的 OPTIONS 見下圖:

etcdctl 支持的命令大體上分為數(shù)據(jù)庫(kù)操作和非數(shù)據(jù)庫(kù)操作兩類。

  • 數(shù)據(jù)庫(kù)操作基本圍繞著對(duì)鍵值和目錄的 CRUD 操作(即增刪改查);
  • 非數(shù)據(jù)庫(kù)操作如用戶、角色、授權(quán)、認(rèn)證相關(guān);

etcd 在鍵的組織上采用了類似文件系統(tǒng)中目錄的概念,即層次化的空間結(jié)構(gòu),我們指定的鍵可以作為鍵名,實(shí)際上,此時(shí)鍵值對(duì)放于根目錄 / 下面。

我們也可以為鍵的存儲(chǔ)指定目錄結(jié)構(gòu),如 /cluster/node/key,如果不存在 /cluster/node 目錄,則 etcd Server 將會(huì)創(chuàng)建相應(yīng)的目錄結(jié)構(gòu)。

2 鍵值對(duì)操作

鍵操作包括最常用的增刪改查操作,包括 PUTGETDELETE 等命令。

  • PUT 設(shè)置或者更新某個(gè)鍵的值
wohu@ubuntu-dev:~/tools$ etcdctl put /home/wohu/key1 "hello world1"
OK
wohu@ubuntu-dev:~/tools$ etcdctl put /home/wohu/key2 "hello world2"
OK
wohu@ubuntu-dev:~/tools$ etcdctl put /home/wohu/key3 "hello world3"
OK
wohu@ubuntu-dev:~/tools$ 
  • GET 獲取指定鍵的值
wohu@ubuntu-dev:~/tools$ etcdctl get /home/wohu/key3 
/home/wohu/key3
hello world3
wohu@ubuntu-dev:~/tools$

加上 --print-value-only 可以讀取對(duì)應(yīng)的值。

wohu@ubuntu-dev:~/tools$ etcdctl get /home/wohu/key3  --print-value-only
hello world3
wohu@ubuntu-dev:~/tools$ 

GET 通過(guò)選項(xiàng) --hex 獲取指定鍵的對(duì)應(yīng)值的 16 進(jìn)制格式

wohu@ubuntu-dev:~/tools$ etcdctl get /home/wohu/key3 --hex
\x2f\x68\x6f\x6d\x65\x2f\x77\x6f\x68\x75\x2f\x6b\x65\x79\x33
\x68\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x33
wohu@ubuntu-dev:~/tools$ 

十六進(jìn)制在 etcd 中有多處使用,如租約 ID 也是十六進(jìn)制。

  • GET 指定鍵范圍內(nèi)的值
wohu@ubuntu-dev:~/tools$ etcdctl get /home/wohu/key1 /home/wohu/key3
/home/wohu/key1
hello world1
/home/wohu/key2
hello world2
wohu@ubuntu-dev:~/tools$

上述操作獲取了大于等于 /home/wohu/key1,且小于 /home/wohu/key3 的鍵值對(duì)。key3 不在范圍之內(nèi),因?yàn)榉秶前腴_區(qū)間 [key1, key3),不包含 key3 。

  • 通過(guò) --prefix 獲取指定鍵前綴的所有鍵值對(duì)
wohu@ubuntu-dev:~/tools$ etcdctl get /home/wohu/ --prefix
/home/wohu/key1
hello world1
/home/wohu/key2
hello world2
/home/wohu/key3
hello world3
wohu@ubuntu-dev:~/tools$ 

這樣就能獲取所有以 /home/wohu/ 開頭的鍵值對(duì),當(dāng)前綴獲取的結(jié)果過(guò)多時(shí),還可以通過(guò) --limit=N 限制獲取的數(shù)量,其中 N 為指定的要返回的個(gè)數(shù)。

wohu@ubuntu-dev:~/tools$ etcdctl get /home/wohu/ --prefix --limit=2
/home/wohu/key1
hello world1
/home/wohu/key2
hello world2
wohu@ubuntu-dev:~/tools$ 
  • DELETE 刪除一個(gè)鍵或者特定范圍的鍵
  1. 刪除單個(gè)鍵
wohu@ubuntu:~$ etcdctl get /home/wohu/key4
/home/wohu/key4
hello world4
wohu@ubuntu:~$ etcdctl del /home/wohu/key4
1
wohu@ubuntu:~$ etcdctl get /home/wohu/key4
wohu@ubuntu:~$ 
  1. 刪除某一范圍的鍵,刪除鍵區(qū)間為 [key1 key3),返回已經(jīng)刪除鍵的個(gè)數(shù)
wohu@ubuntu:~$ etcdctl del /home/wohu/key1 /home/wohu/key3
2
wohu@ubuntu:~$ 
  1. --prev-kv 刪除鍵并返回該鍵的值
wohu@ubuntu:~$ etcdctl del /home/wohu/key1 --prev-kv 
1
/home/wohu/key1
hello world1
wohu@ubuntu:~$ etcdctl get /home/wohu/key1
wohu@ubuntu:~$ 
  1. --prefix 刪除指定前綴的鍵
wohu@ubuntu:~$ etcdctl get /home/wohu/key --prefix
/home/wohu/key1
hello world1
/home/wohu/key2
hello world2
/home/wohu/key3
hello world3
wohu@ubuntu:~$ etcdctl del /home/wohu/key --prefix
3
wohu@ubuntu:~$ etcdctl get /home/wohu/key --prefix
wohu@ubuntu:~$ 

3 watch 對(duì)象

watch 監(jiān)測(cè)一個(gè)鍵值的變化,一旦鍵值發(fā)生更新,就會(huì)輸出最新的值并退出。

其中 watch 終端和 put 分別在不同的終端。

  1. 監(jiān)聽單個(gè)鍵

  2. 監(jiān)聽某個(gè)范圍的鍵

etcd 保存修訂版本以便應(yīng)用客戶端可以讀取鍵的歷史版本。但是,為了避免積累無(wú)限數(shù)量的歷史數(shù)據(jù),需要對(duì)歷史的修訂版本進(jìn)行壓縮 compact 。經(jīng)過(guò)壓縮,etcd 刪除歷史修訂版本,釋放存儲(chǔ)空間,且在壓縮修訂版本之前的數(shù)據(jù)將不可訪問(wèn)。

4 lease 對(duì)象

lease 意為租約,類似于 Redis 中的 TTL(Time To Live)。etcd 中的鍵值對(duì)可以綁定到租約上,實(shí)現(xiàn)存活周期控制。在實(shí)際應(yīng)用中,常用來(lái)實(shí)現(xiàn)服務(wù)的心跳,即服務(wù)在啟動(dòng)時(shí)獲取租約,將租約與服務(wù)地址綁定,并寫入 etcd 服務(wù)器,為了保持心跳狀態(tài),服務(wù)會(huì)定時(shí)刷新租約。

4.1 授予租約

應(yīng)用客戶端可以為 etcd 集群里面的鍵授予租約。當(dāng)鍵被附加到租約時(shí),它的存活時(shí)間被綁定到租約的存活時(shí)間,而租約的存活時(shí)間相應(yīng)的被 TTL 管理。在授予租約時(shí),每個(gè)租約的最小 TTL 值由應(yīng)用客戶端指定。

一旦租約的 TTL 到期,租約就會(huì)過(guò)期并且所有附帶的鍵都將被刪除。

創(chuàng)建一個(gè)租約,時(shí)間為 100s

wohu@ubuntu:~$ etcdctl lease grant 100
lease 694d78e3bc12d11a granted with TTL(100s)

將創(chuàng)建的租約綁定到鍵 /home/wohu/key1 上

wohu@ubuntu:~$ etcdctl put /home/wohu/key1 "hello" --lease=694d78e3bc12d11a
OK

查詢鍵,在租約有效期內(nèi),可以獲取到鍵值,租約到期后鍵值對(duì)被刪除。

wohu@ubuntu:~$ etcdctl get /home/wohu/key1 
/home/wohu/key1
hello
wohu@ubuntu:~$ etcdctl get /home/wohu/key1 
wohu@ubuntu:~$ 

4.2 撤銷租約

應(yīng)用通過(guò)租約 ID 可以撤銷租約。撤銷租約將刪除所有附帶的 key。

wohu@ubuntu:~$ etcdctl lease grant 100000
lease 694d78e3bc12d122 granted with TTL(100000s)
wohu@ubuntu:~$ etcdctl put /home/wohu/key1 "hello" --lease=694d78e3bc12d122
OK
wohu@ubuntu:~$ etcdctl lease revoke 694d78e3bc12d122
lease 694d78e3bc12d122 revoked
wohu@ubuntu:~$ etcdctl get /home/wohu/key1 

4.3 刷新租期

應(yīng)用程序可以通過(guò)刷新其 TTL 保持租約存活,確保其不會(huì)過(guò)期。

wohu@ubuntu:~$ etcdctl lease grant 30
lease 694d78e3bc12d134 granted with TTL(30s)
wohu@ubuntu:~$ etcdctl lease keep-alive  694d78e3bc12d134
lease 694d78e3bc12d134 keepalived with TTL(30)
lease 694d78e3bc12d134 keepalived with TTL(30)
lease 694d78e3bc12d134 keepalived with TTL(30)
lease 694d78e3bc12d134 keepalived with TTL(30)
lease 694d78e3bc12d134 keepalived with TTL(30)

4.4 查詢租期

客戶端可以查詢租賃信息,檢查續(xù)訂或租賃的狀態(tài),是否存在或者是否已過(guò)期。應(yīng)用客戶端還可以查詢特定租約綁定的 key。

wohu@ubuntu:~$ etcdctl lease grant 300
lease 694d78e3bc12d137 granted with TTL(300s)
wohu@ubuntu:~$ etcdctl put /home/wohu/key1 "hello" --lease=694d78e3bc12d137
OK
wohu@ubuntu:~$ etcdctl lease timetolive 694d78e3bc12d137
lease 694d78e3bc12d137 granted with TTL(300s), remaining(271s)
wohu@ubuntu:~$ etcdctl lease timetolive 694d78e3bc12d137 --keys
lease 694d78e3bc12d137 granted with TTL(300s), remaining(261s), attached keys([/home/wohu/key1])
wohu@ubuntu:~$ 

總結(jié)

以上是生活随笔為你收集整理的etcd 笔记(03)— etcd 客户端使用(键值的增、删、改、查)、watch监测键、lease使用(创建租约、撤销租约、刷新租期、查询租期)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。