写点什么

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:4519309
用户头像

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

关注

评论

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

遇到代码缺陷不要慌,马上教你快速检测和修复

华为云开发者联盟

代码 bug 缺陷检测 代码缺陷

即构小程序直播组件集成教程

ZEGO即构

特斯拉自建ERP的背后

明道云

古有诸葛亮八卦阵阻敌,今有iptables护网安

华为云开发者联盟

安全 防火墙 网络 iptables 数据包

『CDN』让你的网站访问起来更加柔顺丝滑

古时的风筝

CDN

自动量化搬砖套利交易机器人系统软件APP开发

系统开发

当音乐学博士搞起编程...

程序猿DD

Spring Frame

区块链科普系列:区块链是什么?

CECBC

区块链

架构师训练营W13作业

Geek_f06ede

为什么我认为 Deno 是一个迈向错误方向的 JavaScript 运行时?

hylerrix

typescript rust nodejs deno V8

敏捷里为何倡导固定迭代周期?

万事ONES

敏捷开发 研发管理 迭代

解决div里面img图片下方有空白的问题

德育处主任

CSS html html5 大前端 28天写作

来不及解释!Linux常用命令大全,先收藏再说

华为云开发者联盟

Linux 编程 命令行 命令

Volcano架构设计与原理介绍

华为云原生团队

大数据 AI 云原生 高性能 批量计算

不同公司产品经理岗位对比

LouisN

区块链十年与传统金融的变化

CECBC

区块链 金融

「产品经理训练营」第一章作业

Sòrγy_じò ぴé

产品经理训练营

架构师训练营第十三周作业

李日盛

PageRank

DevSecOps安全检查清单

啸天

安全 DevSecOps 应用安全

一文带你探究Sentinel的独特初始化

华为云开发者联盟

redis sentinel 框架

用AI「驯服」人类幼崽,手头有娃的可以试试

博文视点Broadview

人工智能 联邦学习 强化学习 集成学习 技术宅

“反垄断”来袭,对产业区块链有什么启发

CECBC

市场垄断

第十三周课后练习

晴空万里

架构师训练营第2期

Kubernetes概念篇:基本概念和术语

xcbeyond

Kubernetes 容器 pod 28天写作 Kubernetes从入门到精通

面试官:你真的了解Redis分布式锁吗?

鄙人薛某

redis 分布式锁 线程安全 RedLock

生产者与消费者模式,数组阻塞队列(ArrayBlockingQueue)

码农架构

Java 学习 架构 并发编程

同事试用期没过就被劝退,我比他还难受

熊斌

职场 成长笔记 28天写作 职场新人

一文解析DDD中台和微服务设计

欧创新

中台 微服务 领域驱动设计 DDD

关心群众生活,注意工作方法 Jan 15, 2021

王泰

28天写作

万字多图 | UML 入门指南

白色蜗牛

Java 程序员 后端 架构设计 UML

矿机挖矿APP系统模式开发平台

v16629866266

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