作为服务注册中心,Eureka比Zookeeper好在哪里
著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP。
4.1 Zookeeper保证CP
当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。
4.2 Eureka保证AP
Eureka看明白了这一点,因此在设计时就优先保证可用性。Eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而Eureka的客户端在向某个Eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性)。除此之外,Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:
1. Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
2. Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)
3. 当网络稳定时,当前实例新的注册信息会被同步到其它节点中
因此, Eureka可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪。
5. 总结
Eureka作为单纯的服务注册中心来说要比zookeeper更加“专业”,因为注册服务更重要的是可用性,我们可以接受短期内达不到一致性的状况。不过Eureka目前1.X版本的实现是基于servlet的java web应用,它的极限性能肯定会受到影响。期待正在开发之中的2.X版本能够从servlet中独立出来成为单独可部署执行的服务。
相关推荐
- **与Zookeeper的对比**:EureKa更注重服务发现的可用性,而Zookeeper更强调一致性,适合需要强一致性的场景。 - **与Consul的对比**:Consul除了服务发现,还提供了健康检查、KV存储和多数据中心支持,功能更为...
在本文中,我们将详细介绍 Spring Cloud 面试准备的相关知识点,包括 Spring Cloud 的定义、微服务架构、Spring Cloud 的优势、微服务之间的独立通讯方式、服务熔断和服务降级、Eureka 和 Zookeeper 的区别等。...
Eureka 和 Zookeeper * Eureka 和 Zookeeper 都是服务注册与发现的解决方案 * Eureka 采用自我保护机制解决分区问题,而 Zookeeper 采用过半数存活原则 SpringBoot 整合其他技术 * 整合 Mybatis 时,可以在 ...
综上所述,尽管ZooKeeper在分布式协调上有其优势,但作为云平台的服务发现服务,Eureka可能更为适用,因为它能更好地适应云环境的动态变化和高可用性需求。选择服务发现方案时,应充分考虑系统特性和业务需求,以及...
Spring MVC + Dubbo + MyBatis + ZooKeeper 这是一个经典的微服务架构组合,用于构建高效、可扩展的分布式...此外,还可以考虑与其他工具集成,如Spring Cloud、Eureka、Sentinel等,以提升系统的稳定性和可扩展性。
在Java面试中,理解Zookeeper的核心概念如会话、节点(ZNode)、数据模型(树形结构)以及其提供的原子操作(如创建、删除、读取和更新节点)至关重要。同时,熟悉Zookeeper在分布式环境中的实际应用,如在Hadoop、...
1. **服务发现和注册**:Spring Cloud 提供了 Eureka 和 ZooKeeper 等服务注册与发现的工具,使得服务之间的调用变得简单。 2. **配置管理**:通过 Config Server 实现配置的集中管理和动态更新,提高了配置的灵活性...
3. **Spring Cloud的优势**:Spring Cloud提供了便捷的开发工具,简化了分布式系统集成,支持多种服务治理方式,同时提供了与第三方服务(如Eureka、Zookeeper等)的集成API,提升了开发效率。 4. **Spring Cloud ...
此外,Spring Cloud还与其他云原生技术如Netflix Eureka、Consul等进行了整合,提供了多种服务发现和配置管理的选择。选择Zookeeper的原因可能包括其成熟稳定、社区活跃、功能全面等优势。 总的来说,Spring Cloud ...
本文将深入探讨如何在 SpringBoot 应用中集成 Consul 作为服务注册组件,并对比其他常见的服务治理组件,如 Spring Cloud Eureka 和 Zookeeper。 **服务注册组件选择** 1. **Spring Cloud Eureka**:由 Netflix ...
SpringCloud 提供了多种服务发现方式,包括 Eureka、Zookeeper、Consul 等。 断路器 断路器是 SpringCloud 中的核心组件,负责管理微服务实例之间的调用。断路器可以帮助开发者快速地检测微服务实例之间的调用...
Eureka和Zookeeper都可以提供服务注册与发现的功能,请说说两个的区别? - **Eureka**:遵循AP原则,即在出现网络分区的情况下,仍然保证可用性。Eureka的设计目标是在发生故障时尽可能保持可用性,即使部分服务...
为什么选择 Nacos 而不是其他类似组件如 Eureka、ZooKeeper 或 Consul? Nacos 的优势在于: - **CAP 支持**:Nacos 侧重于可用性和分区容错性,这使得它在分布式环境中更加稳定。 - **易用性**:Nacos 的部署和...
《星尘:轻量级分布式服务框架解析》 在当今的互联网时代,分布式服务框架已经成为企业级应用...通过深入理解和熟练运用星尘,开发者可以更高效地构建和管理复杂的分布式应用程序,从而在激烈的市场竞争中取得优势。
比如服务发现(Eureka、Zookeeper、Consul、Nacos等)、配置中心(如Spring Cloud Config)、安全控制(基于OAuth2.0的Spring Cloud Security)以及链路追踪(Spring Cloud Sleuth和Zipkin)等,使得开发者可以更...