Zookeeper和Nacos的区别

目录

Zookeeper

1.ZK结构

2.ZK的消息广播和崩溃恢复

Nacos

1.存储和数据更新

2.注册中心


 

Zookeeper

1.ZK结构

Zookeeper的功能主要是通过它的树形节点来实现的,当有节点数据变化时或者说节点过期的时候会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zk获取最新数据,采用push-pull来做数据更新

2.ZK的消息广播和崩溃恢复

1.Client和Server是通过NIO的方式通信的

(55条消息) NIO学习_Fairy要carry的博客-CSDN博客

(55条消息) 为什么NIO比BIO效率高_Fairy要carry的博客-CSDN博客_nio比bio优势

2.消息时FIFO方式执行的(先进先出)

3.读消息可通过zk的leader和所有follower

4.写消息必须通过leader

消息广播主要是两段机制:1.当客户端接收到请求后,follower会先将请求给到leader,2.然后我们的leader进行处理生成Proposal——>3.发送给follower(收到过半follower针对这个Proposal的消息)——>leader让follower进行提交

(55条消息) zookeeper Zab协议—消息广播_L25809的博客-CSDN博客_zk消息广播

 崩溃恢复

当leader挂了,或者超半数follower投票得出leader不可用,那么会重新选举,这段期间zk服务是不可用的。通过最新的 xid来选举出新的leader,选举出来后需要将新的leader中的数据更新给超过半数的follower节点才能对外提供服务

Nacos

Nacos的配置中心和注册中心实现的是两套代码,和Zk不同

1.存储和数据更新

Nacos:依赖Mysql数据库做数据存储,当你有数据更新的时候,直接更新数据库中的数据,然后将数据更新的信息异步广播——>给Nacos集群中所有服务节点数据变更——>再由Nacos服务节点更新本地缓存,然后将通知客户端节点数据变化

Zookeeper:利用zk的树型结构做数据存储,当有数据更新的时候使用过半机制保证各个节点的数据一致性;然后通过zk的事件机制通知客户端——>先ack给follower,转到leader,过半再提交

差异:

服务器存储位置不同,分别采用mysql和zk本身存储
消息发送,一个有采用过半机制保持一致性,另外一个异步广播,通过后台线程重试保证;

2.注册中心

(55条消息) Nacos注册中心_Fairy要carry的博客-CSDN博客_nacos注册中心

Eureka遵从AP原则,追求可用性;Zookeeper遵从CP原则,追求一致性(es也是cp,利用分片集群,每个节点有副本)
体现在获取服务注册列表上,当ZK的master挂掉后,会触发选举,选举期间无法从ZK获取服务列表信息,这就是为了一致性放弃了可用性;Eureka则追求可用性,只存在Eureka Server,就可以获取到服务注册列表信息,但是可能获取到不是最新的,这就是为了可用性放弃了一致性
 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: ZooKeeper是一种分布式的,开放源的分布式应用程序协调服务,它允许一组计算机在分布式环境中协调它们的活动。Nacos是一个用于构建云原生应用的动态服务发现、配置管理和服务管理平台。两者的区别在于,ZooKeeper专注于提供一致性服务,而Nacos则提供服务发现、配置管理和服务管理等多种功能。 ### 回答2: ZookeeperNacos是非常流行的分布式服务注册与发现框架,它们分别有着不同的特点和用途。 首先,Zookeeper是一个高可用的分布式协调服务,它主要用于分布式系统的一致性和可靠性的维护。Zookeeper提供了一个树状的命名空间,可以用于存储和管理集群的配置信息、命名服务、状态同步等。Zookeeper具有强一致性、顺序访问和高可用性的特点,适用于需要强一致性和可靠性的场景。然而,Zookeeper通常需要一定的运维和管理成本,并且在大规模集群时可能会出现性能瓶颈。 相反,Nacos是一个用于服务发现、配置管理和动态DNS的开源平台。Nacos支持灵活的服务注册和发现,可以在微服务架构中方便地实现服务治理功能。Nacos提供了服务注册和发现、配置管理、分布式定时任务以及动态DNS等功能。相对于ZookeeperNacos具有更简单易用、轻量级的特点,适用于中小型的分布式系统。此外,Nacos支持服务和配置的自动发布和回滚,提供了更好的动态管理能力。 总的来说,ZookeeperNacos都是分布式服务注册与发现的重要工具,但在一些方面有所不同。如果需要强一致性和可靠性的分布式协调服务,可以选择Zookeeper;而如果希望方便快捷地实现微服务架构中的服务发现、配置管理和动态DNS等功能,可以选择Nacos。 ### 回答3: ZookeeperNacos都是用于服务治理的开源组件,用于实现分布式系统中的服务注册、发现、配置和路由等功能。它们有以下几点区别: 1. 发展历史和社区支持:Zookeeper是Apache基金会的一个顶级项目,从2008年开始发展,拥有较长的发展历史,社区活跃度高,有大量的用户和开发者参与。而Nacos是由阿里巴巴推出的开源项目,于2018年开源,虽然发展较为年轻,但也有不少用户和认可。 2. 功能特性:Zookeeper主要提供了分布式协调和通知服务,以及一些基础的数据存储功能。而Nacos在服务注册、发现、配置和路由的基础上,还提供了服务网格和服务熔断等功能,可以满足更丰富的微服务治理需求。 3. 数据存储方式:Zookeeper采用文件系统作为底层数据存储,可以保证数据的持久性和一致性,但在大规模集群的场景下性能有限。Nacos则采用了关系型数据库作为底层存储,可以提供更好的性能和扩展性,同时也支持多种存储方式,如MySQL、Redis等。 4. 架构设计:Zookeeper采用主从模式的架构,通过ZAB协议保证数据的一致性,主节点负责数据的写入和复制,从节点负责数据的读取。而Nacos采用集群模式的架构,通过选举和复制机制实现高可用性和负载均衡。 总之,ZookeeperNacos都是优秀的服务治理工具,选择使用哪个主要取决于项目需求、开发经验和技术栈等因素。如果只是需要基本的服务注册和发现功能,Zookeeper是一个稳定和成熟的选择;如果对微服务治理有更多的需求,如动态配置、服务路由等,可以考虑使用Nacos

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fairy要carry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值