Etcd 认识第二篇

简介: etcd的整体架构- 客户端层 - Clientv3/etcdctl客户端。用户通过命令行或者客户端调用api方式调用使用 - 客户端层提供负载均衡和节点间故障转移等特性

Etcd整体架构

etcd的整体架构

  • 客户端层

    • Clientv3/etcdctl客户端。用户通过命令行或者客户端调用api方式调用使用
    • 客户端层提供负载均衡和节点间故障转移等特性
  • API接口层

    • 提供李客户端访问服务端的通信协议和接口的定义,以及服务端节点之间相互通信的协议
    • etcd v3 提供gRPC方式;etcd v2使用http/1.x协议
  • etcd Raft层

    • 负责Leader选举和日志复制等功能
    • 还与集群中的其他etcd节点交互,实现分布式一致性数据同步
  • 逻辑层

    • 鉴权、租约、KVServer、MVCC、Compactor压缩
  • etcd存储

    • 实现快照、预写式日志WAL

client

type Client struct{
  Cluster //向集群中增加etcd服务端节点,管理员操作
  KV      // 键值存储
  Lease   // 租约相关操作
  Watcher // 观察订阅,监听数据变化
  Auth       // 管理etcd的用户和权限,管理员操作
  Maintenance // 维护etcd,如迁移etcd的leader节点,管理员操作
  Username string // 认证的用户名
  Password string //认证的密码
}

建立客户端与etcd集群连接

cli,err := clientV3.New(clientV3.Config}{
  Endpoints : []string{ "localhost:8080","localhost:8081"}, //etcd多个节点服务地址,可以传递多个
  DialTimeout : 10 * time.Second, // 首次连接超时时间,一旦连接成功后,后续会自动重连,其他不同关心
})

KV存储

// 获取kv对象实例
kv := clientev3.NewKV(client)

// kv 接口的定义
type KV interface {
  Put(ctx context.Context, key,val string,opts ...opOption)(*PutResponse,error)
  Get (ctx context.Context, key string,opts ...opOption)(*GetResponse,error)
  Delete (ctx context.Context, key string,opts ...opOption)(*DeleteResponse,error)
  Compact (ctx context.Context,  rev int64,opts ...compactOption)(*CompactResponse,error)
  Do(ctx context.Context,op op)(OpResponse,error)
  Txn(ctx context.Context) Txn
}
  • Put 将键值对放入etcd中

    • 键值可以是纯子节数组,字符串是该子节数组的 不可变表示形式
  • Get 对存储的数据进行取值

    • 参数opOption是可选的函数参数。

      • 值为withRange(end)返回[key,end]范围内的键
      • 值为WithFromKey() 返回大于或等于的key的键
      • 值为WithRev(rev),Get查询给定修订版本的键
      • 值为WithLimit(limit)返回的key数量受limit限制
      • 值为WithSort 对键进行排序
  • Delete 对存储的数据进行删除
  • Compact 压缩etcd键值对存储中的事件历史

    • 键值对应当定期压缩,否则事件历史会无限增长
  • Txn 事务

    • 在单个事务中处理多个请求
    • 不允许在一个Txn中多次修改同一个key
  • Watch 异步监控键的更改
  • Lease Service 提供租约的支持,

    • Lease是检测客户端存活状况的机制
  • Lock Service 提供分布式共享锁的支持

    • 以gRPC接口的方式暴露客户端的锁机制
    • Lock方法
    • Unlock方法
目录
相关文章
|
运维
ETCD系列之一:简介
本文介绍etcd使用场景,工作原理。
76737 3
|
Kubernetes Cloud Native Apache
基于 Kubernetes 部署 Zookeeper,太有意思了!
随着云原生化流行的大趋势,我们的基础组件也需要逐渐上Kubernetes了。Apache Zookeeper作为目前最流行的分布式协调组件,在我们的微服务架构中负责扮演注册中心的角色。
基于 Kubernetes 部署 Zookeeper,太有意思了!
|
3月前
|
存储 监控 算法
[etcd]简介与安装
[etcd]简介与安装
|
6月前
|
存储 算法 开发者
etcd入门指南
etcd入门指南
380 4
etcd入门指南
|
6月前
|
Kubernetes 监控 API
第一章 Kubernetes 简介
第一章 Kubernetes 简介
56 3
|
6月前
|
存储 算法 开发工具
学习分享|Etcd/Raft 原理篇
本文是根据近期对 Etcd-Raft 的学习把自己的理解做个简单整理和分享。
|
6月前
|
存储 消息中间件 算法
ETCD(一)简介
ETCD(一)简介
96 0
|
数据可视化 Ubuntu Go
etcd源码分析 - 0.搭建学习etcd的环境
如果要更深入地研究etcd,就需要我们涉及到源码、并结合实践进行学习。那么,接下来,我将基于`v3.4`这个版本,做一期深入的环境搭建。
96 0
|
存储 Kubernetes 持续交付
kubernetes系列文章第一篇-k8s基本介绍
kubernetes系列文章第一篇-k8s基本介绍
分布式学习十四:etcd实现服务注册/发现
分布式学习十四:etcd实现服务注册/发现
96 0
分布式学习十四:etcd实现服务注册/发现