zoukankan      html  css  js  c++  java
  • Java最常见的面试题:模块十五和模块十六

    十五、Kafka

     

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

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

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

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

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

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

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

    • cpu 性能瓶颈

    • 磁盘读写瓶颈

    • 网络瓶颈

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

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

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

    十六、Zookeeper

    157. zookeeper 是什么?

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

    158. zookeeper 都有哪些功能?

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

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

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

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

    159. zookeeper 有几种部署模式?

    zookeeper 有三种部署模式:

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

    • 集群部署:多台集群运行;

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

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

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

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

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

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

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

    163. 说一下 zookeeper 的通知机制?

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

    (完)

  • 相关阅读:
    TPYBoard—MicroPython开发板免费试用!你最想抱走哪款?
    MicroPython最全资料集锦丨TPYBoard全系列教程之文档+例程源码
    MicroPython-GPRS教程之TPYBoardv702GPRS功能测试
    MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
    MicroPython之TPYBoard v102开发板控制OLED显示中文
    TPYBoard开发板ADC数模转换一: 初识ADC使用
    Set集合
    Collection接口和List集合
    在方法中抛出异常,使用throw关键字抛出异常
    捕捉异常和异常的使用原则
  • 原文地址:https://www.cnblogs.com/xiaofengwang/p/11258874.html
Copyright © 2011-2022 走看看