写点什么

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

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

关注

评论

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

架构实战营毕业总结

Geek_53787a

Redis 潜在问题

武师叔

8月月更

CSS 移动光标使文本产生多个反差色特效

南城FE

CSS css3 前端 动画

移动端四种热更新技术对比

Geek_99967b

小程序

StoneDB 读、写操作的执行过程

StoneDB

MySQL 数据库 大数据 #开源 8月月更

开源知识库与SaaS解决方案的区别

Geek_da0866

开源生态研究与实践| ChinaOSC

CCF开源发展委员会

系统入门-Linux系统基础命令

Albert Edison

Linux centos 指令 8月月更

备受资本市场关注的Zebec,正在构建“新DeFi”生态

小哈区块

多次拿下移动集团技术发明大奖,TA是怎么做到的?

鲸品堂

AI 资源

Hi,我是ChunJun,一个有趣好用的开源项目

袋鼠云数栈

超云

Kent Yao

超云 Supercloud

leetcode 239. Sliding Window Maximum 滑动窗口最大值

okokabcd

LeetCode 数据结构与算法 双端队列

RocketMQ高性能设计之动态缩扩容和消息实时投递

急需上岸的小谢

8月月更

开源一夏 |ModelScope--人像卡通化、人像美肤

六月的雨在InfoQ

开源 8月月更 ModelScope

什么是知识管理系统?如何改善客户体验?

Geek_da0866

中国开源先锋人物志 | ChinaOSC

CCF开源发展委员会

底层原理源码+面试场景还原,阿里巴巴多线程JDK源码学习笔记全网首次公开

程序员小毕

程序员 面试 多线程 高并发 jdk源码

【云原生】SpringCloud-Spring Boot Starter使用测试

java李杨勇

Java web SpringCloud Alibaba 签约计划第三季

知识管理体系在企业中的作用

Baklib

浅谈成功的企业知识管理

Baklib

因果决策从YLearn开始,数据智能基础软件迎“风口”

九章云极DataCanvas

人工智能 GitHub 数据智能 YLearn 工具包

基于JavaSpringMVC+vue实现协同过滤电影推荐系统详细设计

java李杨勇

Java spring Vue 3 签约计划第三季 协同过滤

【云原生】微服务SpringCloud-eureka(server)集群搭建

java李杨勇

Eureka spring-cloud 签约计划第三季

Github又爆神作!野生程序员自学SpringCloudAlibaba必备学习笔记开源(阿里2022最新版)

Java永远的神

Java 程序员 面试 微服务 SpringCloud

开源一夏 |分布式事务

六月的雨在InfoQ

开源 分布式事务 2PC 3PC 8月月更

开源中国专访 TJ:开源许可证,欢迎来到云时代

tapdata

Tapdata 开源社区

【云原生】SpringCloud是什么?

java李杨勇

Java spring-boot 签约计划第三季

李斯特:不同流派的产品创新方法及创新误区丨创新工作坊

RTE开发者社区

灵感宝盒 RTE NG-Lab

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