• Zookeeper 和 Kafka 面试题


    zookeeper 是什么?

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

    zookeeper 都有哪些功能?

    • 集群管理:监控节点存活状态、运行请求等。

    • 主节点选举:主节点挂掉了之后可以从备用的节点开始新一轮选主,主节点选举说的就是这个选举的过程,使用 zookeeper 可以协助完成这个过程。

    • 分布式锁:zookeeper 提供两种锁:独占锁、共享锁。独占锁即一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多线线程同时读同一个资源,如果要使用写锁也只能有一个线程使用。zookeeper可以对分布式锁进行控制。

    • 命名服务:在分布式系统中,通过使用命名服务,客户端应用能够根据指定名字来获取资源或服务的地址,提供者等信息。

    zookeeper 有几种部署模式?

            zookeeper 有三种部署模式:

    1. 单机部署:一台集群上运行;

    2. 集群部署:多台集群运行;

    3. 伪集群部署:一台集群启动多个 zookeeper 实例运行。

    zookeeper 怎么保证主从节点的状态同步?

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

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

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

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

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

    说一下 zookeeper 的通知机制?

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

    什么是 Kafaka?

           Apache kafka is a distributed streaming platform,即官方定义 kafka 是一个分布式流式计算平台。而在大部分企业开发人员中,都是把 kafka 当成消息系统使用,即它是一个分布式消息队列,很少会使用 kafka 的流式计算。它有四个关键概念:

    • topic  kafka 把收到的消息按 topic 进行分类,因此可以理解为 topic 是一种类别
    • producer 往 kafka 发送消息的用户
    • consumer    接收 kafka 消息的用户
    • borker   afka 集群可以由多个 kafka 实例组成,每个实例(server)称为 broker

           无论是 kafka broker 本身,还是 producer 或者 consumer,都依赖于 zookeeper 集群保存一些 meta 信息,保证系统可用性,以及使用 zookeeper 的选举机制。

    kafka 可以脱离 zookeeper 单独使用吗?为什么?

            kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。

    kafka 有几种数据保留的策略?

            kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。

    kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?

           这个时候 kafka 会执行数据清除工作,时间和大小不论那个满足条件,都会清空数据。

    什么情况会导致 kafka 运行变慢?

    • cpu 性能瓶颈

    • 磁盘读写瓶颈

    • 网络瓶颈

    使用 kafka 集群需要注意什么?

    • 集群的数量不是越多越好,最好不要超过 7 个,因为节点越多,消息复制需要的时间就越长,整个群组的吞吐量就越低。

    • 集群数量最好是单数,因为超过一半故障集群就不能用了,设置为单数容错率更高。

  • 相关阅读:
    基于Spring AOP和CGLIB代理实现引介增强(Introduction Advice)示例
    0401hive入门-hadoop-大数据学习.md
    拥抱 Spring 全新 OAuth 解决方案
    npm安装依赖报错npm ERR! code ENOTFOUNDnpm ERR! syscall getaddrinfo
    LabVIEW使用Deskto pExecution Trace工具包
    Java Web——JS中的BOM
    [YOLOv8单机多卡GPU问题解决]
    平均风向风速计算(单位矢量法)
    docker 启动关闭,设置仓库地址
    一文读懂什么是硬件开发、智能硬件、硬件系统?
  • 原文地址:https://blog.csdn.net/qq_15700115/article/details/126164448