(面试宝典)Eureka和Zookeeper介绍和区别?

在分布式领域有一个很著名的CAP定理:C:数据一致性。A:服务可用性。P:分区容错性(服务对网络分区故障的容错性)

1、什么是Eureka  保证AP
1.Eureka是netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现和注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务,而不需要修改服务调用的配置文件了。


2.Eureka的作用
    2.1  Eureka采用了C-S的设计架构。Eureka Server作为服务注册功能的服务器,它是服务注册时中心。
而系统中的其他微服务,使用eureka的客户端连接到eureka server并维持心跳连接。这样系统的维护人员就可以通过eureka server来监控系统中各个微服务是否正常运行。SpringCloud的一些其他模块就可以通过eureka server来发现系统中的其他微服务,并执行相关的逻辑。
   2.2 Eureka Server提供服务注册服务。各个节点启动后,会在Eureka Server中进行注册,这样Eureka server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
   2.3 Eureka client是一个java客户端,用于简化eureka server的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表把这个服务节点移除。

 


2. 什么是Zookeeper  保证 CP

        ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper是hadoop的一个子项目。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在 某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。

   2.1 Zookeeper设计目标

        ① 简单的数据结构:共享的树形结构,类似文件系统,存储于内存;

        ② 可以构建集群:避免单点故障,3-5台机器就可以组成集群,超过半数正常工作久能对外提供服务;

        ③ 顺序访问:对于每个读请求,zookeeper会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务;

        ④ 高性能:基于内存操作,服务于非事务请求,适用于读操作为主的业务操作。3台zk集群能达到13W QPS

   2.2 哪些场景需要用到zk?

        ① 数据发布订阅 ② 负载均衡 ③ 命名服务 ④ Master选举 ⑤ 集群管理 ⑥ 配置管理 ⑦ 分布式队列 ⑧ 分布式锁
 

Eureka和Zookeeper区别?

  1. 在分布式领域有一个很著名的CAP定理:C:数据一致性。A:服务可用性。P:分区容错性(服务对网络分区故障的容错性)。
  2. Zookeeper取CAP的CP注重一致性,在可用性方面不太好,假如master节点故障,剩余节点会重新leader选举,选举leader的时间太长30~120s,选举期间整个集群都不可用,这就导致在选举期间注册服务瘫痪,漫长选举导致注册不可用,不能容忍。
  3. Eureka看明白了这一点,因此在设计时就优先保证可用性。取CAP的AP,注重可用性。Eureka各个节点都是平等的,只要有一台Eureka还在就能保证注册服务可用(保证可用性),只不过可能查询到的不是最新的。
  4. eureka的自我保护机制,会导致一个结果就是不会再从注册列表移除因长时间没收到心跳而过期的服务。依然能接受新服务的注册和查询请求,但不会被同步到其他节点(保证当前节点可用),当网络稳定时,当前实例新的注册信息会被同步到其它节点中。也就是,不容易瘫痪。
  5. Zookeeper有Leader和Follower角色,Eureka各个节点平等。
  6. Zookeeper采用过半数存活原则,Eureka采用自我保护机制解决分区问题。
  7. eureka本质是一个工程,Zookeeper只是一个进程。
  8. dubbo默认使用zookeeper,spring cloud默认使用eureka。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章