etcd定义
etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines.
从定义可以看到,etcd是一个key-value型存储,具有强一致性
- strongly consistent,
- distributed key-value store
etcd的命令行操作
etcd的客户端有etcdctl、etcd-go、etcd-java,其中etcdctl是etcd自带的命令行工具,其主要命令有
etcdctl put key value // 存储一对keyvalue
etcdctl get key // 获取某key对应的value
etcdctl get key1 keyN //获取[key1, keyN)范围的数据,注意是左开右闭
etcdctl get key --prefix // 获取某前缀数据
etcdctl watch key // watch某key,如有变化收到事件通知
etcdctl watch key --prefix // watch某前缀的key,如有变化收到事件通知
etcdctl tnx -i (if else if ) // 处理事务
etcdctl lease grant 60 // 设置租约60秒,返回租约id
etcdctl put --lease=leaseid key value // 在lease上绑定key value,当lease满未续租,则key value失效
etcd数据存储
etcd的数据是按照B+树的方式组织,并按照MVCC的思想存储数据,也就是数据按照多个版本存储,每个版本都有一个版本号,当数据更新时,并非更新原有数据,而是再存储一条新版本号数据。
在内存中,实际上有两个B+树,一个存储key到revison的映射,一个存储revison和value的映射。当进行get的时候,先到key-revison映射中查找revison,如果未制定版本号,就取最新的revison,然后用revison到revison-value的B+树查找value。
为什么要用B+树,因为要支持范围查找。
小结
本文总结etcd的简要使用,下篇再对底层原理进行解析。
网友评论