专栏首页Java患者Java面试锦囊(十二)-- Eureka与Zookeeper区别

Java面试锦囊(十二)-- Eureka与Zookeeper区别

微信公众号:Java患者 专注Java领域技术分享

Eureka 与 Zookeeper的区别

集群方面

  • Eureka: Eureka是一个注册中心,如果搭建集群的话,没有主从之分,eureka会把自己注册到其他的eureka-server身上。
  • Zookeeper:一个注册中心,一个zookeeper集群在同一个时刻只有一个Leader,其他都是Follower或者Observer,并且当主服务器宕机之后,需要有一段时间(可能是30s)的时间进行选举一个新的Leader出来,这段选举的时间是不可用的。

原理方面

  • Eureka: 每一个微服务启动后想Eureka-server注册,Eureka-server会将注册信息向其他Eureka-server进行同步,当服务消费这调用服务提供者时,则向服务注册中新获取服务提供者地址,然后会将服务提供者地址缓存到本地,下次进行调用的时候,直接从本地缓存中读取,并且服务提供者会周期性(默认30S)向Eureka-server发送心跳,以证明该服务可用,如果eureka-server在一定时间(默认90s)未收到客户端的心跳,则认为宕机,会注销该服务实例。
  • Zookeeper: 用于服务治理,每启动一个服务,就会到zookeeper注册一个临时节点。每次当有服务宕机,由于时临时节点,此节点会礼纪被删除,并且通知已经订阅该服务的微服务更新服务列表。每当有新的服务,会在对应的目录下创建临时的子节点,并通知已经订阅该服务的微服务更新服务列表。

CAP方面

  • Consistency: 一致性
  • Availability: 可用性
  • Partition Tolerance: 分区容错性

目前这三个指标不可能同时做到。这个结论就叫CAP定理。

分区容错

大多数的分布式系统都分布在多个服务器下的子网络。每个子网络就叫做一个区(partition)。

比如一台服务器放在北京,另外一台服务器放在东京,这就是两个区,他们之间的通信可能失败,可以理解为分区容错。

上图,server1跟server是两台跨区的服务器,server1向server2发送一条消息,server2可能无法收到。所以一般来说,分区容错是无法避免的,因此CAP的P总是成立的。

Consistency

Consistency 一致性,理解为 当有一个写操作之后的读操作,就必须返回该值,假如server1中有一个变量i = 1,client向server1发起了一个写操作 i = 2 ,那么client读到的就是i = 2。

但是 用户可能从server2中发起读操作,由于server2的值没有发生变化,因此返回的i=1,所以server1跟server2读取的值不一致,这就不满足一致性。

所以为了让server1跟server2返回的值一致,我们需要在往server1执行写操作的时候,让server1给server2发送一条消息,让server2的i = 2。

Availability

可用性,意思就是server收到用户的请求,服务器就必须给出回应,不管是哪台服务器,只要收到,不管这个时候是i=1还是i=2 ,都要回应给客户,否则就不满足可用性。

Consistency 和 Availability 矛盾

当我们为了要保证一致性的时候,server1跟server2就必须数据同步,在同步的过程中,server2就必须有一个锁定的时间,只要同步完数据之后,才能重新放开读写操作,这个时候满足了一致性,但是却不满足可用性。所以C跟A只能选择一个。

Eureka与Zookeeper的CAP

Eureka 在设计的时候遵循的是AP原则,因为各个节点都是平等的,当搭建了eureka集群之后,就算有宕机了eureka,服务依然可以注册到剩余的eureka。只要有一台eureka还在,就能保证注册时可用的,保证了可用性。但是查询到的信息不一定是最新的,不保证强一致。

Zookeeper在设计的遵循的是CP原则,当master节点故障的时候,剩余的节点会重新选举一个master出来,而选举过程中整个zookeeper集群是不可以用的,因此做不到高可用。

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Cloud面试题(2021最新版)

    Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消...

    Java程序猿
  • Redis过期策略以及淘汰机制

    Redis中可以通过expire设置键的过期,那么Redis又是什么时候删除键的呢?

    用户7386338
  • 程序员该如何管理后宫:怎样哄女孩儿(策略模式)

    木东居士
  • 特征锦囊:今天一起搞懂机器学习里的L1与L2正则化

    今天我们来讲讲一个理论知识,也是老生常谈的内容,在模型开发相关岗位中出场率较高的,那就是L1与L2正则化了,这个看似简单却十分重要的概念,还是需要深入了解的。网...

    Sam Gor
  • 【知识总结】6.服务注册发现框架比较(Consul/Zookeeper/etcd/Eureka)

    服务发现就是服务提供者将自己提供的地址post或者update到服务中介,服务消费者从服务中介那里get自己想要的服务的地址。

    辉哥
  • 服务发现技术选型那点事儿

    近日来,和很多来自传统行业、国企、政府的客户在沟通技术细节时,发现云原生所代表的技术已经逐渐成为大家的共识,从一个虚无缥缈的概念渐渐变成这些客户的下一个技术战略...

    我是阳明
  • 微服务架构的服务与发现-Spring Cloud

    简单来说,服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB、KV,去掉重量级ESB),并且强调...

    java思维导图
  • Java设计模式(十三)----策略模式

    策略模式 一、概述 二、策略模式的结构 三、具体案例 四、认识策略模式 一、概述 1.定义 策略模式属于对象行为型模式,主要针对一组算法...

    汤高
  • Java面试——微服务

    就目前而言,对于微服务业界并没有一个统一的,标准的定义。但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分一组小的服务,每个服务...

    Java架构师必看
  • 主流服务注册中心横评

    谈到服务治理,就不得不小了解一下CAP理论 ,因为一般都是分布式框架,才会有服务治理的概念,而CAP理论是分布式架构中重要理论

    呆呆
  • Spring Cloud(一)《服务集群注册与发现 Eureka》

    1、对于能提供完整领域服务接口功能的RPC而言,例如;gRPC、Thrift、Dubbo等,服务的注册与发现都是核心功能中非常重要的一环,使得微服务得到统一管理...

    小傅哥
  • 因为有你,所以成功---红帽云套件合作伙伴招募回顾

    前言:昨天下午(11月29日),红帽举办了云套件合作伙伴(BP)招募会。会上,红帽几位架构分享了云套件解决方案以及销售方法。合作伙伴们也踊跃提出了疑问和见解,大...

    魏新宇
  • 2020最常见的200+Java面试题汇总(含答案解析)

    2020年快要结束了,很多朋友问题,有没有整理今年的一些面试题,最近抽时间整理了一份Java面试题。或许这份面试题还不足以囊括所有 Java 问题,但有了它,我...

    程序员追风
  • 15分钟快速了解eureka及实战

    我们不管在进行分布式开发还是微服务开发,都需要接触一个组件,那就是服务治理中心,必须有一个组件为你提供和发现服务的功能,注册中心可以由zookeeper、rei...

    AI码师
  • 一文搞定 Eureka 集群高可用配置

    通过部署多节点 Eureka 实例,避免单点问题,满足高可用架构。同时节点之间的地位是平等,节点通信方式采用点对点方式(peer to peer),以便满足数据...

    猿芯
  • 微服务技术栈:常见注册中心组件,对比分析

    在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件。

    知了一笑
  • 2020年SpringCloud 必知的18道面试题

    Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生...

    程序员白楠楠
  • Spring Cloud面试题万字解析(2020面试必备)

    Spring cloud 流应用程序启动器是 于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Tas...

    程序员追风
  • 大厂面试系列(五):Dubbo和Spring Cloud

    zhaozhen

扫码关注云+社区

领取腾讯云代金券