跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Etcd
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{Infobox software | name = etcd | logo = | developer = [[CoreOS]] (现为[[Red Hat]]所有) | released = {{Start date and age|2013|06}} | programming language = [[Go]] | operating system = 跨平台 | genre = [[分布式系统|分布式]][[键值存储]] | license = [[Apache许可证|Apache 2.0]] | website = {{URL|https://etcd.io}} }} '''etcd'''是一个高可用的分布式键值存储系统,主要用于共享配置和服务发现。它由[[CoreOS]]团队开发,使用[[Go]]语言编写,现已成为[[Kubernetes]]等分布式系统的核心组件。 == 特性 == etcd具有以下主要特性: * '''强一致性''':使用[[Raft共识算法]]保证数据一致性 * '''高可用性''':支持集群部署,自动处理节点故障 * '''简单API''':提供基于[[HTTP]]/[[gRPC]]的简洁API * '''观察者模式''':支持监听键值变化 * '''租约机制''':支持键值对自动过期 * '''多版本并发控制''':保持键值历史记录 == 架构 == etcd采用典型的分布式系统架构: <mermaid> graph TD Client1[客户端] -->|gRPC| etcd1[etcd节点1] Client2[客户端] -->|gRPC| etcd2[etcd节点2] Client3[客户端] -->|gRPC| etcd3[etcd节点3] etcd1 --> etcd2 etcd1 --> etcd3 etcd2 --> etcd1 etcd2 --> etcd3 etcd3 --> etcd1 etcd3 --> etcd2 </mermaid> == 安装与使用 == === 安装 === 在Linux系统上可以通过以下命令安装etcd: <syntaxhighlight lang="bash"> # 使用包管理器安装 sudo apt-get install etcd # Ubuntu/Debian sudo yum install etcd # CentOS/RHEL # 或者下载二进制文件 wget https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz tar xzvf etcd-v3.5.0-linux-amd64.tar.gz </syntaxhighlight> === 基本操作示例 === 使用etcdctl命令行工具操作etcd: <syntaxhighlight lang="bash"> # 设置键值 etcdctl put /message "Hello etcd" # 获取值 etcdctl get /message # 监听键变化 etcdctl watch /message # 设置带租约的键 etcdctl lease grant 60 # 创建60秒租约 etcdctl put --lease=1234abcd /temp "temporary data" </syntaxhighlight> == 应用场景 == etcd广泛应用于以下场景: * '''[[Kubernetes]]集群管理''':存储集群状态和配置 * '''服务发现''':微服务架构中的服务注册与发现 * '''分布式锁''':协调分布式系统中的并发访问 * '''配置中心''':集中管理分布式系统配置 * '''选举主节点''':在分布式系统中确定主节点 == 性能优化 == 为提高etcd性能,可考虑以下优化措施: * 合理设置心跳间隔和选举超时 * 使用SSD存储 * 控制键空间大小 * 批量写入操作 * 适当调整快照频率 == 与其他技术的比较 == {| class="wikitable" |- ! 特性 !! etcd !! [[ZooKeeper]] !! [[Consul]] |- | 一致性算法 || Raft || ZAB || Raft |- | 开发语言 || Go || Java || Go |- | 接口协议 || gRPC/HTTP || 自定义 || HTTP |- | 观察者模式 || 支持 || 支持 || 支持 |- | 服务发现 || 支持 || 支持 || 原生支持 |} == 参见 == * [[分布式系统]] * [[键值存储]] * [[Raft共识算法]] * [[Kubernetes]] * [[微服务]] == 参考资料 == * 官方文档:{{URL|https://etcd.io/docs/}} * GitHub仓库:{{URL|https://github.com/etcd-io/etcd}} [[Category:分布式系统]] [[Category:键值存储]] [[Category:Go语言项目]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Infobox
(
编辑
)
模板:Infobox software
(
编辑
)
模板:Infobox software/simple
(
编辑
)
模板:MONTHNAME
(
编辑
)
模板:MONTHNUMBER
(
编辑
)
模板:Main other
(
编辑
)
模板:Plainlist
(
编辑
)
模板:Plainlist/styles.css
(
编辑
)
模板:Start date and age
(
编辑
)
模板:Template link expanded
(
编辑
)
模板:Template other
(
编辑
)
模板:Tlx
(
编辑
)
模板:Trim
(
编辑
)
模板:URL
(
编辑
)
模板:Wikidata
(
编辑
)
模板:Years or months ago
(
编辑
)
模板:Yesno
(
编辑
)
模块:Arguments
(
编辑
)
模块:Check for unknown parameters
(
编辑
)
模块:Infobox
(
编辑
)
模块:Infobox/styles.css
(
编辑
)
模块:InfoboxImage
(
编辑
)
模块:Template link general
(
编辑
)
模块:URL
(
编辑
)
模块:Wd
(
编辑
)