Etcd 基本入门
1:什么是 Etcd ?
Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于 Go 语言实现。
名字由来,它源于两个方面,unix的“/etc”文件夹和分布式系统(“D”istribute system)的D,组合在一起表示etcd是用于存储分布式配置的信息存储服务。
2:Kubernetes 为什么用 Etcd ?
2014年6月,Google的Kubernetes项目诞生了,我们前面所讨论到Go语言编写、etcd高可用、Watch机制、CAS、TTL等特性正是Kubernetes所需要的,它早期的0.4版本,使用的正是etcd v0.2版本。
Kubernetes是如何使用etcd v2这些特性的呢?举几个简单小例子。
当你使用Kubernetes声明式API部署服务的时候,Kubernetes的控制器通过etcd Watch机制,会实时监听资源变化事件,对比实际状态与期望状态是否一致,并采取协调动作使其一致。Kubernetes更新数据的时候,通过CAS机制保证并发场景下的原子更新,并通过对key设置TTL来存储Event事件,提升Kubernetes集群的可观测性,基于TTL特性,Event事件key到期后可自动删除。
Kubernetes项目使用etcd,除了技术因素也与当时的商业竞争有关。CoreOS是Kubernetes容器生态圈的核心成员之一。
3:Etcd的主要特点和用途包括
Etcd是一个分布式键值存储系统,通常用于在分布式系统中存储配置数据、元数据和状态信息。它是由CoreOS开发的,基于Raft一致性算法实现了高可用性和一致性。Etcd最初是为了支持CoreOS的容器集群管理工具而开发的,但后来被许多其他项目广泛使用,包括Kubernetes等。
Etcd的主要特点和用途包括:
-
一致性保证:Etcd使用Raft一致性算法来确保数据的一致性和可靠性。在Etcd集群中,数据的读写操作都将遵循一致性和持久性要求,从而确保系统的可靠性。
-
高可用性:Etcd支持数据的复制和故障转移,即使某个节点发生故障,集群仍然能够继续工作并保持数据的可用性。
-
分布式锁:Etcd提供了分布式锁的支持,可以用于在分布式系统中协调资源的访问,避免竞争条件和数据冲突。
-
服务发现:在微服务架构中,Etcd可以用作服务发现的后端存储。服务实例可以注册到Etcd中,并通过查询Etcd来发现其他服务的位置和状态。
-
配置管理:Etcd可以用于存储系统的配置信息,例如网络配置、服务发现、权限控制等,使得系统可以动态地管理和调整配置,而不需要硬编码在应用程序中。
总的来说,Etcd提供了一个可靠、高性能的分布式存储解决方案,用于解决分布式系统中的配置管理、服务发现、一致性保证和分布式锁等问题
4:raft共识算法的选举机制
在 etcd 中,领导者节点的选举是通过 Raft 共识算法来完成的。Raft 算法定义了一套机制,确保在集群中只有一个领导者,其他节点都是跟随者或候选人。
Raft 算法的选举过程包括以下几个步骤:
选举超时(Election Timeout):每个节点在随机的时间间隔内设置一个选举超时计时器。一旦计时器超时,节点就会认为当前没有领导者,于是开始新一轮的选举。
成为候选人(Becoming a Candidate):当节点的选举超时计时器触发时,节点会变成候选人,并向其他节点发送请求投票的消息。
请求投票(Request Votes):候选人节点向其他节点发送请求投票的消息,包括候选人的任期号等信息。其他节点收到请求后,会判断是否投票给该候选人。
投票过程(Voting Process):节点在收到请求投票消息后,会进行投票。如果节点尚未投票给其他候选人,并且候选人的任期号大于自己的任期号,则会投票给候选人,并重置自己的选举超时计时器。
获得多数投票(Winning the Election):如果候选人收到了超过半数节点的投票,那么它就会成为新的领导者。在成为领导者后,它会发送心跳消息来维持自己的领导地位,并开始接收客户端请求并将其复制到其他节点。
维持领导地位(Maintaining Leadership):一旦成为领导者,节点会周期性地发送心跳消息给其他节点,以维持自己的领导地位。如果其他节点在一定时间内未收到领导者的心跳消息,它们会认为当前领导者已失效,从而开始新一轮的选举过程。
总的来说,Raft 算法通过定时的选举过程来确保集群中只有一个领导者,从而保证系统的一致性和可靠性。选举过程中节点的状态转换和投票过程都是根据 Raft 算法的规则来执行的,以确保选举的正确性和可靠性。
5:基本入门
5.1:github地址
GitHub:https://github.com/etcd-io/etcd
5.2:下载
etcd支持 linux,mac和docker环境的安装下载,windows稍微麻烦点,需要二进制文件
Releases · etcd-io/etcd (github.com)

5.2:以windows按照为例
下载二进制文件

本地解压

为了方便使用 etcd,你可以将 etcd 的二进制文件所在目录添加到系统的 PATH 环境变量中。这样,你就可以在命令行中直接使用 etcd 和 etcdctl 命令。
启动
点击etcd.exe文件

安装完成后,会得到 2 个脚本:
etcd:etcd 服务本身
etcdctl:客户端,用于操作 etcd,比如读写数据
执行 etcd 脚本就可以启动服务了,服务默认占用 2379 和 2380 端口,作用分别如下:
2379:提供 HTTP API 服务,和 etcdctl 交互
2380:集群中节点间通讯
启动日志显示2379标识启动成功

验证启动结果
执行
etcdctl.exe --endpoints=localhost:2379 endpoint health
返回标识启动成功
localhost:2379 is healthy: successfully committed proposal: took = 27.4106ms
插入和查询数据
插入
etcdctl.exe --endpoints=localhost:2379 put wkn 1

查询
etcdctl.exe --endpoints=localhost:2379 get wkn

5.3:etcd可视化工具
Etcd 的可视化工具推荐 etcdkeeper
地址:https://github.com/evildecay/etcdkeeper

![]()
启动成功在浏览器输入
http://127.0.0.1:8080/etcdkeeper/

相关文章:
Etcd 基本入门
1:什么是 Etcd ? Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于 Go 语言实现。 名字由来,它源于两个方面,…...
PPT没保存怎么恢复?3个方法(更新版)!
“我刚做完一个PPT,正准备保存的时候电脑没电自动关机了,打开电脑后才发现我的PPT没保存。这可怎么办?还有机会恢复吗?” 在日常办公和学习中,PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…...
DBeaver修改sql语句保存位置
1、dbeaver通过工作空间方式来管理Script的sql脚本以及数据库连接。 工作空间,其实也就是一个文件夹 默认保存路径查看: 文件--> 切换工作空间 --> 其他 sql脚本的保存位置默认在工作空间下的 \General\Scripts 文件夹中。 2、 3、点击浏览&#…...
LabVIEW2024中文版软件安装包、工具包、安装教程下载
下载链接:LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2024安装图文教程》 1、解压后,双击install.exe安装 2、选中“我接受上述许可协议”,点击下一步 3、点击下一步,安装NI Package …...
对AOP的理解
目录 一、为何需要AOP?1、从实际需求出发2、现有的技术能解决吗?3、AOP可以解决 二、如何实现AOP?1、基本使用2、更推荐的做法2.1 “基本使用”存在的隐患2.2 最佳实践2.2.1 参考Transactional(通过AOP实现事务管理)2.…...
C 指针数组
C 指针数组是一个数组,其中的每个元素都是指向某种数据类型的指针。 指针数组存储了一组指针,每个指针可以指向不同的数据对象。 指针数组通常用于处理多个数据对象,例如字符串数组或其他复杂数据结构的数组。 让我们来看一个实例…...
算法系列--动态规划--背包问题(1)--01背包详解
💕"趁着年轻,做一些比较cool的事情"💕 作者:Mylvzi 文章主要内容:算法系列–动态规划–背包问题(1)–01背包详解 大家好,今天为大家带来的是算法系列--动态规划--背包问题(1)--01背包详解 一.什么是背包问题 背包问题…...
【KB】通过Karabiner-Elements实现 optionTAB与 commandTAB 对调/映射 win 的 altTAB 习惯
学习Karabiner-Elements的第一个 demo,因为推荐的例子中过多参数,这是一个简化版。 需求:对调 optionTAB与 commandTAB,然后安装 altTAB 软件,恢复win切换任务的使用习惯。 {"description": "Change ta…...
nvm node包管理工具
下载地址:版本 1.1.9 CoreyButler/NVM-Windows (github.com) 使用nvm -v 检查安装是否成功。 常用命令 # 安装nodjs版本 nvm install 10.16.3nvm install 14.15.4# 切换,使用nodejs nvm use 10.16.3 ## nvm use 报错,1).使用管理员打开…...
程序员如何兼职赚小钱?
程序员由于有技术和手艺其实兼职赚钱的路子还是挺多的,只要你有足够的时间。 1. 做外包 这是比较传统的方式,甲方在一些众包平台上发布开发任务,你可以抢这个任务,但是价格都比较便宜。 任务比较多的平台: 猪八戒、一品威客、开…...
奥比中光深度相机(一):环境配置
文章目录 奥比中光深度相机(一):环境配置简介电脑环境SDK配置步骤安装环境依赖填写路径,点击Configure选择Visual studio点击Generate完成基于Python的SDK配置方法一:使用Cmake直接打开方法二:通过源文件打…...
API网关-Apisix路由配置教程(数据编辑器方式)
文章目录 前言一、端口修改1. apisix 端口修改2. dashboard 端口修改3. 登录密码修改 二、常用插件介绍1. 常用转换插件1.1 proxy-rewrite插件1.1.1 属性字段1.1.2 配置示例 2. 常用认证插件2.1 key-auth插件2.1.1 消费者端字段2.1.2 路由端字段2.1.3 配置示例 2.2 basic-auth插…...
Transformer的前世今生 day10(Transformer编码器
前情提要 ResNet(残差网络) 由于我们加更多层,更复杂的模型并不总会改进精度,可能会让模型与真实值越来越远,如下: 我们想要实现,加上一个层把并不会让模型变复杂,即没有它也没关系…...
【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)
🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今日主菜:模板 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 总有光环在陨落,总有新星在…...
力扣1----10(更新)
1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按…...
[Qt] QString::fromLocal8Bit 的使用误区
QString::fromLocal8Bit 是一个平台相关的函数。默认情况下在 Windows 下 就是 gbk 转 utf-8 ,在 Linux就应该是无事发生。因为Linux平台默认的编码方式就是 utf-8 可以通过 void QTextCodec::setCodecForLocale(QTextCodec *c)来修改 Qt默认的编码方式。如下 第一输出乱码的…...
什么是RabbitMQ的死信队列
RabbitMQ的死信队列(Dead Letter Queue,简称DLQ)是一种用于处理消息失败或无法路由的消息的机制。它允许将无法被正常消费的消息重新路由到另一个队列,以便稍后进行进一步处理、分析或排查问题。 当消息对立里面的消息出现以下几…...
力扣面试150 删除有序数组中的重复项 双指针
Problem: 26. 删除有序数组中的重复项 思路 👩🏫 三叶题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public int removeDuplicates(int[] nums) {int j 0, n nums.length;for(int i 0;…...
政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(二)—— 深度神经网络
政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 概述 深度神经网络(Deep Neural Network…...
【链表】Leetcode 138. 随机链表的复制【中等】
随机链表的复制 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点…...
计算机组成原理实验避坑指南:存储器地址映射常见错误及解决方法
计算机组成原理实验避坑指南:存储器地址映射常见错误及解决方法 第一次在Proteus里搭建存储器系统时,看着密密麻麻的地址线和片选信号,我对着实验指导书发呆了半小时——明明按照图示连接了所有线路,可写入RAM的数据总是莫名其妙出…...
Python实战:从零构建基于腾讯混元大模型的智能客服系统
1. 为什么选择腾讯混元大模型做智能客服 最近两年大模型技术突飞猛进,但真正要把大模型落地到实际业务中,很多开发者都会遇到三个头疼的问题:第一是模型效果不稳定,第二是API调用复杂,第三是业务逻辑难集成。我在帮几…...
Apache Doris 存储与查询优化实战:从架构设计到性能调优的完整指南
1. Apache Doris 架构设计精要 第一次接触Apache Doris时,我被它简洁的架构设计惊艳到了。这个MPP架构的分析型数据库,用计算存储分离的设计思路,把复杂的大数据分析变得像查普通MySQL表一样简单。FE(Frontend)和BE&am…...
编译原理避坑指南:自顶向下语法分析的5个常见错误及解决方法
编译原理避坑指南:自顶向下语法分析的5个常见错误及解决方法 第一次接触自顶向下语法分析时,我盯着那个无限循环的递归文法整整三天没想明白——为什么明明按照教材步骤操作,程序却始终报错?直到助教指出我忽略了间接左递归的隐蔽…...
AI智能应用开发(Java)从起点到终点-面向对象
自定义对象Java中自定义对象的必要性就像我们之前用的Scanner 和Random 都是java里面已经写好的对象,直接拿来用就好了,不用再自己写一大串代码来实现键盘录入和随机数的需求,但是有些需求是java中没有定义和写好的,,但…...
macOS 环境下的 Fugu14 越狱实战:从环境配置到 Unc0ver 完美激活
1. 准备工作:搭建macOS越狱环境 在开始Fugu14越狱之前,我们需要确保macOS环境配置完善。我实测发现,很多新手卡在第一步环境搭建,其实只要按顺序完成这些准备,后面流程会顺利很多。 首先需要安装Python 3.8或更高版本…...
Phi-4-Reasoning-Vision入门指南:图文推理结果JSON结构与API对接说明
Phi-4-Reasoning-Vision入门指南:图文推理结果JSON结构与API对接说明 1. 工具概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双NVIDIA RTX 4090显卡环境优化。该工具严格遵循官方SYSTEM …...
企业高效知识体系:8大核心特征+可落地搭建框架,告别知识散乱
对于企业而言,知识从来不是“文件堆”,而是能支撑业务、培养新人、规避风险的核心资产。很多企业陷入“文档满天飞、新人没人带、老员工离职带跑经验”的困境,本质是没有搭建起高效、完整的知识体系。今天就一次性讲透:一个能真正…...
YimMenu安全增强指南:四阶法实现GTA V体验升级
YimMenu安全增强指南:四阶法实现GTA V体验升级 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...
Stable Diffusion VAE重构图像效果不理想?可能是你忘了调整这个关键参数
Stable Diffusion VAE图像重构效果优化指南:关键参数解析与实战调整 当你第一次使用Stable Diffusion的VAE(Variational Autoencoder)进行图像重构时,可能会遇到这样的困惑:明明按照教程一步步操作,为什么输…...
