etcdctl的API分为v2与v3版本,因为版本不同,使用的方法、功能、性能也会有所不同。
我们先来说v2与v3的区别:
v3版本的操作: https://blog.csdn.net/meifannao789456/article/details/103480842
put操作:
curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "Zm9v", "value": "YmFy"}'
注意:这里使用的key与value是basse64加密输入
get操作[通过范围查询]:
curl -L http://localhost:2379/v3/kv/range -X POST -d '{"key": "Zm9v"}'
v2的Api用法查看网址:https://www.cnblogs.com/doscho/p/6227351.html
v3 的Api用法查看网址:
https://github.com/etcd-io/etcd/blob/master/Documentation/dev-guide/api_reference_v3.md
https://www.bookstack.cn/read/learning-etcd3/README.md
这里说明一下怎么查看api文档:
在etcd的Documentation/dev-guide/apispec/swagger/rpc.swagger.json查看,先查看对应的服务地址。然后根据据$ref的参数在rpc.swagger.json文档中继续查找,查看他有什么参数。
curl -N http://localhost:2379/v3/watch -X POST -d '{"create_request": {"key":"Zm9v"} }' &
curl -N http://localhost:2379/v3/watch -X POST -d '{"create_request": {"key":"Zm9v","start_revision":"161"} }'
"start_revision":为从第几个版本开始监听。
由图可知:当revision为161时,watch才开始watch。【设置了161版本才开始watch】
设置租约:
curl -L http://localhost:2379/v3/lease/grant -X POST -d '{"ID":"13790822374","TTL": "30"}'
设置租约ID与TTL时间:
curl -L http://localhost:2379/v3/kv/put -X POST -d '{"key": "1111", "value": "YmFy","lease":"13790822374"}'
给key设置lease租约:
再向key查找:
curl -L http://localhost:2379/v3/kv/range -X POST -d '{"key": "1111"}'
接下来对集群的memberAPI进行分析[只分析v3]
这里讲一下jq:jq是一个Json数据命令行处理工具。
有关的jq文档/开发手册:https://stedolan.github.io/jq/manual/#Invokingjq
jq的简单用法:https://my.oschina.net/guol/blog/282402
/v3/cluster/member/list:查看member列表
curl -L http://localhost:22379/v3/cluster/member/list -X POST | jq .
如下图可知有三个etcd节点:
/v3/cluster/member/add:加入一个 member
curl -L http://localhost:22379/v3/cluster/member/list -XPOST -H "Content-Type:application/json" -d '{"peerURLs":"http://127.0.0.1:12379"}' | jq .
/v3/cluster/member/add:删除一个 member
curl -L http://localhost:22379/v3/cluster/member/remove -H "Content-Type:application/json" -d '{"ID":"5010593740877641185"}' | jq .
/v3/cluster/member/update:修改member
curl -L http://localhost:22379/v3/cluster/member/update -XPUT -H "Content-Type:application/json" -d '{"peerURLs":"http://127.0.0.1:12379",”ID”:” 6668869689292193706”}' | jq .
curl -L http://localhost:2379/v3/kv/txn -X POST -d \
'{"compare":[{"target":"CREATE","key":"Zm9v","createRevision":"2"}],"success":[{"requestPut":{"key":"Zm9v","value":"YmFy"}}]}'
注意:v2使用的是原子的 CAD,CAS。V3则是使用txn的事务来操作
API 使用示例,一般不使用RESTful API。但这里还是介绍了v3的API使用。让自己也更清楚v3的用法,之后再代码上也会更容易了解
第三章 介绍etcdctl的命令代码
第五章 etcdctl的高级与用法