SpringCloud 面试题, Eureka,Zookeeper,Nacos 的区别?
SpringCloud 面试题, Eureka,Zookeeper,Nacos 的区别?
QA
Step 1
Q:: Eureka、Zookeeper、Nacos 有什么区别?
A:: Eureka、Zookeeper 和 Nacos 是微服务架构中常用的服务注册与发现组件。它们主要区别如下:
1. **Eureka**:
由 Netflix 开发,支持 AP(可用性和分区容忍性)的分布式系统。它是 Spring Cloud 最早采用的注册中心,但由于 Netflix 停止维护,逐渐被其他服务替代。
2. **Zookeeper**:
是 Apache 的一个开源项目,支持 CP(一致性和分区容忍性)。Zookeeper 主要用于分布式协调服务,虽然它也可以作为服务注册与发现工具,但由于它倾向于一致性,一旦多数节点失效,Zookeeper 可能会不可用,故在微服务注册发现场景下使用较少。
3. **Nacos**:
阿里巴巴开源的项目,支持 AP 和 CP 模式的切换。Nacos 兼具服务注册与发现、配置管理等多功能特性,并支持 DNS 和 RPC 两种服务发现方式,灵活性较强。
Step 2
Q:: 为什么选择 Nacos 而不是 Eureka?
A:: Nacos 是一个集服务注册、发现、配置管理于一体的服务解决方案。与 Eureka 相比,Nacos 具有以下优势:
1. **多功能集成**:
Nacos 除了服务注册与发现,还具备配置管理的功能,简化了开发者的运维工作。
2. **多模式支持**:
Nacos 支持 AP 和 CP 模式的切换,适应性更强,可以根据业务需求选择不同的模式。
3. **更好的生态支持**:
作为阿里巴巴的开源项目,Nacos 拥有更为强大的社区支持和功能扩展能力。
Step 3
Q:: Zookeeper 如何保障数据一致性?
A:: Zookeeper 使用 ZAB 协议(Zookeeper Atomic Broadcast)来保障数据一致性。ZAB 是一种支持崩溃恢复的原子广播协议,它通过选举机制确保集群中的 Leader 节点,然后由 Leader 处理客户端的所有事务请求,并通过广播方式将状态变更同步到所有 Follower 节点,从而确保集群的一致性。在 Leader 失效时,Zookeeper 会重新选举新的 Leader,以保持系统的一致性。