【大厂面试演练】知道ZooKeeper有什么应用场景吗

这篇具有很好参考价值的文章主要介绍了【大厂面试演练】知道ZooKeeper有什么应用场景吗。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【大厂面试演练】知道ZooKeeper有什么应用场景吗,ZooKeeper系列,zookeeper,分布式,面试,kafka,java

面试官:咳咳咳,看你简历写了精通ZooKeeper,那我就随便考考你吧


面试官:不用慌尽管说,错了也没关系😊。。。


每日分享大厂面试演练,感兴趣就关注我吧❤️

面试官:知道ZooKeeper有什么应用场景吗

嗯嗯,主要有这几种。

  1. 数据发布/订阅。可以用来实现配置中心

  2. 命名服务。类似于UUID,可以生成全局唯一的ID

  3. 集群管理。每一个服务器是一个子节点,可以用来检测到集群中机器的上/下线情况

  4. 分布式锁


面试官思考中…


面试官:你挑一个你比较熟悉的场景讲讲

嗯嗯好的,那我讲下分布式锁。

是这样的,ZooKeep的获取锁时会在/exclusive_lock节点下创建子节点,如果创建成功则获得锁。如果失败,则客户端会在该节点注册一个子节点变更的Watcher监听

同样,释放锁则删除该子节点,此时Watcher监听就会通知客户端可以重新获取了。

【大厂面试演练】知道ZooKeeper有什么应用场景吗,ZooKeeper系列,zookeeper,分布式,面试,kafka,java


面试官思考中…


面试官:你说的是排他锁,共享锁呢

好的面试官。共享锁也是类似的场景。

每次读、写请求同样是创建子节点,是一个类似于“/shared_lock/[Hostname]-请求类型-序号”的临时顺序节点。

接着会获取子节点列表,同时注册Watcher监听

  1. 获取读锁的话,如果前面比自己小的序号没有写请求,则可以读
  2. 获取写锁的话,只有在自己是序号最小的情况下,才可以读

而共享锁的释放锁和排他锁都是一样的

【大厂面试演练】知道ZooKeeper有什么应用场景吗,ZooKeeper系列,zookeeper,分布式,面试,kafka,java

面试官:emmmm有没听说过共享锁的羊群效应

噢噢知道的面试官,这个问题主要是出现在集群规模比较大的场景下。

其实共享锁的特别之处,在于每次读、写请求都要注册Watcher监听来获取子节点列表,特别是数量更多的读请求。

子节点列表每次变动都要通知所有的服务器客户端,造成了短时间大量的事件通知,给ZooKeeper带来很大性能消耗。


面试官思考中…


面试官:那怎么解决呢

我认为要两方面来看吧。

首先我上面说的共享锁实现方式如果在集群不大的情况下是可行的,而且他实现简单实用。而如果在集群规模大的场景下,可以这样改进

读、写请求首先获取子节点列表,但都不注册Watcher监听

  • 读请求:只向比自己序号小的最后一个写请求节点注册Watcher监听
  • 写请求:只向比自己序号小的最后一个节点注册Watcher监听

这样就可以避免羊群效应,主要是从监听子节点列表,改进为只监听某个子节点


面试官心想,还不错嘛…


面试官:Kafka应用场景呢,知道Kafka是怎么利用ZooKeeper吗

嗯嗯好的,我了解到的主要有3方面。

  1. 使用ZooKeeper来对所有Broker服务器、Topic进行管理

    Broker启动后都会到ZooKeeper上创建属于自己的临时节点,其节点路径为/broker/ids/[0…N],注册Topic节点也是一样。

  2. 另外在Kafka生产者负载均衡方面

    Kafka消息生产者会通过监听Broker节点列表,负载均衡地分发到某一个Broker。

  3. 而在Kafka防消费重复消费方面

    消费者消费消息后,都会在消息分区写入临时节点,代表该消息已消费。


面试官思考中…


面试官:你刚刚说到Kafka生产者负载均衡,那消费者负载均衡知道吗

哦哦说欠了,消费者负载均衡有两方面。

  • 一方面,每一个消费者服务器都会在ZooKeeper创建消费者节点。当有新消息时,Kafka就可以通过ZooKeeper的消费者节点列表负载均衡地通知某个消费者
  • 另一方面,Kafa将一个Topic分成了多个分区,多个分区由不同的Brocker处理,这是实现对Brocker的负载均衡

【大厂面试演练】知道ZooKeeper有什么应用场景吗,ZooKeeper系列,zookeeper,分布式,面试,kafka,java

面试官抓抓脑袋,继续看你的简历…


得想想考点你不懂的😰

未完待续。。。。。。

好了,今天的分享就先到这,我们下期继续。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️文章来源地址https://www.toymoban.com/news/detail-839989.html

到了这里,关于【大厂面试演练】知道ZooKeeper有什么应用场景吗的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 国内各大厂ChatGPT技术布局及应用场景

    2023年无疑会是 AIGC 掀起浪潮的一年,自从微软投资的OpenAI 研究室发布了神仙级别的自然语言生成式AI——chatGPT之后, 人工智能领域也算是被彻底“杀疯了” 。 ​有人说,它诞生的意义不亚于Stable Diffusion等AI绘画生成模型的出现,也有人称它相当于AI界的 “IPhone” 。 虽然

    2024年02月03日
    浏览(26)
  • 大厂面试题-什么是JVM

    JVM 全 称 是Java虚拟机,在聊什么是JVM之前,我们不妨看⼀下这张图。 从这张图中可以看出JVM所处的位置,同时也能看出它两个作用:     1、运⾏并管理 Java 源码⽂件所⽣ 成的Class⽂件,     2、在不同的操作系统上安装不同的 JVM ,从⽽实现了跨 平台的保证。 ⼀般情况下,

    2024年02月07日
    浏览(35)
  • mysql面试题30:什么是数据库连接池、应用程序和数据库建立连接的过程、为什么需要数据库连接池、你知道哪些数据库连接池

    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 数据库连接池是一种用于管理和复用数据库连接的技术。它是在应用程序和数据库之间建立一组数据库连接,并以池的形式存储起来,每当应用程序需

    2024年02月07日
    浏览(44)
  • 【ZooKeeper】ZooKeeper 应用场景

    ZooKeeper:分布式协调服务,仲裁机构。基于ZNode数据模型和Watcher监听机制可以解决很多问题,比如分布式锁问题。 应用场景如下: 1、发布/订阅 2、命名服务 3、配置管理 4、集群管理 5、分布式锁 6、队列管理 7、负载均衡 应用服务器集群可能存在两个问题: 1、集群中有很多

    2024年02月04日
    浏览(29)
  • 大厂面试题-JVM中的三色标记法是什么?

    目录 问题分析 问题答案 三色标记法是 Java 虚拟机 (JVM)中垃圾回收算法的一种,主要用来标记内存中存活和 需要回收的对象。 它的好处是,可以让 JVM 不发生或仅短 时间发生STW(Stop The World),从而达到清 除 JVM 内 存垃圾的目的 , JVM中的「CMS、G1垃圾回收器」都用到了三色标

    2024年02月07日
    浏览(31)
  • 【zookeeper】ZooKeeper的特点及应用场景

    ZooKeeper(动物园管理员) ,顾名思义,是用来管理Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员,同时Apache HBase、Apache Solr等众多项目中都采用了ZooKeeper。作为一个集群提供数据一致的分布式协调服务,它最好的方式就是在整个集群中的各服务节点进行数据的复制和同步

    2024年02月09日
    浏览(29)
  • Zookeeper是什么,它有什么特性与使用场景?

    ZooKeeper 是一种开源的分布式协调服务,由雅虎公司开发。它可以帮助分布式应用程序实现数据同步、配置管理、命名服务等功能,并具有高可用性、可靠性和可扩展性等特性。本文将对 ZooKeeper 的定义、特性和使用场景进行详细介绍。 ZooKeeper 是一种分布式协调服务,主要用

    2024年02月11日
    浏览(29)
  • 【Zookeeper专题】Zookeeper经典应用场景实战(一)

    在学习本节课之前,至少需要掌握Zookeeper的节点特性,以及基本操作。 《【Zookeeper专题】Zookeeper特性与节点数据类型详解》 Zookeeper的客户端有很多,这边主要介绍的是两种: Zookeeper官方的Java客户端API 第三方的Java客户端API,Curator ZooKeeper官方的客户端API提供了基本的操作,

    2024年02月08日
    浏览(34)
  • Zookeeper的应用场景

    配置中心:Zookeeper可以用来存储和管理配置信息,例如集群中的机器配置、服务地址配置等。通过Zookeeper,可以将配置信息统一管理,同时实现动态加载和更新。 统一命名服务:Zookeeper可以用来实现命名服务,例如将集群中的机器名称和IP地址进行映射,或者将服务的唯一标

    2024年02月15日
    浏览(25)
  • zookeeper应用场景(二)

    单机环境下可以利用jvm级别的锁,比如synchronized、Lock等来实现锁,如果是多机部署就需要一个共享数据存储区域来实现分布式锁 1、基于数据库实现分布式锁 可以用数据库唯一索引来实现 2、基于redis实现分布式锁 redis实现的分布式锁始终会有一些问题,即便使用多数写入,

    2024年02月07日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包