分布式注册中心-etcd

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的存储信息:

[root@localhost ~]# 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支持串行写,并发读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dubbo 是一种开源的分布式服务框架,可以实现高性能的 RPC 调用和服务治理。etcd 是一个分布式键值存储系统,也是一个强大的服务注册和发现中心,可以提供高可用性和可靠性的服务注册与发现功能。 在 Dubbo 中,etcd 可以作为一种注册中心来使用。注册中心的作用是让服务提供者将自己的服务注册到其中,同时让服务消费者从中发现并调用所需的服务。etcd 提供了简单而强大的 API,可以让 Dubbo 通过注册中心来实现服务的发布与订阅。 使用 etcd 作为 Dubbo 的注册中心有以下好处: 1. 可靠性:etcd分布式特性和高可用性保证了注册中心的稳定性和可靠性,即使某个节点出现故障,也不会影响整个注册中心的正常运行。 2. 高性能:etcd 的设计和实现使得其能够提供高效的服务注册和发现功能,可以支持大规模的服务治理场景。 3. 灵活性:etcd 支持多种语言的客户端 API,使得使用 Dubbo 的团队可以根据自身的技术栈和偏好选择合适的语言进行开发和集成。 4. 弹性伸缩:etcd 支持数据的强一致性和分布式架构,可以根据应用的负载和规模进行横向扩展,以满足高并发和大规模的服务注册与发现需求。 总的来说,Dubbo 的 etcd 注册中心能够提供可靠、高性能、灵活和弹性伸缩的服务注册和发现功能,为 Dubbo 在分布式环境中的服务治理提供了有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值