SpringCloud面试题, Eureka,Zookeeper,Nacos 的区别?
SpringCloud面试题, Eureka,Zookeeper,Nacos 的区别?
QA
Step 1
Q:: Eureka、Zookeeper、Nacos的区别是什么?
A:: Eureka、Zookeeper、Nacos 都是分布式系统中用于服务注册与发现的工具,但它们各自的工作机制和特点有所不同。
1. **Eureka**:
是Netflix开源的服务注册和发现工具,属于AP(可用性优先)系统。当服务实例不可用时,Eureka不会立即感知并删除,目的是为了保持可用性。
2. **Zookeeper**:
是Apache Hadoop的一个子项目,主要用于分布式应用的协调服务。它是CP(强一致性优先)系统,确保数据的一致性,但在网络分区时可能会导致整个系统不可用。
3. **Nacos**:
是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台,支持AP和CP之间的切换。它不仅仅是服务注册和发现工具,还具备配置中心功能,支持多种服务命名方式。
Step 2
Q:: 为什么Nacos支持AP和CP模式的切换?
A:: Nacos 支持 AP 和 CP 模式切换的原因在于它想兼顾服务的可用性和一致性。在AP模式下,Nacos更关注服务的可用性,即使有少量数据丢失,也能保证服务的可用性。在CP模式下,Nacos更关注数据的一致性,即保证每次读取的数据都是最新的,但在网络分区时可能会牺牲部分可用性。Nacos通过Raft协议来实现CP模式,通过多副本一致性协议实现AP模式。
Step 3
Q:: Zookeeper如何保证一致性?
A:: Zookeeper通过使用ZAB协议(Zookeeper Atomic Broadcast)来保证一致性。ZAB协议是一种支持崩溃恢复的原子广播协议,它主要包括两个阶段:领导者选举和同步。所有更新请求都要经过领导者,领导者将更新操作按顺序发送给所有跟随者。只有在大多数节点都同意后,操作才会被提交,从而保证了数据的一致性。
Step 4
Q:: Eureka的自我保护机制是什么?
A:: Eureka的自我保护机制用于提高系统的可用性。在网络出现分区或实例大量下线的情况下,Eureka不会立即将失联的实例移除,而是进入自我保护模式,在该模式下,Eureka会保留所有服务实例的注册信息,即使这些实例暂时不可达。这样可以避免因网络波动等问题引起的服务雪崩效应。当网络恢复正常时,Eureka会自动退出自我保护模式。