当前位置: 首页 > ops >正文

ETCD的简介和使用

1.简介

etcd是一个Go言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值存储、配置共享和服务发现等功能。

2.特点

  • 易使用:基于HTTP+JSON的API让你用curl就可以轻松使用;

  • 易部署:使用Go语言编写,跨平台,部署和维护简单;

  • 强一致:使用Raft算法充分保证了分布式系统数据的强一致性;

  • 高可用:具有容错能力,假设集群有n个节点,当有(n-1)/2节点发送故障,依然能提供服务;

  • 持久化:数据更新后,会通过WAL格式数据持久化到磁盘,支持Snapshot快照;

  • 快速:每个实例每秒支持一千次写操作,极限写性能可达10K QPS;

  • 安全:可选SSL客户认证机制;

  • ETCD 3.0:除了上述功能,还支持gRPC通信、watch机制。

3.简单架构

etcd主要分为四个部分:

  • HTTP Server:用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求。

  • Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现。

  • Raft:Raft强一致性算法的具体实现,是etcd的核心。

  • WAL:Write Ahead Log(预写式日志),是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照;Entry表示存储的具体日志内容。

通常,一个用户的请求发送过来,会经由HTTP Server转发给Store进行具体的事务处理,如果涉及到节点的修改,则交给Raft模块进行状态的变更、日志的记录,然后再同步给别的etcd节点以确认数据提交,最后进行数据的提交,再次同步。

4.安装测试

4.1.安装

etcd版本:3.5.11

https://github.com/etcd-io/etcd/releases/,下载对应系统的包

window:

-- 输出日志到控制台
etcd.exe --log-level debug --listen-client-urls http://192.168.184.1:2379 --advertise-client-urls http://192.168.184.1:2379
​
-- 输出日志到文件
etcd.exe  --log-outputs file21 --log-level debug --listen-client-urls http://192.168.184.1:2379 --advertise-client-urls http://192.168.184.1:2379

linux:

-- 输出日志到控制台./etcd  --log-level 'debug' --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'
​
-- 输出日志到文件
./etcd --log-outputs '/root/xxx/etcd-v3.5.11-linux-amd64/logs'    --log-level 'debug' --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'

4.2.测试

-- linux 进入安装目录
./etcdctl put greeting "Hello, etcd"
OK
​
./etcdctl get greeting
greeting
Hello, etcd

4.3.使用UI客户端连接

etcd-manager:v1.2.0

配置连接:

查看和操作key

http://www.xdnf.cn/news/17593.html

相关文章:

  • 17、CryptoMamba论文笔记
  • 导入文件到iPhone实现
  • C++11-下
  • QT6 如何在Linux Wayland 桌面系统抓屏和分享屏幕
  • AT F-Intervals 题解
  • 深入理解数据库架构:从原理到实践的完整指南
  • DEA模型MATLAB实现(CCR、BCC、超效率)
  • 云原生应用的DevOps3(CI/CD十大安全风险、渗透场景)
  • LeetCode189~191、198~214题解
  • Day52 Java面向对象07 类与对象总结
  • 鸿蒙har包打包与引用,其它主工程entry引用本地har
  • 【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
  • 【基于Redis的手语翻译序列存储设计】
  • 淘宝API列表:高效获取商品详情图主图商品视频参数item_get
  • Flutter path_provider的基本使用(读写文件)
  • 车规级霍尔开关芯片SC25891 | 为汽车安全带扣筑起高可靠性安全防线
  • 【MySQL】MySQL聚集索引与非聚集索引深度解析
  • 蚁剑--安装、使用
  • 基于跨平台的svg组件编写一个svg编辑器
  • 《Fast Automatic White Balancing Method by Color Histogram Stretching》论文笔记
  • ChatGpt 5系列文章1——编码与智能体
  • 自建知识库,向量数据库 体系建设(一)之BERT 与.NET 4.5.2 的兼容困境:技术代差下的支持壁垒
  • 2025杭电多校第七场 矩形框选、伤害冷却比 个人题解
  • Ansible 详细笔记
  • 高性能web服务器Nginx
  • Linux 系统运维、网络、SQL Server常用命令
  • Mac如何安装telnet命令
  • 3D文档控件Aspose.3D实用教程:在 C# 中将 3MF 文件转换为 STL
  • 深度学习与遥感入门(六)|轻量化 MobileNetV2 高光谱分类
  • UNet改进(32):结合CNN局部建模与Transformer全局感知