免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

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

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

关注

评论

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

手把手带你通过API创建一个loT边缘应用

华为云开发者联盟

IoT 边缘计算 华为云 华为云开发者联盟 企业号 4 月 PK 榜

sync.WaitGroup:掌握并发编程中的重要工具

Jack

尚硅谷新版Git视频教程发布

小谷哥

软件测试/测试开发丨录制你的第一个web 自动化测试用例

测试人

软件测试 自动化测试 测试开发 Web自动化测试

FastAPI 开发中数据校验利器 Pydantic 介绍与集成使用

宇宙之一粟

Python 后端 FastApi Pydantic

Flink Table Store 独立孵化启动 , Apache Paimon 诞生

Openlab_cosmoplat

大数据 开源

使用验证码拦截爬虫和机器人实践分享

宙哈哈

php html 爬虫 机器人

「刷起来」Go必看的进阶面试题详解

王中阳Go

golang 高效工作 学习方法 面试题 Go 语言

WebAssembly 助力云原生:APISIX 如何借助 Wasm 插件实现扩展功能?

API7.ai 技术团队

api 网关 APISIX Wasm

软件测试/测试开发丨测试步骤代码修改,用 Yaml实现数据驱动

测试人

软件测试 自动化测试 yaml 测试开发 UI自动化测试

[验证码] KgCaptcha风险监测方法

宙哈哈

php html

景顺长城基于 Apache APISIX 在金融云原生的生产实践

API7.ai 技术团队

api 网关 APISIX 金融业务

上网买个东西,居然需要那么多业务系统支撑!

产品海豚湾

SaaS 电商 供应链 电商平台 wms

通过 NFTScan 追踪 NFT 钻石手持仓

NFT Research

NFT NFTScan

数据库原理及MySQL应用 | 事件

TiAmo

MySQL 数据库 事件

学了这么久的高并发编程,连Java中的并发原子类都不知道?

华为云开发者联盟

Java 开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜

PCB拼板,不得不注意的10个问题!

华秋PCB

电路 PCB PCB设计 拼版 邮票孔

助力企业数字化转型,「一体化」或是最佳实践路径

ToB行业头条

KgCaptcha接入汇总

宙哈哈

Java php Python C# html

DataLeap数据资产实战:如何实现存储优化?

字节跳动数据平台

MySQL 数据库 大数据 数据治理 数据存储

Visual Studio Code for Mac(好用的微软代码编辑器)中文版

Rose

为什么ChatGPT不是中国搞出来的?

慕枫技术笔记

人工智能 后端 4月月更

流媒体数字版权应用实践

Marvin Ma

数字版权 流媒体

聚焦用户精细化运营场景,极客邦科技与火山引擎数智平台达成合作

字节跳动数据平台

用户增长 数字化 用户运营 数字化案例 企业号 4 月 PK 榜

一文读懂华为云云原生产品及开源实践

华为云开发者联盟

开源 云原生 华为云 华为云开发者联盟 企业号 4 月 PK 榜

GaussDB(DWS)网络调度与隔离管控能力

华为云开发者联盟

数据库 大数据 华为云 华为云开发者联盟 企业号 4 月 PK 榜

从零学习SDK(1)什么是SDK,为什么要使用它

MobTech袤博科技

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