AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

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

关注

评论

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

Unity 关于低版本是否可以引用高版本构建内容的可行性验证

CoderZ

C# dll Unity3D 9月月更

通过Jenkins构建CI/CD实现全链路灰度

阿里巴巴中间件

阿里云 云原生 jenkins 全链路灰度

人工智能、机器学习和深度学习,到底有什么区别?

Finovy Cloud

人工智能 云计算 影视渲染

如何让百度搜索结果显示网站 logo

源字节1号

网站建设 网站开发

SpringBoot源码 | prepareEnvironment方法解析

六月的雨在InfoQ

源码 springboot 源码刨析 SpringBoot实战 9月月更

程序员成长那些事儿

图灵教育

程序员 进阶 代码 计算机

一文讲透B端和C端产品经理的区别

产品海豚湾

产品经理 SaaS 职业发展 B端产品 9月月更

程序员成长那些事儿

图灵社区

程序员 进阶 代码 计算机

「趣学前端」来逛逛数字博物馆

叶一一

小程序 前端 9月月更

构筑校园防线  “云资环”助力精准防控

神奇视野

给我一起学jdbc之sql注入

楠羽

JDBC 笔记 9月月更

每日一R「22」内存:堆与栈

Samson

学习笔记 ​Rust 9月月更

揭秘 · 机器人酒店

澳鹏Appen

人工智能 nlp 语音识别 数据标注 语音标注

英特尔oneAPI工具大幅提升腾讯云数据库MySQL的性能

科技之家

2022年中国新能源汽车用户体验指数(UEI)

易观分析

新能源汽车 UEI

C++学习------clocale头文件的源码学习

桑榆

c++ 源码阅读 9月月更

mysql存储引擎

急需上岸的小谢

9月月更

JAVA StreamAPI

流火

Stream API java 8 的新特性

SLO新解,一种行之有效的故障处理方法

华明

监控系统 SLO 稳定性保障

【译】像CSS一样在Flutter里应用滤镜效果

iofod jude

2022-09-07:给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。 例如,序列 [4,6,16] 的最大公约数是 2 。 数组的一个

福大大架构师每日一题

算法 rust 福大大

Linux云主机安全入侵排查步骤

京东科技开发者

Linux 安全 云主机 排查方法 云主机安全

极狐GitLab CI 月来袭!2小时 get CI 流水线设计秘籍

极狐GitLab

DevOps gitlab 运维 CI/CD 持续交付

Go vs Python,我该选哪一门语言?

宇宙之一粟

Python 编程语言 Go 语言 9月月更

面试突击81:什么是跨域问题?如何解决?

王磊

Java 面试

SD-WAN网络编排原理

阿泽🧸

9月月更 网络编排

云备份服务CBR

创意时空

概述大数据技术在智能运维中四大挑战

穿过生命散发芬芳

智能运维 9月月更

关于C语言结构体(struct),你不知道的用法?(初阶篇)

Albert Edison

指针 C语言 结构体 9月月更

一起玩转!SOFA 飞船 Layotto 星球登陆计划

SOFAStack

golang 微服务 云原生 新手指南 开源软件

「趣学前端」关于iframe跨域通信

叶一一

前端 iframe 跨域 9月月更

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