首页 > 编程语言 >Java面试题-12Zookeeper

Java面试题-12Zookeeper

时间:2024-04-01 21:46:04浏览次数:30  
标签:面试题 Java 请求 Zookeeper 12Zookeeper 集群 一致性 服务器 Leader

1、ZK节点数据

Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为1M

2、Zookeeper 如何保证分布式数据的一致性特性

Zookeeper 的一些特性和工作原理,包括顺序一致性、原子性、单一视图、可靠性和实时性(最终一致性)。

  1. 顺序一致性: Zookeeper 保证所有的更新操作都是全局有序的,每个更新都有一个唯一的时间戳(zxid),并且读请求的返回结果中会带有最新的 zxid,确保了更新操作的顺序性。

  2. 原子性: 对于写请求,Zookeeper 会同时将请求发送给其他 Zookeeper 机器,并在达成一致后才返回成功,保证了写操作的原子性,即要么全部写入成功,要么全部失败。因此, 随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会下降。

  3. 单一视图: Zookeeper 提供了一个单一视图,即对于所有的客户端,他们看到的数据都是一致的,这也是 Zookeeper 的可靠性和一致性基础之一。

  4. 可靠性: Zookeeper 的可靠性体现在其提供了高可用和容错性,通过集群机器的增多,可以提高读请求的吞吐,同时保证写请求的可靠性和一致性。

  5. 实时性(最终一致性): 对于读请求,Zookeeper 允许任意一台机器处理,并且会相对于更新有序,但并不保证实时性,而是保证最终一致性,即数据最终会达到一致状态。

总体来说,Zookeeper 是一个分布式协调服务,通过其特性保证了数据的一致性、可靠性和顺序性,在分布式系统中有着广泛的应用。

 3、zab协议

ZAB(Zookeeper Atomic Broadcast)协议是专门为分布式协调服务 Zookeeper 设计的一种支持崩溃恢复的原子广播协议。它包括两种基本模式:崩溃恢复和消息广播。

  1. 崩溃恢复模式: 当整个 Zookeeper 集群刚启动、Leader 服务器宕机、重启或者网络故障导致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)进入崩溃恢复模式。在该模式下,首先会选举产生新的 Leader 服务器,然后集群中的 Follower 服务器开始与新的 Leader 服务器进行数据同步。一旦超过半数的机器与新的 Leader 服务器完成数据同步,集群就会退出恢复模式,进入消息广播模式。

  2. 消息广播模式: 一旦集群中超过半数的机器与新的 Leader 服务器完成数据同步,集群就会退出恢复模式进入消息广播模式。在这个模式下,Leader 服务器开始接收客户端的事务请求,并生成事务提案来处理这些请求。

ZAB 协议通过这两种模式,确保了在 Zookeeper 集群中保持数据的一致性和可靠性。崩溃恢复模式确保在发生故障或初始启动时,能够重新选举 Leader,并进行数据同步;消息广播模式则确保了在集群正常运行时,能够处理客户端的事务请求并保持数据的一致性。

 

标签:面试题,Java,请求,Zookeeper,12Zookeeper,集群,一致性,服务器,Leader
From: https://www.cnblogs.com/raorao1994/p/18109441

相关文章

  • Java HashMap merge() 方法
    JavaHashMapmerge()方法hashmap.merge(key,value,remappingFunction)注:hashmap是HashMap类的一个对象。参数说明:key-键value-值remappingFunction-重新映射函数,用于重新计算值菜鸟教程链接Ifthespecifiedkeyisnotalreadyassociatedwithavalueor......
  • 学习-Java顺序结构之字符变换之大小写字母转换
    任务描述本关任务:将键盘输入的大写字母转化为小写字母。相关知识为了完成本关任务,你需要掌握:字符型变量和常量;字符型数据的加减运算;字符型数据的输入/输出。字符型变量和常量在之前我们学习了整型和浮点型的变量和常量,接下来介绍字符型的变量和常量。首先我们要先了解......
  • [Socket/计算机网络] Java Socket编程:基础篇
    1计算机网络的核心概念网络通信概念:两台设备之间通过网络实现数据传输2.网络通信:将数据通过网络从一台设备传输到另一台设备java.net包下提供了一系列的类或接口,供程序员使用,完成网络通信网络概念:两台或多台设备通过一定物理设备连接起来构成了网络根据网络的覆......
  • 字典树基础(Java实现)
    字典树也叫Trie,是一种树形结构,其中每个节点可以存储一些变量表示该字符串出现的数量。每条边表示一个字符,如节点9存储一个变量cnt,说明存在三个字符串为“cbc” 例题:前缀判定importjava.math.BigInteger;importjava.util.*;publicclassMain{staticclass......
  • Java中如何以文本方式输出"\"
    1.转义符使用"\"在java中是一个转义符,只要有它的出现往往有他独特的意义,如下图:那么,在输出文本时,需要输出"\"怎么办呢,其实很简单,只要多加一个"\"就好啦。//此处是以文本方式输出\System.out.print("\\txasx\\");运行如下:......
  • 排列的字典序问题(Java)
    问题描述:n个元素{1,2,…,n}有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…,n!-1.每个排列的编号为其字典序值。例如,当n=3时,6个不同排列的字典序值如下:字典序值排列   0    1    2    3    4    5       ......
  • 前端面试题【笔记】
    1、判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母、数字、下划线,总长度为5-20varreg=/^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;//定义RegExp对象,大括号表示重复次数4-19次 reg.test("a1a__a1a__a1a__a1a__");//检查一个字符串中是否存在创建RegExp对象实例时所指定......
  • Javascript
    JS的引入方式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>js的引入方式</title&......
  • QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题
    在Python中,深拷贝(deepcopy)和浅拷贝(shallowcopy)是用于创建对象副本的两种不同方式。浅拷贝是创建一个新的对象,该对象与原始对象的内容相同(包括内部嵌套对象的引用),但是它们指向相同的内存地址。换句话说,浅拷贝创建了一个对象的表面副本,而不是递归复制所有嵌套对象。当原始对......
  • 初学Java,HelloWorld
    1、开发三步骤1.1程序开发步骤说明        JDK安装完毕,可以开发我们第一个Java程序了。        Java程序开发三步骤:编写、编译、运行。1.2编写Java源程序保存.java源文件在电脑中目录新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为Hello......