栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Etcd特性学习1——KV操作

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Etcd特性学习1——KV操作

0x01 功能分类

Etcd作为一个分布式一致性的KV存储组件,现在的功能远不止于KV存储了。详细了解下其功能特点,有利用在使用它时做出最合适的选择。

通过etcdctl -h命令可以看到有如下的特性。

  1. 基本的KV操作 get put txn del watch
  2. 数据操作 分片defrag 压缩事件 compaction
  3. 端点管理 endpoint
  4. 租期管理 lease
  5. 锁 lock
  6. 选举 elec
  7. 成员管理 member
  8. 转移leader move-leader
  9. 角色管理 role
  10. 快照管理 snapshot
  11. 运维相关 告警 alarm,状态检测 check,镜像 make-mirror
  12. 认证管理 auth
  13. 用户管理 user

居然已经有这么多的特性,不得不感叹开源社区力量的强大。之前也觉得ZooKeeper有许多不错的特性,但因为社区不活跃了,与Etcd对比,已经落后太多了。

0x02 基本的KV操作

基本的KV包含查询get、写入put、删除del、监听watch和事务txn。

2.1 get

仅仅一个get就支持了许多选项。先不管全局的选项。

  1. --consistency 2个取值"l"或者"s",这涉及到了分布式中两种一致性模型,见参考1。简单理解l为linearizability,表示所有客户端任意一时间看到的数据都是一致的。而s代表sequential,只保证一个客户端自己的操作是有序的,自己写的,后面读能读到新的。
  2. --count-only 默认为false,为true时,需要和全局的–write-out="fields"联合使用,只返回查询的数量。这可以适用于某些只需要数量的场景,避免传输大量数据。
  3. --from-key 查询从某个key开始的所有key,与--limit联合使用,可以实现分页机制,同样可以减小网络传输的数据量。
  4. --keys-only 默认为false,查询默认会返回key和value,同样某些场景下只需要key,也可以减轻网络压力。
  5. --limit 限制获取的key数量。
  6. --order 支持排序方式,升序、降序。
  7. --prefix 按照前缀方式获取。类似mysql中的前缀匹配。
  8. --print-value-only 默认为false,只返回值。意义同前述。
  9. --rev 获取特定revsion的值。Etcd是支持子版本的,k8s就是利用这个机制实现pod回滚的。
  10. --sort-by 指定排序的键。支持创建时间、key、修改时间、值和版本。

同时注意到get也支持一次获取多个,也支持一个范围。通过查看源码可以知道,这在Etcd协议中是通过range来实现的。

2.2 put

put的选项就少了许多。

  1. --ignore-lease 也就是不更新lease。
  2. --ignore-value 不更新value。
  3. --lease 指定lease的ID。
  4. --prev-kv 返回修改前的key/value。

lease是Etcd支持临时节点的一种实现方式,ZooKeeper中的“临时节点”。相当于租约,过期了数据就被清除了。

2.3 del

删除,选项也比较少。

  1. --from-key 与get类似,支持批量删除。
  2. --prefix 默认为false,打开时代表通过前缀删除。
  3. --prev-kv 返回删除前的key和value。
2.4 watch

watch用来监听一个key或者一系列key的变化,比如被PUT、DEL。可以基于这个来实现事件通知,一次watch是一直有效的(至少从etcdctl看来是这样的),与ZooKeeper不同。
选项也不多。

  1. --interactive 默认为false,打开是为交互模式。可以一次运行watch多个节点。测试起来非常方便。
  2. --prefix 同前面。watch指定前缀的key。
  3. --prev-kv 同前,变化时,返回变化前的。
  4. --progress-notify 默认为false,打开时代表server端周期性发送响应,即使数据没有变化。推送的间隔是服务端根据自己的负载情况确定的,对客户端来说不是很明确。
  5. --rev 代表watch特定子版本起始值。
2.6 txn

txn是事务操作。可以一次请求中进行多个put、del操作。
一般是开启--interactive模式。注意的是前置判断完成后,要按两个回车结束当前的操作。

$ etcdctl txn --interactive
compares:
value("user1") = "ok1" // 输入后按两次enter

success requests (get, put, del):
put user1 "ok" // 输入后按两次enter

failure requests (get, put, del):
put user2 "ok2" // 输入后按两次enter

FAILURE

OK
0x03 小结

Etcd基本的KV操作提供了非常丰富的特性,可以灵活应用于各种场景。对相关服务设计提供了不错的参考。下一步会继续学习后面的内容。

0x04 参考
  1. https://cse.buffalo.edu/~stevko/courses/cse486/spring13/lectures/26-consistency2.pdf
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号