Zookeeper应用场景和底层设计

一、什么是zookeeper

Zookeeper是一个开源分布式协调服务框架,它是服务于其它集群式框架的框架。

【简言之】
有一个服务A,以集群的方式提供服务。只需要A专注于它提供的服务就可以,至于它如何以多台服务器协同完成任务的事情,交给Zookeeper来协调。

【底层设计逻辑】
1)基于观察者设计模式
2)等价于文件系统+通知机制

【数据存储的方式】
zookeeper是文件系统,当然是像树一样的结构存储
1)每个节点都有唯一路径标识
2)每个节点默认只能存储1M数据

【zookeeper运行规则】
1)支持一个leader,多个follower组成的集群方式运行
2)集群中半数以上节点存活,zookeeper就能提供正常的服务
3)集群中的每个服务器上保存的数据都完全相同,具有数据一致性
4)同一个客户端的请求会按照请求的顺序执行
5) 数据更新具有原子性,要么全部更新成功,要么不更新

【zookeeper中节点类型】
是否持久(-e参数)
1)持久型:客户端与服务器端断开连接后,创建节点不删除create /nodename
2)短暂型:客户端与服务器端断开连接后,创建节点自己删除create -e /nodename
是否有序列号(-s参数)
1)有create -s /nodename: /nodename0000000003 可依据序号进行全局的事务排序
2)无create /nodename: /nodename
容器节点
1)当子节点都不存在后,容器节点就会自动消失
TTL节点
1)当超过时间,自动消失

【zookeeper中节点信息】
1)存储的数据信息
2)路径信息
3)节点的元数据
4)子节点信息

二、zookeeper应用场景

1、统一命名:唯一名称标识

在这里插入图片描述

2、统一配置管理:所有节点配置信息一致、更新后快速更新到各个节点上

在这里插入图片描述

3、统一集群管理:每一个节点可以立即感知到其它节点的变化

在这里插入图片描述

4、 服务器节点动态上下线

在这里插入图片描述

5、软负载均衡

在这里插入图片描述

三、zookeeper中相关的底层原理

1、选举机制

集群的机器数量是奇数还是偶数?
答:当然是奇数好,不然容易平票

怎样一种情况表示选举成功?
答:投票数最先超过半数的机器成为leader,不论先来后到

机器状态有哪些?
1)looking:选举态
2)leading:当官态,正常工作态
3)following:随从态,正常工作态

选票格式是什么样的,如何比较各个信息?
答:每一张选票上包含三个信息
1)epoch:参加过几次选举
2)zxid:最大事务ID
3)sid:服务器编号
按照顺序依次比较,谁大选谁

什么时候开始选举?
答:分两种情况
【情况1——zookeeper集群搭建过程中】
在没有选出leader之前都处于looking状态,并且新加进来一个机器就组织一次选举直到选出leader,后面新加进来的机器都是follower。
【情况2——集群运行过程中,leader“挂掉了”】
如果是某个follower认为leader挂掉了,实际上leader在正常工作。这种情况下,不会进行选举,只是要求该follower不断尝试与leader获取连接直到成功。
如果leader真的挂掉了,会在所有正常工作的follower中安装选票信息进行重新选举。

如何判断leader是否挂掉了?
答:在工作过程中,leader会发送带有ping的信息给follower,当follower一段时间内没有读取到该信息,就可以任务该leader挂掉了。

2、CAP理论

CAP分别是指一致性(Consistency),可用性(Consistency)和分区容忍性(Partition tolerance):

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值