众所周知,kafka的受欢迎程度在编程界也是数一数二的,并且Kafka也拥有强劲的就业机会和职业前景。此外,在互联网时代能够拥有Kafka知识对自己也是一条快速增长的道路。故,本文收集了一些一线互联网大厂常见的Kafka面试题,并提供了详细答案,希望能帮助到大家!
答:Apache Kafka是一个发布 - 订阅开源消息代理应用程序。这个消息传递应用程序是用“scala”编码的。基本上,这个项目是由Apache软件启动的。Kafka的设计模式主要基于事务日志设计。
答:Kafka最重要的元素是:
答:给分区中的消息提供了一个顺序ID号,我们称之为偏移量。因此,为了唯一地识别分区中的每条消息,我们使用这些偏移量。
答:消费者组的概念是Apache Kafka独有的。基本上,每个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。
答:Apache Kafka是一个使用Zookeeper构建的分布式系统。虽然,Zookeeper的主要作用是在集群中的不同节点之间建立协调。但是,如果任何节点失败,我们还使用Zookeeper从先前提交的偏移量中恢复,因为它做周期性提交偏移量工作。
答:绕过Zookeeper并直接连接到Kafka服务器是不可能的,所以答案是否定的。如果以某种方式,使ZooKeeper关闭,则无法为任何客户端请求提供服务。
答:Kafka有一些优点,因此使用起来很重要:
答:Apache Kafka有4个主要API:
答:Kafka消费者订阅一个主题,并读取和处理来自该主题的消息。此外,有了消费者组的名字,消费者就给自己贴上了标签。换句话说,在每个订阅使用者组中,发布到主题的每个记录都传递到一个使用者实例。确保使用者实例可能位于单独的进程或单独的计算机上。
答:在Kafka的每个分区中,都有一个服务器充当领导者,0到多个服务器充当追随者的角色。
答:由于领导者的主要角色是执行分区的所有读写请求的任务,而追随者被动地复制领导者。因此,在领导者失败时,其中一个追随者接管了领导者的角色。基本上,整个过程可确保服务器的负载平衡。
答:基本上,复制日志的节点列表就是副本。特别是对于特定的分区。但是,无论他们是否扮演领导者的角色,他们都是如此。
此外,ISR指的是同步副本。在定义ISR时,它是一组与领导者同步的消息副本。
答:由于复制,我们可以确保发布的消息不会丢失,并且可以在发生任何机器错误、程序错误或频繁的软件升级时使用。
答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。
答:初始化ZooKeeper服务器是非常重要的一步,因为Kafka使用ZooKeeper,所以启动Kafka服务器的过程是:
>bin/zooKeeper-server-start.sh config/zooKeeper.properties
>bin/kafka-server-start.sh config/server.properties
答:每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。
答:允许应用程序将记录流发布到一个或多个Kafka主题的API就是我们所说的Producer API。
答:Kafka和Flume之间的主要区别是:
答:毫无疑问,Kafka是一个流处理平台。它可以帮助:
答:它可以以多种方式执行,例如:
答:保留期限保留了Kafka群集中的所有已发布记录。它不会检查它们是否已被消耗。此外,可以通过使用保留期的配置设置来丢弃记录。而且,它可以释放一些空间。
答:Kafka可以接收的最大消息大小约为1000000字节。
答:基本上,传统的消息传递方法有两种,如:
答:ISR指的是同步副本。这些通常被分类为一组消息副本,它们被同步为领导者。
答:对于我们的集群,Kafka MirrorMaker提供地理复制。基本上,消息是通过MirrorMaker跨多个数据中心或云区域复制的。因此,它可以在主动/被动场景中用于备份和恢复;也可以将数据放在离用户更近的位置,或者支持数据位置要求。
答:我们可以轻松地将Kafka部署为多租户解决方案。但是,通过配置主题可以生成或使用数据,可以启用多租户。此外,它还为配额提供操作支持。
答:允许应用程序订阅一个或多个主题并处理生成给它们的记录流的API,我们称之为消费者API。
答:一种允许应用程序充当流处理器的API,它还使用一个或多个主题的输入流,并生成一个输出流到一个或多个输出主题,此外,有效地将输入流转换为输出流,我们称之为流API。
答:一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。
答:生产者的主要作用是将数据发布到他们选择的主题上。基本上,它的职责是选择要分配给主题内分区的记录。
答:Apache Kafka的另一个选择是RabbitMQ。那么,让我们比较两者:
答:让我们比较一下传统队列系统与Apache Kafka的功能:
答:为了克服收集大量数据和分析收集数据的挑战,我们需要一个消息队列系统。因此Apache Kafka应运而生。其好处是:
答:我们将日志视为分区。基本上,数据源将消息写入日志。其优点之一是,在任何时候,都有一个或多个消费者从他们选择的日志中读取数据。下面的图表显示,数据源正在写入一个日志,而用户正在以不同的偏移量读取该日志。
答:我们知道,在Kafka中,消息会保留相当长的时间。此外,消费者还可以根据自己的方便进行阅读。尽管如此,有一种可能的情况是,如果将Kafka配置为将消息保留24小时,并且消费者可能停机超过24小时,则消费者可能会丢失这些消息。但是,我们仍然可以从上次已知的偏移中读取这些消息,但仅限于消费者的部分停机时间仅为60分钟的情况。此外,关于消费者从一个话题中读到什么,Kafka不会保持状态。
答:因此,调优Apache Kafka的方法是调优它的几个组件:
答:Kafka的局限性是:
答:Apache Kafka的业务包括:
答:Apache Kafka有很多用例,例如:
答:Netflix,Mozilla,Oracle
答:Kafka流的一些最佳功能是
答:连续、实时、并发和以逐记录方式处理数据的类型,我们称之为Kafka流处理。
答:系统工具有三种类型:
答:为了增强持久性和更高的可用性,这里提供了复制工具。其类型为
答:为了满足Kafka标准的高处理速率需求,我们可以使用java语言。此外,对于Kafka的消费者客户,Java也提供了良好的社区支持。所以,我们可以说在Java中实现Kafka是一个正确的选择。
答:Kafka的最佳特性是“各种各样的用例”。
这意味着Kafka能够管理各种各样的用例,这些用例对于数据湖来说非常常见。例如日志聚合、Web活动跟踪等。
答:在设计Kafka系统时,考虑主题复制是非常重要的。
答:生产者向特定主题分区发送的消息的顺序相同。
一线互联网大厂,面试所考到的知识可不止Kafka,当然多拥有一个技术点,对自己的面试也是一件好事;那么针对Java成员,笔者整理了一套完整的已下线互联网企业面试专题;包含了Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务等架构技术
需要这份面试题的朋友关注下方公众号 即可领取完整的面试专题文件
以下是部分面试题截图