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方法
目录
相关文章
|
存储 机器学习/深度学习 弹性计算
阿里云服务器八代实例计算型c8i与通用型g8i性能和适用场景及最新收费标参考
阿里云服务器计算型c8i与通用型g8i实例怎么样?阿里云ECS家族第八代热门云服务器实例,计算型c8i与通用型g8i实例凭借全新CIPU架构、第四代Intel处理器以及芯片级安全加固技术,构成了云计算基础设施的"双引擎"。本文为大家介绍这两个实例规格的性能、适用场景及最新价格情况,并通过多维度对比与技术解析,为您展示这两款实例的核心优势与最新价格策略,以供参考和选择。
|
存储 算法 NoSQL
千亿级向量索引的秘密武器:一文详解蚂蚁集团的工程实践和开源突破
本文整理自2025QCon全球软件大会贾玮(蚂蚁集团NoSQL数据库和向量数据库的技术负责人)的演讲实录。 本文围绕向量检索技术的研究与实践展开系统性阐述,包含以下四个维度: 1.向量检索的基础原理以及相关的核心技术挑战; 2.蚂蚁集团在向量检索领域的工程实践和具体案例; 3.向量检索领域的最新学术研究和应用成果; 4.蚂蚁开源向量索引库VSAG的最新进展。
有哪些CAD软件支持(国产操作系统)麒麟操作系统
CAD梦想画图是由成都梦想凯德科技自主研发的轻量级CAD软件,专为国产操作系统如麒麟、统信设计。支持AutoCAD所有版本的dwg二维图纸,具备精准显示、测量、标注、绘图修改、文字查找及批注等功能,操作流畅,无需安装字体。用户可通过应用商店轻松安装,适合新手和专业人士使用。
|
SQL 存储 关系型数据库
PostgreSQL核心之SQL基础学习
PostgreSQL核心之SQL基础学习
561 3
|
Dart
Dart基础:进制转换、int与string互转
Dart基础:进制转换、int与string互转
483 3
|
机器学习/深度学习 搜索推荐 API
淘宝/天猫按图搜索(拍立淘)API的深度解析与应用实践
在数字化时代,电商行业迅速发展,个性化、便捷性和高效性成为消费者新需求。淘宝/天猫推出的拍立淘API,利用图像识别技术,提供精准的购物搜索体验。本文深入探讨其原理、优势、应用场景及实现方法,助力电商技术和用户体验提升。
|
监控 数据可视化 项目管理
WBS元素是什么?在项目管理中的作用与类型定义
工作分解结构(WBS)是项目管理中的重要工具,用于将复杂项目分解为更小、更易管理的任务或工作包。本文介绍了WBS的概念、特点、核心目标及其在项目管理中的作用,包括项目范围定义、任务分配、进度管理、预算控制和风险管理等方面。同时,文章还探讨了几种常见的WBS类型,如交付物导向型、阶段导向型、功能导向型和混合型WBS,并提供了创建有效WBS的步骤建议。最后,推荐了几款实用的项目管理工具,帮助团队更高效地管理和执行项目。
2037 7
|
安全 Java 测试技术
Java“AccessControlException”解决
Java中的“AccessControlException”通常发生在尝试访问受限资源时,如文件或网络。解决方法包括:确保所需权限已授予,检查安全策略配置,使用doPrivileged块执行敏感操作。调整策略文件或代码以匹配实际需求。
878 1
|
机器学习/深度学习 存储 人工智能
深度学习之不遗忘训练
基于深度学习的不遗忘训练(也称为抗遗忘训练或持久性学习)是针对模型在学习新任务时可能会忘记已学习内容的一种解决方案。该方法旨在使深度学习模型在不断接收新信息的同时,保持对旧知识的记忆。
527 4
|
敏捷开发 数据管理 测试技术
深入探索软件测试:方法、挑战与最佳实践
【2月更文挑战第20天】 在数字化时代,软件已成为不可或缺的核心。确保软件的质量和可靠性,软件测试扮演着至关重要的角色。本文将深入探讨软件测试的各种方法,面临的挑战以及实施的最佳实践。我们将从单元测试的基础出发,逐步过渡到集成和系统测试,最后讨论自动化测试的策略。文章旨在为软件测试工程师提供深度洞见,帮助他们更有效地设计和执行测试计划,以确保软件产品的质量。