当前位置:网站首页>分布式注册中心-etcd
分布式注册中心-etcd
2022-07-17 05:08:00 【HjasnJH】
etcd是什么?
etcd 设计为提供高可用、强一致性的小型 kv 数据存储服务。
etcd v2 和 v3 比较
v3使用 gRPC + protobuf 取代 v2的http + json 通信,提高通信效率;gRPC 只需要一条连接;http是每个请求建立一条连接;protobuf 加解密比json加解密速度得到数量级的提升;包体也更小;
v3 使用 lease (租约)替换key ttl自动过期机制;
v3 支持事务和多版本并发控制(一致性非锁定读)的磁盘数据库;而 v2 是简单的kv内存数据库;
v3 是扁平的kv结构;v2是类型文件系统的存储结构;
etcd的架构

其中,客户端和gRPC server之间使用的是protobuf进行通信
boltdb:是单机的支持事务的key-value的存储引擎,其采用的是B+树的存储结构
wal:预写式日志实现事务日志的标准方法,类似mysql的redo log,wal顺序写入磁盘,所以对比写入B+树更快
snapshot:是用于同步与其他节点的快照数据,类似redis的rdb 主从数据复制。业务流程:1. leader生成 snapshot;2. leader向follower发送snapshot;3.follower接收并应用snapshot;
etcd 简单的命令API
put,get,watch
租约
lease grant 创建一个租约
lease keep-alive 续约
lease list 枚举所有的租约
lease revoke 销毁租约
lease timetolive 获取租约信息数据版本号机制
通过命令行我们看到key的存储信息:
[[email protected] ~]# etcdctl get key -w json| jq
{
"header": {
"cluster_id": 14841639068965180000,
"member_id": 10276657743932975000,
"revision": 15,
"raft_term": 3
},
"kvs": [
{
"key": "a2V5",
"create_revision": 8,
"mod_revision": 15,
"version": 4,
"value": "MTc="
}
],
"count": 1
}
raft_term:
leader任期,leader切换时term加一;全局单调递增,64bits;
revision:
etcd 键空间版本号,key发生变更,则revision加一;全局单调递增,64bits;用来支持MVCC
kvs:
create_revision:创建数据时,对应的版本号;
mod_revision:数据修改时,对应的版本号;
version:当前的版本号;标识该val被修改了多少次;
etcd 存储原理
etcd在磁盘的存储结构时B+树,为了加速访问,内存的数据使用B树。
没有开始事务并发读
开启事务写
只运行一个客户端写,其他客户端从B+树读取,保证数据的MVCC,防止出现读未提交数据。

所以可以看出,etcd支持串行写,并发读。
边栏推荐
猜你喜欢
随机推荐
Base64 and file conversion
微信小程序5-基础加强(没写完)
Nacos configuration management
【C语言—零基础第七课】顺序结构与选择结构
Es6最新常用知识宝典(能够帮助你解决面试题困惑,编写程序中出现的问题等)
IText modify PDF Text
【C语言_复习_学习第二课】什么是进制?进制之间应该如何转换
Two methods of obtaining URL parameters and various methods of obtaining location objects
es6新增-对象部分
Nacos配置管理
遍历的方法总结
Pat class B 1002: write this number
Excel template export of easypoi
第一个智能合约程序Faucet.sol
【Es6】forEach,for...in ,for...of专栏,让你通过项目案例快速分辨各种for语句的使用方式及区别(完整版)内部有详细注释
网络命令:网卡信息,netstat,arp
vscode终端无法使用解决的办法
Wechat applet cloud development and use method-1
es6新增-运算符的扩展
Es6 真实案例解构(多维数组对象)全新案例:









