`
yixibo
  • 浏览: 184305 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

服务注册中心比较Consul vs Zookeeper vs Etcd vs Eureka

阅读更多

分布式领域CAP理论,
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

原文链接地址:http://luyiisme.github.io/2017/04/22/spring-cloud-service-discovery-products/

这里就平时经常用到的服务发现的产品进行下特性的对比,首先看下结论:

Feature Consul zookeeper etcd euerka
服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 可配支持
多数据中心 支持
kv存储服务 支持 支持 支持
一致性 raft paxos raft
cap ca cp cp ap
使用接口(多语言能力) 支持http和dns 客户端 http/grpc http(sidecar)
watch支持 全量/支持long polling 支持 支持 long polling 支持 long polling/大部分增量
自身监控 metrics metrics metrics
安全 acl /https acl https支持(弱)
spring cloud集成 已支持 已支持 已支持 已支持
  • 服务的健康检查

Euraka 使用时需要显式配置健康检查支持;Zookeeper,Etcd 则在失去了和服务进程的连接情况下任务不健康,而 Consul 相对更为详细点,比如内存是否已使用了90%,文件系统的空间是不是快不足了。

  • 多数据中心支持

Consul 通过 WAN 的 Gossip 协议,完成跨数据中心的同步;而且其他的产品则需要额外的开发工作来实现;

  • KV 存储服务

除了 Eureka ,其他几款都能够对外支持 k-v 的存储服务,所以后面会讲到这几款产品追求高一致性的重要原因。而提供存储服务,也能够较好的转化为动态配置服务哦。

  • 产品设计中 CAP 理论的取舍

Eureka 典型的 AP,作为分布式场景下的服务发现的产品较为合适,服务发现场景的可用性优先级较高,一致性并不是特别致命。其次 CA 类型的场景 Consul,也能提供较高的可用性,并能 k-v store 服务保证一致性。 而Zookeeper,Etcd则是CP类型 牺牲可用性,在服务发现场景并没太大优势;

  • 多语言能力与对外提供服务的接入协议

Zookeeper的跨语言支持较弱,其他几款支持 http11 提供接入的可能。Euraka 一般通过 sidecar的方式提供多语言客户端的接入支持。Etcd 还提供了Grpc的支持。 Consul除了标准的Rest服务api,还提供了DNS的支持。

  • Watch的支持(客户端观察到服务提供者变化)

Zookeeper 支持服务器端推送变化,Eureka 2.0(正在开发中)也计划支持。 Eureka 1,Consul,Etcd则都通过长轮询的方式来实现变化的感知;

  • 自身集群的监控

除了 Zookeeper ,其他几款都默认支持 metrics,运维者可以搜集并报警这些度量信息达到监控目的;

  • 安全

Consul,Zookeeper 支持ACL,另外 Consul,Etcd 支持安全通道https.

  • Spring Cloud的集成

目前都有相对应的 boot starter,提供了集成能力。

总的来看,目前Consul 自身功能,和 spring cloud 对其集成的支持都相对较为完善,而且运维的复杂度较为简单(没有详细列出讨论),Eureka 设计上比较符合场景,但还需持续的完善。

 

 

分享到:
评论

相关推荐

    consul_1.11.2_windows_amd64.zip

    在 Spring Cloud 体系中,几乎每个角色都会有两个以上的产品提供选择,比如在注册中心有:Eureka、Consul、zookeeper、etcd 等;网关的产品有 Zuul、Spring Cloud Gateway 等。在注册中心产品中,最常使用的是 ...

    consul 商品服务部分代码示例

    与它同类的东西,还有Eureka、zooKeeper、etcd等也能做这些事,说不上谁好谁坏,看场景挑合适的吧,不过Eureka现在已经闭源了,这个还是建议不要去用这个了。 本文主要针对商城系统为例,以swoft 为基础,对商品...

    zookeeper-3.4.9.zip

    虽然Eureka还可以用,但是官网已经发出了停更公告,所以可以使用其他的注册中心(Zookeeper,Consul等)

    Nepxion Discovery【探索】微服务企业级解决方案 V5.4.0.pdf

    • 支持Eureka、Consul、Zookeeper和阿里巴巴的Nacos四个服务注册发现中心 • 支持阿里巴巴的Nacos、携程的Apollo和Redis三个远程配置中心 • 支持Hystrix或者阿里巴巴Sentinel的两个熔断隔离限流降级 • 支持Spring...

    consul.zip

    虽然Eureka还可以用,但是官网已经发出了停更公告,所以可以使用其他的注册中心(Zookeeper,Consul等)

    尚硅谷SpringCloud第2季2020版.mmap

    Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign服务接口调用 Hystrix断路器 zuul路由网关 Gateway新一代网关 SpringCloud Config 分布式配置中心 ...

    微服务注册中心Eureka架构深入解读

    微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的Dubbo和SpringCloud。关于注册中心的解决方案,dubbo支持了...

    催米技术部研发团队技术分享:微服务及服务发现学习资料.zip

    内容概要: ...zookeeper,etcd,consul对比; 微服务史上最细致入微的深入讲解; 为什么要用服务发现; Raft 为什么是更易理解的分布式一致性算法; 组件包:consul;eureka;zookeeper; 热力对比;

    SpringCloud思维导图

    5.Eureka服务注册与发现 6.Zookeeper服务注册与发现 7.Consul服务注册与发现 8.Ribbon负载均衡服务调用 9.OpenFeign服务接口调用 10.Hystrix断路器 11.Zuul路由网关 12.Gateway新一代网关 13.SpringCloud Config...

    spring cloud2有这一篇就够了

    1 - 服务注册中心:Eureka、Zookeeper、Consul 2- 服务负载均衡:Ribbon 3 - 服务接口调用:OpenFeign 4 - 服务的断路器:Hystrix 5 - 服务的路由器:GateWay 6 - 服务配置中心:SpringCloud Config 7 - 服务消息...

    SpringBoot Admin——监控中心

    Spring Boot Admin用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client向为Spring Boot Admin Server注册(通过HTTP)或使用SpringCloud注册中心(例如Eureka,Consul,Zookeeper)发现。

    新版本SpringCloud2学习手册

    使用Zookeeper来替换Eureka 25 Consistency(一致性), 数据一致更新,所有数据变动都是同步的 Availability(可用性), 好的响应性能 Partition tolerance(分区容忍性) 可靠性 28 客户端负载均衡器 29 客户端负载...

    详解在Windows下如何使用AspNetCore Api 和consul

    Consul 是有多个组件组成的一个整体,作用和Eureka,Zookeeper相当,都是用来做服务的发现与治理。 Consul的特性: 1、服务的发现:consul可以把注册到其中的服务提供给使用者,也可以主动发现服务,在consul的客户端...

    1234234test01.xls

    Nepxion Discovery是一款对Spring Cloud服务注册发现和负载均衡的增强中间件,其功能包括灰度发布(包括切换发布和平滑发布),黑/白名单的IP地址过滤,限制注册,限制发现等,支持Eureka、Consul和Zookeeper,支持...

    abstract-ns:锈的抽象名称服务特征

    我们希望abstract_ns不仅具有基于DNS的名称发现的实现,而且还具有Zookeeper,Eureka,Etcd,Consul以及您可能想到的其他任何东西的实现。 所有这些都易于配置和互换。 特征: 定义什么是名称以及什么是服务发现的...

    SpringCloud2020.html

    2、Eureka服务注册与发现 3、Zookeeper服务注册与发现 4、Consul服务注册与发现 5、Ribbon负载均衡服务调用 6、OpenFeign服务接口调用 7、Hystrix断路器 8、Gateway新一代网关 9、SpringCloud Config分布式配置中心 ...

    springclound+springcloundAlibaba 入门全套源码

    eureka consul zookeeper openfeign hygtrix gateway config-center stream-rabbitmq alibaba nacos sentinel seata 全套工程源码,POM文件,YML配置

    59道SpringCloud面试题详解含答案(值得珍藏)

    其中,服务注册与发现组件包括Eureka、Zookeeper、Consul和Nacos等;配置中心提供了配置集中管理,动态刷新配置的功能,配置通过Git或者其他方式来存储;安全控制组件基于OAuth2.0开放网络的安全标准,提供了单点...

    service-discovery-demo:2015年9月16日向开普敦Spin组提供了有关服务发现的演示和资料

    然后是演示中讨论的四个服务发现工具的示例:ZooKeeper,Eureka,Consul和etcd。 在示例中,我使用两个快速演示服务:报价和订购。 Quote是一个简单的Spring Boot应用程序,它以/ quotes / {symbol}(预先定义的...

Global site tag (gtag.js) - Google Analytics