JAVA面试题大全(十五)

1、Zookeeper 是什么?

zookper是一个分布式的,开放源码的分布式应用程序协调服务。是 google chubby 的开源实现,是 hadoop 和 hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2、Zookeeper 都有哪些功能?

ZooKeeper是一个开源的分布式协调服务,它是Apache软件基金会下的一个项目,旨在解决分布式系统中的协调和管理问题。ZooKeeper的主要功能包括以下几个方面:

  1. 配置管理
    • ZooKeeper可以用作分布式系统的配置信息管理中心。
    • 各个节点可以从ZooKeeper中获取配置信息,当配置发生变化时,所有节点可以及时感知并进行相应调整。
    • 这种机制使得分布式系统能够动态地响应配置变化,提高了系统的灵活性和可维护性。
  2. 命名服务
    • ZooKeeper提供了一种类似于分布式文件系统的命名服务。
    • 它允许应用程序在ZooKeeper上创建、删除和查找节点,从而实现简单的命名空间管理。
    • 通过ZooKeeper的命名服务,分布式系统中的各个节点可以方便地互相识别和通信。
  3. 分布式锁
    • ZooKeeper提供了分布式锁的支持,允许多个节点在共享资源上进行协调。
    • 通过ZooKeeper的分布式锁机制,可以避免并发访问冲突,确保数据的一致性和完整性。
  4. 分布式队列
    • ZooKeeper可以实现分布式队列,用于在多个节点之间传递消息和任务。
    • 通过ZooKeeper的队列服务,分布式系统可以实现高效的消息传递和任务调度。
  5. 分布式通知/Watcher机制
    • ZooKeeper的Watcher机制可以让客户端监视节点的变化。
    • 当节点状态发生变化时,ZooKeeper会触发相应的Watcher通知给客户端,从而实现分布式的事件触发和通知机制。
    • 这种机制使得分布式系统中的各个节点能够实时感知彼此的状态变化,从而进行相应的协调和处理。
  6. Leader选举
    • 在ZooKeeper集群中,ZAB(ZooKeeper Atomic Broadcast)协议用于选举Leader节点。
    • Leader节点负责处理所有客户端的写请求,并将更改广播给其他Follower节点。
    • 通过Leader选举机制,ZooKeeper能够确保在集群中的节点发生故障时,能够快速恢复服务并提供高可用性。
  7. 高性能和高可用性
    • ZooKeeper的设计目标之一就是提供高性能和高可用性。
    • 它通过内存存储和快速的数据访问机制来提供高性能的服务。
    • 同时,ZooKeeper的集群化设计和容错机制确保了系统的高可用性,即使在部分节点发生故障时,整个系统仍然能够继续提供服务。

总结来说,ZooKeeper是一个功能强大的分布式协调服务,它提供了配置管理、命名服务、分布式锁、分布式队列、分布式通知/Watcher机制以及Leader选举等功能。这些功能使得ZooKeeper成为构建分布式系统和服务的重要基础设施之一,并被广泛应用于各种分布式应用场景中。

3、Zookeeper 有几种部署模式? 

ZooKeeper有几种主要的部署模式,以下是对这些模式的清晰归纳:

  1. 单机模式(Standalone/单机部署)
    • 描述:在这种模式下,ZooKeeper运行在单台机器上,仅供学习和开发使用。
    • 特点:该模式下ZooKeeper集群只有一个服务器,无法实现数据备份和容错。如果服务器宕机,整个ZooKeeper服务将停止工作。
    • 适用场景:由于缺乏数据备份和容错能力,这种模式不适合生产环境。
  2. 集群模式(Cluster/集群部署)
    • 描述:集群模式是最常见的ZooKeeper部署方式。它通常包含奇数台服务器(如3、5、7台等),其中一些作为主服务器来处理客户端请求,其他服务器为从服务器进行数据备份和容错。
    • 特点:主服务器负责处理读写请求,并将更新信息广播给所有的从服务器。从服务器仅负责接收信息并进行数据备份。如果某一台主服务器出现故障,系统将会选举一个新的主服务器继续提供服务。
    • 适用场景:集群模式适用于大型、复杂的生产环境,因为它能够更好地应对高并发、高可用性和大规模数据等问题。
  3. 伪集群模式(Pseudo-Cluster/伪分布式部署)
    • 描述:伪集群模式是在一台物理机上运行多个ZooKeeper实例的部署方式。这种部署方式通过在一台机器上模拟多个ZooKeeper服务器来提供集群的功能。
    • 特点:虽然所有ZooKeeper实例都在同一台物理机上运行,但它们之间通过网络通信来模拟分布式环境。这种模式通常用于测试和开发环境,以模拟真实集群的行为。
    • 适用场景:伪集群模式适用于测试和开发环境,因为它可以在单台机器上模拟多节点集群的行为,而无需实际部署多个服务器。
  4. 服务代理模式(Service Proxy)
    • 描述:在这种模式下,ZooKeeper节点可以在不同的集群中使用。从ZooKeeper客户端应用程序的角度来看,这些集群是透明的,无论是位于同一台机器上还是不同的机器上。
    • 特点:所有的ZooKeeper集群需要有一个统一的配置文件,以确保它们能够相互通信。这种模式通常适用于小型或中型的环境。

需要注意的是,具体的部署模式应根据实际需求和环境来选择,同时也要考虑到安全、可用性、性能和可扩展性等因素。

 5、Zookeeper 怎么保证主从节点的状态同步?

zookeeper 的核心是原子广播,这个机制保证了各个 server 之间的同步。实现这个机制的协议叫做 zab 协议。 zab 协议有两种模式,分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,zab 就进入了恢复模式,当领导者被选举出来,且大多数 server 完成了和 leader 的状态同步以后,恢复模式就结束了。状态同步保证了 leader 和 server 具有相同的系统状态。

6、集群中为什么要有主节点?

在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,所以就需要主节点。

7、集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?

可以继续使用,单数服务器只要没超过一半的服务器宕机就可以继续使用。

8、说一下 zookeeper 的通知机制?

客户端会对某个 znode 建立一个 watcher 事件,当该 znode 发生变化时,这些客户端会收到 zookeeper 的通知,然后客户端可以根据 znode 变化来做出业务上的改变。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 控制台应用模板可生成顶级语句

C# 控制台应用模板可生成顶级语句 项目2024/01/0810 个参与者 反馈 本文内容 使用新的程序样式隐式 using 指令全局 using 指令使用旧程序样式 从 .NET 6 开始,新 C# 控制台应用的项目模板在 Program.cs 文件中生成以下代码: C#复制 // See https…

C++ prime 第五版 第14章 重载运算与类型转换

一、基本概念 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。 我们不能为内置类型的运算对象重定义运算符。对于一个运算符函数来说&…

某方protobuf闲谈

问题 当我们去看某方的时候,搜索了关键词svm,然后通过抓包查看,请求的Request Payload是一串看不懂的乱码,并且返回的数据也大部分是乱码 观察请求的Content-Type是application/grpc-web+proto,没错数据的传输是protobuf的形式了 protobuf的相关概念和原理,网上有很多教…

vulhub——Aria2、bash、catic

文章目录 一、Aria2 任意文件写入漏洞二、CVE-2014-6271(Bash Shell 漏洞)三、CVE-2022-46169(Cacti 前台命令注入漏洞) 一、Aria2 任意文件写入漏洞 Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP…

conda create,conda:未找到命令,ubantu添加环境变量,make工具是什么,docker工具什么,

目录 conda create -n flock_client python==3.11 conda:未找到命令,ubantu添加环境变量 添加conda到系统路径

docker-compose 搭建 单机版ELK

docker-compose 搭建 单机版ELK 前言 本次部署将使用ElasticSearch官方的镜像和Docker-Compose来创建单节点的ELK,用于学习ELK操作。在k8s集群内,如果每天的日志量超过20G以上,建议部署在k8s集群外部,以支持分布式集群的架构。在…

Flutter 中的 RepaintBoundary 小部件:全面指南

Flutter 中的 RepaintBoundary 小部件:全面指南 在Flutter的高性能渲染体系中,RepaintBoundary是一个重要的优化工具。它允许开发者将复杂的组件分割成独立的部分,以减少不必要的重绘,从而提高应用的性能。本文将提供RepaintBoun…

11|数据库编程:包括数据库的基本概念,JDBC的使用,数据库连接池的实现,Hibernate和MyBatis的应用等。

数据库基本概念 想象你有一个装满宝藏的箱子,里面放着各种宝贝,但这些宝贝都按照一定规则摆放。数据库就像是这样一个箱子,但它存放的是信息,比如姓名、年龄、电子邮件等。它帮我们有条理地管理数据,让我们可以方便地…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第26节-内嵌blender展厅

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第26节-内嵌blender展厅 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界…

python操作rabbitmq的consumer,并强制关闭特定consumer的连接

引入 python获取指定队列的consumer python可以使用rabbitmq_management的api获取所有consumer的信息。【队列需要安装rabbitmq_management,在大部分情况下,我们安装队列的同时,都会安装管理界面,以方便一些简单的手动操作与简单…

网络编程的基础知识(适合新手)

网络编程 在Java中,网络编程是指使用Java语言进行网络通信的编程技术。这种技术使得位于不同地理位置的计算机能够通过网络进行通信,实现资源共享和信息传递。 一、定义 Java网络编程是Java语言在网络通信方面的应用,它利用Java提供的网络…

位带操作 Bit-band

位带操作(Bit-banding)的特性是ARM Cortex-M微控制器中一个非常有用的功能,其目的是提供一种简便的方法来访问和操作存储器中单个位的状态。位带操作能够使程序员能够以原子操作(即不可中断的操作)的方式读取和写入单个…

Flutter 中的 DateRangePickerDialog 小部件:全面指南

Flutter 中的 DateRangePickerDialog 小部件:全面指南 在 Flutter 应用开发中,日期和时间的选择是一项常见的用户交互需求。DateRangePickerDialog 是一个方便的小部件,它提供了一个对话框界面,允许用户选择日期范围。这个小部件…

前端-全局样式

当我们有一个样式需要全局引用的时候,我们首先新建一个global.scss的样式文件,这里我举例一下 html, body {margin: 0;height: 100%;width: 100%;#app {height: 100%;} }然后在我们的main.ts 文件中 声明,这样的话我们整个项目都能用到这个样…

重开之数据结构(二刷)

引言: 由于前段时间学习效率不高,导致后面复习前面数据结构没有一个大纲,因此打算重新来学习以下数据结构,期望再次把数据结构学透,并有深刻的印象.并且记录每一次的学习记录 以便于后续复习 二分查找 需求:在有序数组arr内,查找target值 如果找到返回索引位置如果找不到返回…

c++(一)

c&#xff08;一&#xff09; C与C有什么区别命名空间使用 输入输出流引用指针和引用的区别定义拓展 函数重载例子测试函数重载原理 参数默认值什么是参数默认值注意 在c中如何引入c的库动态内存分配new、delete与malloc、free的区别&#xff1f; C与C有什么区别 <1>都是…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

【STM32】计算定时器的溢出

TIM2、3、4、5、12、13、14在APB1上&#xff0c;最大计数频率84M。 TIM1、8、9、10、11在APB2上&#xff0c;最大计数频率168M。 time(arr1)/(prescale1)/Tclk 算出来的是秒 下图使用TIM14 84MHz 那么time33600*25000/8400000010S&#xff0c;10S进入一次中断 中断方式开…

基于STM32+NBIOT(BC26)设计的物联网观赏鱼缸

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目模块组成 1.2 设计思路 二、(硬件控制端)硬件选型2.1 STM32开发板2.2 PCB板2.3 USB下载线2.4 NBIOT模块2.5 杜邦线&#xff08;2排&#xff09;2.6 稳压模块2.7 电源插头2.8 水温检测传感器2.9 水质检测…

三星HBM3/3E未通过英伟达测试标准

据报道&#xff0c;三星的最新HBM3与HBM3E内存堆栈在满足英伟达的热能和功耗要求方面遇到了困难。这些内存产品因过热及高功耗问题未能通过英伟达的测试&#xff0c;这对三星来说是一个重大挫折&#xff0c;尤其是考虑到英伟达在全球AI应用处理器市场占据主导地位。同时&#x…