完整教程:LinuxC++——etcd分布式键值存储系统入门

news/2025/10/27 16:57:03/文章来源:https://www.cnblogs.com/gccbuaa/p/19169583

etcd框架

  • etcd下载与安装
    • 了解 etcd
    • 在 Ubuntu 上下载与安装 etcd
      • 从预编译二进制包安装
      • 通过包管理器安装
      • 从源码编译安装
    • 运行 etcd
    • 使用 etcdctl 进行基本操作
      • 基础操作
      • 集群管理
      • 版本控制与历史
    • ⚙️ 生产环境注意事项

etcd下载与安装

在Linux Ubuntu中,etcd是一个高可用、强一致性的分布式键值存储系统 ,它常被用作服务发现、配置共享和协调分布式服务的核心组件。

了解 etcd

etcd 使用 Raft 一致性算法来确保数据的可靠性与一致性。它的特点包括:

简单:提供了清晰的HTTP API进行交互。

安全:支持SSL证书验证。

快速:官方基准测试显示,单实例支持每秒高达约16,000次写操作和约12,000次先写后读操作。

可靠:基于Raft算法实现分布式系统数据的可用性和一致性。

etcd 在微服务和容器编排领域应用广泛,Kubernetes 就使用 etcd 作为其存储后端,用于存储所有集群数据。

在 Ubuntu 上下载与安装 etcd

在 Ubuntu 上安装 etcd,主要有以下几种方式:

从预编译二进制包安装

这是最常见和直接的方法。

下载:访问 etcd 的 GitHub 发布页面,获取最新稳定版本的压缩包。例如,下载版本 3.5.4 的命令如下:

wget https://github.com/etcd-io/etcd/releases/download/v3.5.4/etcd-v3.5.4-linux-amd64.tar.gz

安装与配置

# 解压下载的压缩包
tar -zxvf etcd-v3.5.4-linux-amd64.tar.gz
# 进入解压后的目录
cd etcd-v3.5.4-linux-amd64
# 为 etcd 和 etcdctl 添加可执行权限
sudo chmod +x etcd etcdctl
# 将可执行文件移动到系统路径,以便在任意位置运行
sudo mv etcd etcdctl /usr/local/bin/

验证安装:运行 etcd --version 来检查安装是否成功。

通过包管理器安装

你也可以通过 Ubuntu 的包管理器安装,但仓库中的版本可能不是最新的。命令如下:

sudo apt update
sudo apt install etcd-server etcd-client

安装后,etcd 服务通常会自动启动,你可以使用 sudo systemctl status etcd 来查看服务状态。

从源码编译安装

如果你想尝试最新特性或进行开发,可以从源码编译安装。这需要你的系统已安装 Go 语言环境(etcd 使用 Go 编写)。具体步骤请参考 etcd 官方文档。

运行 etcd

启动 etcd 服务
完成安装后,你可以在终端直接启动 etcd 服务,或者设置开机自动启动:

sudo systemctl start etcd
#开机启动
sudo systemctl enable etcd

服务启动后,默认会在 2379 端口监听客户端请求,并在 2380 端口处理集群中节点间的通讯

使用 etcdctl 进行基本操作

基础操作

  1. 设置键值对

    etcdctl put <key> <value># 示例:存储一个名为 "name" 的键,值为 "etcd"etcdctl put name "etcd"
  2. 获取键值

    # 获取单个键
    etcdctl get <key># 示例:获取 "name" 的值etcdctl get name# 获取键的详细信息(包括版本、创建时间等)etcdctl get <key> -w json  # 或 -w fields# 范围查询(匹配前缀)etcdctl get <prefix> --prefix# 示例:获取所有以 "user_" 开头的键etcdctl get user_ --prefix
  3. 删除键

    # 删除单个键
    etcdctl del <key># 示例:删除 "name"etcdctl del name# 删除前缀匹配的键etcdctl del <prefix> --prefix

集群管理

  1. 查看集群成员

    etcdctl member list
  2. 添加集群成员

    etcdctl member add <成员名> --peer-urls=<成员的P2P通信地址># 示例etcdctl member add etcd2 --peer-urls=http://192.168.1.2:2380
  3. 移除集群成员

    etcdctl member remove <成员ID>  # 成员ID可通过 member list 获取
  4. 查看集群健康状态

    etcdctl endpoint health
  5. 查看集群状态

    etcdctl endpoint status -w table  # 表格形式展示

版本控制与历史

  1. 查看键的历史版本

    etcdctl get <key> --rev=<版本号># 示例:查看 "name" 在版本 3 时的值etcdctl get name --rev=3
  2. 获取键的所有历史版本

    etcdctl history <key>

⚙️ 生产环境注意事项

对于生产环境,单节点部署通常不够,建议部署多节点的 etcd 集群以实现高可用。

数据持久化:确保 etcd 的数据目录存储在持久化存储上,并考虑定期备份快照。

安全配置:为集群通信和客户端连接配置 TLS 加密和认证。

性能调优:根据工作负载调整心跳间隔、选举超时等参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于MATLAB的光学CCD全息成像仿真程序实现

基于MATLAB的光学CCD全息成像仿真程序实现一、流程 graph TD A[物光生成] --> B[参考光干涉] B --> C[全息图记录] C --> D[CCD光电转换] D --> E[电荷转移] E --> F[噪声注入] F --> G[信号重建]二…

el-date-picker样式修改

el-date-picker样式修改模板<el-col :span="12"><div class="detail-row flex-row"><span class="detail-label"><span style="color: red;margin-right: 4p…

我从哪里起飞 从哪里降落 多少不能原谅的错 却不能重来过

10.27 CF1988F Heartbeat P10440 [JOIST 2024] 环岛旅行 / Island Hopping P10439 [JOIST 2024] 逃生路线 2 / Escape Route 2

unity管理器设计:Manager of Managers

一、管理器Manager Manager管理器是对一类对象进行统一管理,像是UIManager,AudioManager,InputManager等。 UIManager对UI的生命周期进行统一管理,AudioManager对音频的播放进行统一管理,InputManager对玩家的输入…

iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。

iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。--------------------------------------------- 生活的意义就是你自己知道你要做什么,明确目标。没有…

决策不再凭感觉!Tita用数据驱动销售与交付的一体化协同

在当今激烈的市场竞争中,企业高层管理者们正面临一个普遍而棘手的难题:销售目标设定明确,但执行过程却总是脱节;客户信息散落在各个销售人员的Excel表和笔记本中,难以形成有效的客户洞察;销售过程缺乏透明化管控…

浅谈 Agent 开发工具链演进历程

模型带来了意识和自主性,但在输出结果的确定性和一致性上降低了。无论是基础大模型厂商,还是提供开发工具链和运行保障的厂家,本质都是希望提升输出的可靠性,只是不同的团队基因和行业判断,提供了不同的实现路径。…

为IvorySQL增添PACKAGE语法帮助

认识语法帮助 当使用psql工具登录数据库时,\h command可以查看语法帮助。比如查看create database语法: psql (17.6) Type "help" for help.ivorysql=# \h create database Command: CREATE DATABASE …

MATLAB 时间序列小波周期分析

1. 文件结构 WaveletPeriod/ ├── main_wavelet_period.m % 一键运行 ├── wavelet_power_spectrum.m % 小波功率谱 + 显著性 ├── period_peak_detect.m % 自动周期峰值 ├── plot_wavelet_results.m …

# 情绪日历应用(python AI项目)

📖 项目简介 这是一个基于人脸情绪识别的智能日历应用,能够:📅 记录你每天的情绪状态 😊 自动识别照片中的情绪 💬 提供情绪陪伴聊天 📊 统计月度情绪变化🏗️ 代码结构详解 1. 导入模块部分 - 程序的&q…

读《程序员修炼之道:从小工到专家》

读《程序员修炼之道》,仍被书中 “务实的程序员” 理念戳中。它没教复杂算法,却把成长拆成可落地的日常:像 “ DRY 原则” 让我改掉重复写工具类的习惯,“不要重复发明轮子” 提醒我先调研再动手,而 “持续学习”…

本地运行nginx服务,模拟线上环境访问项目

一、了解nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。 Nginx也是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行…

git提交远程项目步骤

git提交远程项目步骤一个比较复杂的情况 远程已经有了代码的前提下,我复制一份到本地修改,然后再提交到原仓库 分两种情况,一种是想全部覆盖远程的代码,另一种是只是在原代码基础上做了一些修改,只需要提交一下p…

基于Redis海量数据场景分布式ID生成实践

概述 在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决…

电梯调度算法结对编程作业

1、项目仓库地址:https://z.gitee.cn/zgca/repos/zgca/elevator_arrange/sources 2、项目简介 3、PSP表格 4、接口设计介绍 5、模块接口的设计与实现过程 6、结对编程过程中的问题总结 7、界面模块的详细设计过程 8、…

【完结22章】从0到1,LangChain+RAG全链路实战AI知识库

【完结22章】从0到1,LangChain+RAG全链路实战AI知识库 学习地址:……/s/1hIjOa9HEwE-81qiVg6TUyA 提取码:qe8c 在信息爆炸的时代,企业积累的文档、报告、代码和各类数据资产正以前所未有的速度增长。传统的知识管理…

分享精选文章合集 - 2025-10-27

分享精选文章合集 - 2025-10-27汇总2025-10-27的精品精选求职与招聘文章。大家好,我是jobleap.cn的小九。 今日热门信息 - jobleap4u.com 内容概览:共 100 篇内容(按发布时间倒序排列,数据源自提供的ArticleCollec…

20232416 2025-2026-1 《网络与系统攻防技术》实验三实验报告

20232416 2025-2026-1 《网络与系统攻防技术》实验三实验报告 1.实验内容 (1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成jar、php等文件 veil,加壳…

2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读

引言 随着工业领域对搅拌设备精细化、高效化需求的不断提升,搅拌器、侧入式、斜插式、卧式等各类搅拌设备的市场关注度持续攀升。为帮助企业精准筛选优质设备厂家,通用机械工业协会搅拌设备分会联合第三方检测机构,…

芯片实现路线图

在集成电路(IC)设计中,“物理实现”是将抽象的逻辑设计落地为可生产布局(Layout)的关键阶段,其中包含floor-planning(布局规划)、placement(布局布置)、routing(布线)与physical verification(物理验证)…