`
weitao1026
  • 浏览: 979978 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

分布式配置服务etcd VS 分布式协调服务zookeeper

 
阅读更多

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

etcd 集群的工作原理基于 raft 共识算法 (The Raft Consensus Algorithm)。etcd 在 0.5.0 版本中重新实现了 raft 算法,而非像之前那样依赖于第三方库 go-raft 。raft 共识算法的优点在于可以在高效的解决分布式系统中各个节点日志内容一致性问题的同时,也使得集群具备一定的容错能力。即使集群中出现部分节点故障、网络故障等问题,仍可保证其余大多数节点正确的步进。甚至当更多的节点(一般来说超过集群节点总数的一半)出现故障而导致集群不可用时,依然可以保证节点中的数据不会出现错误的结果。

 

背景

coreOS中使用了etcd作为集群配置服务,拥有众多出色的特点,etcd是一个key,value的数据服务器,单实例可达每秒 1000 次写操作,以及方便的REST接口。 zookeeper则是在Hadoop中大放光彩的分布式协调服务,提供了分布式锁,数据同步,等服务。

从功能上看,二者都可以很好的完成集群中分布式中遇到的同步,配置问题,但是不可否认,这2种服务在设计的时候的目的不同,也让这2中服务有着不小的差异。

etcd

目的: 一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现

接口: REST接口(HTTP+JSON)方便集群中每一个主机访问

功能: 提供了key,value存储服务,集群队列同步服务,观察一个key的数值变化,以及查询历史key值信息等

分布式协议: Raft一致性协议。提供强一致性保证

部署形态: 采用小集群(etcd server节点组成一个集群)+大集群(其它节点来直接使用服务)的形式,集群可以达到上千节点

实现语言: go 拥有几乎不输于C的效率,特别是go语言本身就是面向多线程,进程通信的语言。在小规模集群中性能非常突出

zookeeper

目的: 高有效和可靠的协同工作系统

接口: 基于TCP的自协议,需要安装相应客户端程序

功能: 提供了key,value存储服务,集群中简历临时节点,观察key值变化等

分布式协议: 集运Paxos一致性协议,改进的Zab协议。提供强一致性保证

部署形态: 采用小集群(zookeeper server节点组成一个集群)+大集群(其它节点来直接使用服务)的形式,集群可以达到上千节点

实现语言: java,实现代码量要多于go,在小规模集群中性能一般,但是在大规模情况下,使用对多线程的优化后,也和go相差不大

总结:

可以看到因为设计思路的不同,在原生接口和提供服务方式方面,etcd更适合作为集群配置服务器,用来存储集群中的大量数据。方便的REST接口也可以让集群中的任意一个节点在使用key value服务时获取方便。zookeeper则更加的适合于提供分布式协调服务,他在实现分布式锁模型方面较etcd要简单的多。所以在实际使用中应该根据自身使用情况来选择相应的服务。

 

 

分享到:
评论

相关推荐

    04分布式协调服务器Zookeeper.pdf

    应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于 Paxos 算法的 ZAB 协议完成的。其主要功能包括:配置维护、域名服务、分布式同步、集群管理等。 zookeeper 的官网: ...

    分布式系统基石-etcd.pdf

    etcd 是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd 是由 CoreOS 开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用 Go 语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。

    分布式桥梁ZooKeeper开发体验

    再到接触分布式协调框架ZooKeeper,通过痛苦的思维逻辑和理念转变,历经一个月时间,小伙伴们终于把ZooKeeper嵌入到了BoCloud博云的BeyondContainer中,并在其上进行相应功能的开发:服务注册与发现、集群管理、模块...

    etcd-v3.3.10-linux-amd64.tar.zip

    etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的...

    java8集合源码-product1:产品1

    分布式协调服务 Consul 分布式协调服务 Eureka 服务发现 Dubbo 分布式服务治理 Etcd Nginx Kong Apollo Nacos ELK ​ Elasticsearch 实时搜索框架 ​ Logstash 日志流处理 ​ Kibana 数据渲染展示 K8s kubernetes ...

    Patroni是一个使用ZooKeeper,etcd或Consul的PostgreSQL高可用性模板-python

    Patroni 是一个模板,您可以使用 Python 创建自己的定制化、高可用性解决方案,并且为了最大程度的可访问性,分布式配置存储(如 ZooKeeper、etcd 或 Consul)。 希望在数据中心或其他任何地方快速部署 HA ...

    etcd-v3.3.8-linux

    etcd-v3.3.8-linux etcd是一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现。etcd与zookeeper相比算是轻量级系统,两者的一致性协议也一样,etcd的raft比zookeeper的paxos简单

    带有Etcd,Consul,ZooKeeper或Kubernetes的PostgreSQL高可用性模板-Python开发

    Patroni:具有ZooKeeper,etcd或Consul的PostgreSQL HA...Patroni是一个模板,您可以使用Python创建模板,并使用最大的可访问性来创建自己的定制的高可用性解决方案-分布式配置存储,例如ZooKeeper,etcd,Consul或Kub

    dister是一款轻量级高性能的分布式集群管理软件,实现了分布式软件架构中的常用核心组件

    dister(Distribution Cluster)是一款轻量级高性能的分布式集群管理软件,实现了分布式软件架构中的常用核心组件,包括:服务配置管理中心、服务注册与发现、服务健康检查、服务负载均衡。dister的灵感来源于...

    etcd(KeyValue存储系统)v3.3.13

    etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。etcd 的灵感来自于 ZooKeeper 和 Doozer,侧重于: 简单:支持 curl 方式的用户 API (HTTP JSON) 安全:可选 SSL 客户端证书认证 快速...

    iit-distributed-system:using使用Java和RPC的分布式系统实验室

    zookeeper-集中式服务器,用于服务的分布式协调 etcd-将etcd用作简单的名称服务,该服务允许服务注册服务的地址详细信息,并让使用者发现服务的位置。 gRPC 生成服务器存根 我们生成的服务器存根是grpc代码,我们...

    etcd v3.4.3

    etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。etcd 的灵感来自于 ZooKeeper 和 Doozer,侧重于:简单:支持 curl 方式的用户 API (HTTP+JSON)安全:可选 SSL 客户端证书认证快速:单实例可...

    etcd-v2.0.5-linux-amd64

    类似zookeeper的分布式事务中间件,与zk(paxos)不同的使用了更实用的Raft算法解决分布式一致性问题。自动发现功能在云计算中非常实用。 aws被墙特收金币一枚

    consul 商品服务部分代码示例

    consul用于微服务下的服务治理,主要特点有:服务发现、服务配置、健康检查、键值存储、安全服务通信、多数据中心等。 什么叫服务治理发现?起初我们的服务比较单一,各服务之间通过接口就能访问。后面服务越来越...

    dbtester:分布式数据库基准测试器

    分布式数据库基准测试仪:etcd,Zookeeper,Consul,zetcd,cetcd 它包括github.com/golang/freetype,它部分基于FreeType团队的工作。 绩效分析 最新的测试结果可以在找到 探索etcd,Zookeeper和Consul一致键值...

    consul 中文开发指南

    Consul 是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 ...

    etcd分布式存储系统-其他

    etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现。etcd 的灵感来自于 ZooKeeper 和 Doozer,侧重于:简单:支持 curl 方式的用户 API (HTTP+JSON)安全:可选 SSL 客户端证书认证快速:单实例可...

    Patroni-2.0.0说明书.md

    Patroni(中文:守护神)是一个模板,您可以使用Python创建模板,并使用最大的可访问性来创建自己的定制的高可用性解决方案,该分布式配置商店如ZooKeeper,etcd,Consul或Kubernetes。希望在数据中心或其他任何地方...

    Docker搭建etcd集群

    集群搭建3.API操作4.API说明和etcdctl命令说明etcd是CoreOS团队发起的一个开源项目(Go语言,其实很多这类项目都是Go语言实现的,只能说很强大),实现了分布式键值存储和服务发现,etcd和ZooKeeper/Consul非常相似...

Global site tag (gtag.js) - Google Analytics