首页 > 其他分享 >字节跳动面试官问什么是Zookeeper

字节跳动面试官问什么是Zookeeper

时间:2023-07-02 17:24:35浏览次数:37  
标签:面试官 字节 Zookeeper app1 使用 Znode 节点 分布式

什么是Zookeeper?

 

简单来说,Zookeeper是一个开源的分布式协同服务系统,Zookeeper的设计目标就是把复杂并且容易出错的分布式协同服务进行封装,并抽象出一个高效可靠的原语接口,并对外提供一系列简单的接口为其他服务调用。

其他应用只要使用Zookeeper提供的接口,就可以实现各种分布式应用。例如:分布式锁、分布式选举,主从切换等等。这些案例我们在实战内容中会详细说明。

Zookeeper发展史

Zoookeeper最早是雅虎为了解决内部多个系统之间的协同问题而研发的,后来将其开源并捐赠给了Apache组织。

后来Zookeeper在开源界被广泛使用。这里,我列举几个使用了Zookeeper的著名的开源项目。

  • Hadoop:使用Zookeeper来提供NameNode的高可用机制。
  • HBase:使用Zookeeper来保证整个集群中只有一个Master节点,保存集群中的RegionServer列表,保存hbase:meta表的位置。
  • Kafka:使用Zookeeper来对进群中的成员进行管理,并使用Zookeeper提供controller节点的选举机制。
  • Dubbo:使用Zookeeper来实现分布式治理服务的注册中心。
  • SpringCloud:使用Zookeeper来实现微服务注册中心。

还有很多使用Zookeeper作为分布式协同的开源项目,由于数量比较多,这里就不一一列举了,小伙伴们可以自行通过网络查阅。

Zookeeper应用场景

简单点说,Zookeeper可以应用于以下场景当中。

  • 配置管理。
  • DNS服务。
  • 组成员管理。
  • 各种分布式锁。
  • 分布式选举。
  • 数据一致性场景。

但是,需要注意的是:Zookeeper只适合于存储和协同相关的关键数据,不适合用来存储大数据量的数据。

Zookeeper服务的使用

一般情况下,我们在使用Zookeeper时,是通过Zookeeper库来连接并使用Zookeeper的,由Zookeeper客户端负责和Zookeeper集群进行交互。

 

Zookeeper的数据模型

从本质上讲,Zookeeper的数据模型是层次模型,如下所示。

 

这种层次模型常见于文件系统,而这种层次模型和Key-Value模型是两种主流的数据模型。Zookeeper使用文件系统模型主要的考虑点如下。

  • 文件系统的树形结构便于表达数据之间的层次关系。
  • 文件系统的树形结构便于为不同的应用分配独立的命名空间。

在Zookeeper中,层次结构的每个节点叫做znode,它不同于文件系统,每个节点都可以保存数据,而且每个节点都有一个版本号,版本号从0开始递增计数。

接下来,我们再来看一个Zookeeper节点的具体示例。

例如,上图中有三个子树,三个子树分别应用于app1、app2和app3三个应用。其中app1的子树实现了一个简单的组成员协议,也就是每个客户端进行p创建一个znode在/app1节点下,而且每个进程创建的znode是以/app1/p_1,/app1/p_2,...,/app1/p_n 这种结构依次存放。只要 /app1/p_n 节点存在,就说明Pn进程在正常的运行。

Zookeeper的节点分类

总体来说,Znode节点可以分为以下四类。

 

一个Znode节点可以是持久性的,也可以是临时性的。

  • 持久性的Znode:创建节点后即使Zookeeper集群宕机,或者Zookeeper客户端宕机,节点也不会丢失。
  • 临时性的Znode:Zookeeper客户端宕机或者客户端在指定的超时时间内没有给Zookeeper集群发送消息,那么这个节点就会消失。

Znode节点也可以是顺序性的,所谓的顺序性,就是指每个节点会关联一个唯一的单调递增整数,这个单调递增的整数就是Znode节点名称的后缀,比如:/app1/p_1,/app1/p_2等,由此,Znode又有如下两种分类:

  • 持久顺序性的Znode:除了具备持久性的Znode的特性之外,Znode的名称还具备顺序性。
  • 临时顺序性的Znode:除了具备临时性的Znode的特性之外,Znode的名称还具备顺序性。

标签:面试官,字节,Zookeeper,app1,使用,Znode,节点,分布式
From: https://www.cnblogs.com/nifrecxgh/p/17521024.html

相关文章

  • Zookeeper 介绍及应用场景分析
    ZooKeeper(动物园管理员),顾名思义,是用来管理Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,同时ApacheHBase、ApacheSolr等众多项目中都采用了ZooKeeper。Zookeeper分布式服务框架是ApacheHadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务......
  • 一文了解 Zookeeper 基本原理与应用场景
    Zookeeper是一个高性能、高可靠的分布式协调系统,是GoogleChubby的一个开源实现,目前在分布式系统、大数据领域中使用非常广泛。本文将介绍Zookeeper集群架构、数据模型、监听机制,以及Zookeeper典型的应用场景等。 1.Zookeeper集群角色首先介绍下Zookeeper集群,一个Zo......
  • 面试官问我知不知道 MySQL 的锁,5分钟让他刮目相看是什么?一篇理解
    锁的概念锁机制是用于管理对共享资源的并发访问。InnoDB存储引擎会在行级别上对数据上锁。数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。lock与latchlatch一般称为闩锁(轻量级的锁),因为其要求锁定的时间必须要非常短。在innoDB存储引擎中,latch可以分为......
  • 面试官问我知不知道 MySQL 的锁,5分钟让他刮目相看
    锁的概念锁机制是用于管理对共享资源的并发访问。InnoDB存储引擎会在行级别上对数据上锁。数据库使用锁是为了支持对共享资源进行并发访问,提供数据的完整性和一致性。lock与latchlatch一般称为闩锁(轻量级的锁),因为其要求锁定的时间必须要非常短。在innoDB存储引擎中,latch可以......
  • 微信读书:从Paxos到Zookeeper:分布式一致性原理与实践(阅读摘录)
    微信读书:从Paxos到Zookeeper:分布式一致性原理与实践(阅读摘录)阅读地址CAP理论CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partitiontolerance)这三个基本需求,最多只能同时满足其中的两项。BASE理论BASE是Basica......
  • 字节序(大小端)
    一、字节序定义字节序:讨论一个数据里,字节之间的排放顺序(对于int型有4字节,则讨论这4者之间的排列顺序)假设一个整数inta=0x11223344低地址————————————>高地址[][][][][][][11][22][33][44][][][][][][][][]   大端存储模式[][][][][][][44][......
  • 为什么面试官这么爱问性能优化?
     笔者是一个六年前端,没有大厂经历,也没有什么出彩的项目,所以今年以来,前端现在这种行情下并没有收到多少面试,但是为数不多的面试中,百分之九十都问到了性能优化的问题,而且问题都出奇的一致:平时的工作中你有做过什么性能优化?对于这个问题其实我的内心os是(各位轻喷~):你们怎么都这么爱问......
  • 位,字节,字符
    位,字节,字符位(bit):是计算机内部储存的最小单位字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B来表示1B(byte,字节)=8bit(位)字符:指计算机中使用的字母,数字,字和符号1bit表示1位1B=8b1KB=1024B1M=1024KB1G=1024MJava中单个字符用单引号,字符串用双引号......
  • docker swarm 集群部署Kafka3.5,彻底告别zookeeper
    介绍本次部署kafka3.5版本,彻底告别zookeeper时代,部署更加轻量,运维更加简单同时使用比较好用的kafka控制台redpandadatadockerswam集群搭建详见我的另一篇博客DockerSwarm集群搭建,不再这里赘述。docker-compose文件准备docker-compose-kafka3-cluster.ymlversi......
  • 面试官问:ZooKeeper是强一致的吗?怎么实现的?
    Zookeeper通过ZAB保证分布式事务的最终一致性。 ZAB全称ZookeeperAtomicBroadcast(ZAB,Zookeeper原子消息广播协议)ZAB是一种专门为Zookeeper设计的一种支持崩溃恢复的原子广播协议,是Zookeeper保证数据一致性的核心算法。ZAB借鉴了Paxos算法,但它不是通用的一致性算法,是特......