10 月 23 - 25 日,QCon 上海站即将召开,现在大会已开始正式报名,可以享受 8 折优惠 了解详情
写点什么

etcd:用于服务发现的键值存储系统

  • 2014-07-29
  • 本文字数:1107 字

    阅读完需:约 4 分钟

etcd 是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd 是由 CoreOS 开发并维护的,灵感来自于 ZooKeeper Doozer ,它使用 Go 语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。Raft 是一个来自 Stanford 的新的一致性算法,适用于分布式系统的日志复制,Raft 通过选举的方式来实现一致性,在 Raft 中,任何一个节点都可能成为 Leader。Google 的容器集群管理系统 Kubernetes、开源 PaaS 平台 Cloud Foundry 和 CoreOS 的 Fleet 都广泛使用了 etcd。

在分布式系统中,如何管理节点间的状态一直是一个难题,etcd 像是专门为集群环境的服务发现和注册而设计,它提供了数据 TTL 失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。etcd 目前的版本是 0.4.5,虽然未发布 1.0 版本(今年会发布),但其已经使用在多个生产系统中,可见其火热程度。etcd 的特性如下:

  • 简单: curl 可访问的用户的 API(HTTP+JSON)
  • 安全: 可选的 SSL 客户端证书认证
  • 快速: 单实例每秒 1000 次写操作
  • 可靠: 使用 Raft 保证一致性

etcd 是 CoreOS 的核心组件,负责节点间的服务发现和配置共享,运行在 CoreOS 中的应用可以通过 etcd 读取或者写入数据。虽然 etcd 是为 CoreOS 而设计,但其可以运行在多个平台上,包括 OS X、Linux、BSD。

Jason Wilder 的一篇博客对分别对常见的服务发现开源项目 Zookeeper、Doozer、etcd 进行了总结介绍:

Zookeeper 是一个用户维护配置信息、命名、分布式同步以及分组服务的集中式服务框架,它使用 Java 语言编写,通过 Zab 协议来保证节点的一致性。因为 Zookeeper 是一个 CP 型系统,所以当网络分区问题发生时,系统就不能注册或查找服务。

Doozer 是一个一致性的、分布式存储系统,使用 Go 语言编写,通过 Paxos 来保证强一致性,Doozer 项目目前已经停止更新并有将近 160 个分支。和 Zookeeper 一样,Doozer 也是一个 CP 型系统,在网络分区问题发生时,会有同样的问题。

etcd 是一个用于共享配置和服务发现的高可用的键值存储系统,使用 Go 语言编写,通过 Raft 来保证一致性,有基于 HTTP+JSON 的 API 接口。etcd 也是一个强一致性系统,但是 etcd似乎支持从 non-leaders 中读取数据以提高可用性;另外,写操作仍然需要 leader 的支持,所以在网络分区时,写操作仍可能失败。

目前有很多支持 etcd 的库和工具,比如命令行客户端工具 etcdctl 、Go 客户端 go-etcd 、Java 客户端 jetcd 。关于 etcd 的使用和安装读者可以参考官方文档

给InfoQ 中文站投稿或参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-07-29 02:4519646
用户头像

发布了 219 篇内容, 共 148.1 次阅读, 收获喜欢 195 次。

关注

评论

发布
暂无评论
发现更多内容

数字人民币预付式消费的监管之道,智能合约能不能解决所有问题?

CECBC

95后阿里P7晒出工资单:狠补了这些个技术栈,真的香啊

Java全栈架构师

Java 程序员 面试 架构师 Java面试题

数据库每日一题---第14天:用户推荐人

知心宝贝

数据库 云计算 前端 后端 6月月更

JVM调优简要思想及简单案例-JVM的内存区域大致划分

zarmnosaj

6月月更

转转统一权限系统的设计与实现(设计篇)

转转技术团队

权限系统 rbac

数据质量管理

奔向架构师

数据治理 数据管理 6月月更

linux之我常用的系统重要文件备份命令

入门小站

Linux

在线JSON转YAML工具

入门小站

工具

“多元化”通证经济模型:DAO的神经和血液

CECBC

Java的面试技术点

卢卡多多

Java 面试官 6月月更

DevStream 成为 CNCF Sandbox 项目啦!- 锣鼓喧天、鞭炮齐鸣、红旗招展、忘词了。

胡说云原生

开源 cncf DevStream

揭秘攻防演练中红队需要什么样的人才

穿过生命散发芬芳

6月月更 攻防演练

一款可以实现内网脱机分享文档的接口测试软件

Xd

Java 数据库 后端 API 接口测试软件

【愚公系列】2022年06月 通用职责分配原则(四)-高内聚原则

愚公搬代码

6月月更

官宣!Apache Doris 从 Apache 基金会毕业,正式成为 Apache 顶级项目!

SelectDB

Apache 数据库 apache doris

微服务如何拆分

阿泽🧸

微服务 6月月更

Docker 实用技巧一

Nick

Docker 容器 实用技巧 6月月更 实操

研究uni-app的第五天

恒山其若陋兮

6月月更

如何防止NFT行业被污名化?

CECBC

元宇宙来袭的五个趋势

CECBC

DAO模式的发展现状,M-DAO如何用技术实现领先

股市老人

再仿个人主页来看 GetX 和 Provider 之间的 PK

岛上码农

flutter ios 前端 安卓 6月月更

模块四作业

Elvis FAN

重磅升级,FinClip 2.0正式发布!

FinClip

时序数据库在卷烟厂中的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Java Core 「9」J.U.C 同步工具类-1

Samson

学习笔记 Java core 6月月更

V1签名校验

北洋

Andriod 6月月更

flutter系列之:查询设备信息的利器:MediaQuery

程序那些事

flutter 程序那些事 6月月更

在线文本列表空行过滤工具

入门小站

工具

etcd:用于服务发现的键值存储系统_DevOps & 平台工程_小盖_InfoQ精选文章