1. 常见Kafka面试题(21)

  • 问题1:**什么是kafka?**

    答:Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。

  • 问题2:**为什么要使用 kafka,为什么要使用消息队列?**

    • 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。
    • 解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。
    • 冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。
    • 健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。
    • 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
  • 问题3:**Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?**

    答:ISR:In-Sync Replicas 副本同步队列;AR:Assigned Replicas 所有副本。ISR是由leader维护,follower从leader同步数据有一些延迟(包括延迟时间replica.lag.time.max.ms和延迟条数replica.lag.max.messages两个维度, 当前最新的版本0.10.x中只支持replica.lag.time.max.ms这个维度),任意一个超过阈值都会把follower剔除出ISR, 存入OSR(Outof-Sync Replicas)列表,新加入的follower也会先存放在OSR中。AR=ISR+OSR。

  • 问题4:**kafka中的broker 是干什么的?**

    答:broker是消息的代理,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。

  • 问题5:**kafka中的 zookeeper 起到什么作用,可以不用zookeeper么?**

    答:ZooKeeper 是一个分布式的协调组件,早期版本的kafka用zk做meta信息存储,consumer的消费状态,group的管理以及 offset的值。考虑到zk本身的一些因素以及整个架构较大概率存在单点问题,新版本中逐渐弱化了zookeeper的作用。新的consumer使用了kafka内部的group coordination协议,也减少了对zookeeper的依赖,但是broker依然依赖于ZK,zookeeper 在kafka中还用来选举controller 和 检测broker是否存活等等。

  • 问题6:**kafka follower如何与leader同步数据?**

    答:Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制。完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率。而异步复制方式下,Follower异步的从Leader复制数据,数据只要被Leader写入log就被认为已经commit,这种情况下,如果leader挂掉,会丢失数据,kafka使用ISR的方式很好的均衡了确保数据不丢失以及吞吐率。Follower可以批量的从Leader复制数据,而且Leader充分利用磁盘顺序读以及send file(zero copy)机制,这样极大的提高复制性能,内部批量写磁盘,大幅减少了Follower与Leader的消息量差。

  • 问题7:**什么情况下一个broker会从ISR中踢出去?**

    答:leader会维护一个与其基本保持同步的Replica列表,该列表称为ISR(in-sync Replica),每个Partition都会有一个ISR,而且是由leader动态维护 ,如果一个follower比一个leader落后太多,或者超过一定时间未发起数据复制请求,则leader将其重ISR中移除 。

  • 问题8:kafka为什么那么快?

    • Cache Filesystem Cache PageCache缓存
    • 顺序写 由于现代的操作系统提供了预读和写技术,磁盘的顺序写大多数情况下比随机写内存还要快。
    • Zero-copy 零拷技术减少拷贝次数
    • Batching of Messages 批量量处理。合并小的请求,然后以流的方式进行交互,直顶网络上限。
    • Pull 拉模式 使用拉模式进行消息的获取消费,与消费端处理能力相符。
  • 问题9:**kafka producer如何优化打入速度?**

    • 增加线程
    • 提高 batch.size
    • 增加更多 producer 实例
    • 增加 partition 数
    • 设置 acks=-1 时,如果延迟增大:可以增大 num.replica.fetchers(follower 同步数据的线程数)来调解;
    • 跨数据中心的传输:增加 socket 缓冲区设置以及 OS tcp 缓冲区设置。
  • 问题10:**kafka producer生成数据时,ack为 0、1、-1 的时候代表啥, 设置-1的时候,什么情况下,leader会认为一条消息commit了?**

    1. 1(默认) 数据发送到Kafka后,经过leader成功接收消息的的确认,就算是发送成功了。在这种情况下,如果leader宕机了,则会丢失数据。
    2. 0 生产者将数据发送出去就不管了,不去等待任何返回。这种情况下数据传输效率最高,但是数据可靠性确是最低的。
    3. -1 producer需要等待ISR中的所有follower都确认接收到数据后才算一次发送完成,可靠性最高。当ISR中所有Replica都向Leader发送ACK时,leader才commit,这时候producer才能认为一个请求中的消息都commit了。
  • 问题11:K**afka unclean配置代表啥,会对Spark Streaming消费有什么影响?**

    答:unclean.leader.election.enable 为true的话,意味着非ISR集合的broker 也可以参与选举,这样有可能就会丢数据,spark streaming在消费过程中拿到的 end offset 会突然变小,导致 spark streaming job挂掉。如果unclean.leader.election.enable参数设置为true,就有可能发生数据丢失和数据不一致的情况,Kafka的可靠性就会降低;而如果unclean.leader.election.enable参数设置为false,Kafka的可用性就会降低。

  • 问题12:**如果leader crash时,ISR为空怎么办?**

    答:kafka在Broker端提供了一个配置参数:unclean.leader.election,这个参数有两个值: true(默认):允许不同步副本成为leader,由于不同步副本的消息较为滞后,此时成为leader,可能会出现消息不一致的情况。false:不允许不同步副本成为leader,此时如果发生ISR列表为空,会一直等待旧leader恢复,降低了可用性。

  • 问题13:K**afka的message格式是什么样的?**

    答:一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成 header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。 当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性, 比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性 body是由N个字节构成的一个消息体,包含了具体的key/value消息

  • 问题14:K**afka中consumer group是什么概念?**

    答:同样是逻辑上的概念,是Kafka实现单播和广播两种消息模型的手段。同一个topic的数据,会广播给不同的group;同一个group中的worker,只有一个worker能拿到这个数据。换句话说,对于同一个topic,每个group都可以拿到同样的所有数据,但是数据进入group后只能被其中的一个worker消费。group内的worker可以使用多线程或多进程来实现,也可以将进程分散在多台机器上,worker的数量通常不超过partition的数量,且二者最好保持整数倍关系,因为Kafka在设计时假定了一个partition只能被一个worker消费(同一group内)。

  • 问题15:**Kafka中的消息是否会丢失和重复消费?**

    答:要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费。

    1. 消息发送

    Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置。Kafka通过配置request.required.acks属性来确认消息的生产:

    1. 0:表示不进行消息接收是否成功的确认;
    2. 1:表示当Leader接收成功时确认;
    3. -1:表示Leader和Follower都接收成功时确认;

    综上所述,有6种消息生产的情况,下面分情况来分析消息丢失的场景: (1)acks=0,不和Kafka集群进行消息接收确认,则当网络异常、缓冲区满了等情况时,消息可能丢失; (2)acks=1、同步模式下,只有Leader确认接收成功后但挂掉了,副本没有同步,数据可能丢失

    1. 消息消费

    Kafka消息消费有两个consumer接口,Low-level API和High-level API:

    1. Low-level API:消费者自己维护offset等值,可以实现对Kafka的完全控制;
    2. High-level API:封装了对parition和offset的管理,使用简单;

    如果使用高级接口High-level API,可能存在一个问题就是当消息消费者从集群中把消息取出来、并提交了新的消息offset值后,还没来得及消费就挂掉了,那么下次再消费时之前没消费成功的消息就“诡异”的消失了; 解决办法

    1. 针对消息丢失:同步模式下,确认机制设置为-1,即让消息写入LeaderFollower之后再确认消息发送成功;异步模式下,为防止缓冲区满,可以在配置文件设置不限制阻塞超时时间,当缓冲区满时让生产者一直处于阻塞状态;
    2. 针对消息重复:将消息的唯一标识保存到外部介质中,每次消费时判断是否处理过即可。

    消息重复消费及解决参考:https://www.javazhiyin.com/22910.html

  • 问题16:**为什么Kafka不支持读写分离?**

    答:在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leader 副本进行交互的,从 而实现的是一种主写主读的生产消费模型。Kafka并不支持主写从读,因为主写从读有2个很明 显的缺点:

    1. 数据一致性问题。数据从主节点转到从节点必然会有一个延时的时间窗口,这个时间 窗口会导致主从节点之间的数据不一致。某一时刻,在主节点和从节点中 A 数据的值都为 X, 之后将主节点中 A 的值修改为 Y,那么在这个变更通知到从节点之前,应用读取从节点中的 A 数据的值并不为最新的 Y,由此便产生了数据不一致的问题。
    2. 延时问题。类似 Redis 这种组件,数据从写入主节点到同步至从节点中的过程需要经 历网络→主节点内存→网络→从节点内存这几个阶段,整个过程会耗费一定的时间。而在 Kafka 中,主从同步会比 Redis 更加耗时,它需要经历网络→主节点内存→主节点磁盘→网络→从节 点内存→从节点磁盘这几个阶段。对延时敏感的应用而言,主写从读的功能并不太适用。
  • 问题17:**Kafka中是怎么体现消息顺序性的?**

    答:kafka每个partition中的消息在写入时都是有序的,消费时,每个partition只能被每一个group中的一个消费者消费,保证了消费时也是有序的。整个topic不保证有序。如果为了保证topic整个有序,那么将partition调整为1。

  • 问题18:**消费者提交消费位移时提交的是当前消费到的最新消息的offset还是offset+1?**

    offset+1

  • 问题19:**kafka如何实现延迟队列?**

    答:Kafka并没有使用JDK自带的Timer或者DelayQueue来实现延迟的功能,而是基于时间轮自定义了一个用于实现延迟功能的定时器(SystemTimer)。JDK的Timer和DelayQueue插入和删除操作的平均时间复杂度为O(nlog(n)),并不能满足Kafka的高性能要求,而基于时间轮可以将插入和删除操作的时间复杂度都降为O(1)。时间轮的应用并非Kafka独有,其应用场景还有很多,在Netty、Akka、Quartz、Zookeeper等组件中都存在时间轮的踪影。

    1. 底层使用数组实现,数组中的每个元素可以存放一个TimerTaskList对象。TimerTaskList是一个环形双向链表,在其中的链表项TimerTaskEntry中封装了真正的定时任务TimerTask
    2. Kafka中到底是怎么推进时间的呢?Kafka中的定时器借助了JDK中的DelayQueue来协助推进时间轮。具体做法是对于每个使用到的TimerTaskList都会加入到DelayQueue中。**Kafka中的TimingWheel专门用来执行插入和删除TimerTaskEntry的操作,而DelayQueue专门负责时间推进的任务**。再试想一下,DelayQueue中的第一个超时任务列表的expiration200ms,第二个超时任务为840ms,这里获取DelayQueue的队头只需要O(1)的时间复杂度。如果采用每秒定时推进,那么获取到第一个超时的任务列表时执行的200次推进中有199次属于“空推进”,而获取到第二个超时任务时有需要执行639次“空推进”,这样会无故空耗机器的性能资源,这里采用DelayQueue来辅助以少量空间换时间,从而做到了“精准推进”。Kafka中的定时器真可谓是“知人善用”,用TimingWheel做最擅长的任务添加和删除操作,而用DelayQueue做最擅长的时间推进工作,相辅相成。
    3. 参考:[https://blog.csdn.net/u013256816/article/details/80697456](https://blog.csdn.net/u013256816/article/details/80697456)
  • 问题20:**Kafka中的事务是怎么实现的?**

    参考:https://blog.csdn.net/u013256816/article/details/89135417

  • 问题21:**Kafka中有那些地方需要选举?这些地方的选举策略又有哪些?**

    参考:https://blog.csdn.net/yanshu2012/article/details/54894629

2. 最佳Kafka面试问题和解答(9)

  • 问题1:什么是Apache Kafka?

    答:Apache Kafka是一个发布 - 订阅开源消息代理应用程序。这个消息传递应用程序是用“scala”编码的。基本上,这个项目是由Apache软件启动的。Kafka的设计模式主要基于事务日志设计。

  • 问题2:Kafka中有哪几个组件?

    答:Kafka最重要的元素是:

    • 主题(Topic):Kafka主题是一堆或一组消息。
    • 生产者(Producer):在Kafka,生产者发布通信以及向Kafka主题发布消息。
    • 消费者(Consumer):Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。
    • 经纪人(Brokers):在管理主题中的消息存储时,我们使用Kafka Brokers。
  • 问题3:解释偏移的作用。

    答:给分区中的消息提供了一个顺序ID号,我们称之为偏移量。因此,为了唯一地识别分区中的每条消息,我们使用这些偏移量。

  • 问题4:什么是消费者组?

    答:消费者组的概念是Apache Kafka独有的。基本上,每个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。

  • 问题5:ZooKeeper在Kafka中的作用是什么?

    答:Apache Kafka是一个使用Zookeeper构建的分布式系统。虽然,Zookeeper的主要作用是在集群中的不同节点之间建立协调。但是,如果任何节点失败,我们还使用Zookeeper从先前提交的偏移量中恢复,因为它做周期性提交偏移量工作。

  • 问题6:没有ZooKeeper可以使用Kafka吗?

    答:绕过Zookeeper并直接连接到Kafka服务器是不可能的,所以答案是否定的。如果以某种方式,使ZooKeeper关闭,则无法为任何客户端请求提供服务。

  • 问题7:为什么Kafka技术很重要?

    答:Kafka有一些优点,因此使用起来很重要:

    • 高吞吐量(High-Throughput):我们在Kafka中不需要任何大型硬件,因为它能够处理高速和大容量数据。此外,它还可以支持每秒数千条消息的消息吞吐量。
    • 低延迟(Low Latency):Kafka可以轻松处理这些消息,具有毫秒级的极低延迟,这是大多数新用例所要求的。
    • 容错(Fault-Tolerant):Kafka能够抵抗集群中的节点/机器故障。
    • 耐久性(Durability):由于Kafka支持消息复制,因此消息永远不会丢失。这是耐久性背后的原因之一。
    • 可扩展性(Scalability):卡夫卡可以扩展,而不需要通过添加额外的节点而在运行中造成任何停机。
  • 问题8:Kafka的主要API有哪些?

    答:Apache Kafka有4个主要API:

    • 生产者API
    • 消费者API
    • 流API
    • 连接器API
  • 问题9:什么是消费者或用户?

    答:Kafka消费者订阅一个主题,并读取和处理来自该主题的消息。此外,有了消费者组的名字,消费者就给自己贴上了标签。换句话说,在每个订阅使用者组中,发布到主题的每个记录都传递到一个使用者实例。确保使用者实例可能位于单独的进程或单独的计算机上。

3. 比较棘手的Kafka面试问题和解答(10)

  • 问题1:解释领导者和追随者的概念。

    答:在Kafka的每个分区中,都有一个服务器充当领导者,0到多个服务器充当追随者的角色。

  • 问题2:是什么确保了Kafka中服务器的负载平衡?

    答:由于领导者的主要角色是执行分区的所有读写请求的任务,而追随者被动地复制领导者。因此,在领导者失败时,其中一个追随者接管了领导者的角色。基本上,整个过程可确保服务器的负载平衡。

  • 问题3:副本和ISR扮演什么角色?

    答:基本上,复制日志的节点列表就是副本。特别是对于特定的分区。但是,无论他们是否扮演领导者的角色,他们都是如此。此外,ISR指的是同步副本。在定义ISR时,它是一组与领导者同步的消息副本。

  • 问题4:为什么Kafka的复制至关重要?

    答:由于复制,我们可以确保发布的消息不会丢失,并且可以在发生任何机器错误、程序错误或频繁的软件升级时使用。

  • 问题5:如果副本长时间不在ISR中,这意味着什么?

    答:简单地说,这意味着跟随者不能像领导者收集数据那样快速地获取数据。

  • 问题6:启动Kafka服务器的过程是什么?

    答:初始化ZooKeeper服务器是非常重要的一步,因为Kafka使用ZooKeeper,所以启动Kafka服务器的过程是:要启动ZooKeeper服务器:$ bin/zooKeeper-server-start.sh config/zooKeeper.properties接下来,启动Kafka服务器:$ bin/kafka-server-start.sh config/server.properties。

  • 问题7:在生产者中,何时发生QueueFullException?

    答:每当Kafka生产者试图以代理的身份在当时无法处理的速度发送消息时,通常都会发生QueueFullException。但是,为了协作处理增加的负载,用户需要添加足够的代理,因为生产者不会阻止。

  • 问题8:解释Kafka Producer API的作用。

    答:允许应用程序将记录流发布到一个或多个Kafka主题的API就是我们所说的Producer API。

  • 问题9:Kafka和Flume之间的主要区别是什么?

    答:Kafka和Flume之间的主要区别是: 工具类型:Kafka是面向多个生产商和消费者的通用工具;Flume被认为是特定应用程序的专用工具。 复制功能:Kafka可以复制事件;Flume不能复制事件。

  • 问题10:Apache Kafka是分布式流处理平台吗?如果是,你能用它做什么?

    答:毫无疑问,Kafka是一个流处理平台。它可以帮助:

    1. 轻松推送记录。
    2. 可以存储大量记录,而不会出现任何存储问题。
    3. 它还可以在记录进入时对其进行处理。

4. 高级Kafka面试问题和解答(20)

  • 问题1:你能用Kafka做什么?

    答:它可以以多种方式执行,例如:为了在两个系统之间传输数据,我们可以用它构建实时的数据流管道。另外,我们可以用Kafka构建一个实时流处理平台,它可以对数据快速做出反应。

  • 问题2:在Kafka集群中保留期的目的是什么?

    答:保留期限保留了Kafka群集中的所有已发布记录。它不会检查它们是否已被消耗。此外,可以通过使用保留期的配置设置来丢弃记录。而且,它可以释放一些空间。

  • 问题3:解释Kafka可以接收的消息最大为多少?

    答:Kafka可以接收的最大消息大小约为1000000字节。

  • 问题4:传统的消息传递方法有哪些类型?

    答:基本上,传统的消息传递方法有两种,如:

    • 排队:这是一种消费者池可以从服务器读取消息并且每条消息转到其中一个消息的方法。
    • 发布-订阅:在发布-订阅中,消息被广播给所有消费者。
  • 问题5:ISR在Kafka环境中代表什么?

    答:ISR指的是同步副本。这些通常被分类为一组消息副本,它们被同步为领导者。

  • 问题6:什么是Kafka中的地域复制?

    答:对于我们的集群,Kafka MirrorMaker提供地理复制。基本上,消息是通过MirrorMaker跨多个数据中心或云区域复制的。因此,它可以在主动/被动场景中用于备份和恢复;也可以将数据放在离用户更近的位置,或者支持数据位置要求。

  • 问题7:解释多租户是什么?

    答:我们可以轻松地将Kafka部署为多租户解决方案。但是,通过配置主题可以生成或使用数据,可以启用多租户。此外,它还为配额提供操作支持。

  • 问题8:消费者API的作用是什么?

    答:允许应用程序订阅一个或多个主题并处理生成给它们的记录流的API,我们称之为消费者API。

  • 问题9:解释流API的作用?

    答:一种允许应用程序充当流处理器的API,它还使用一个或多个主题的输入流,并生成一个输出流到一个或多个输出主题,此外,有效地将输入流转换为输出流,我们称之为流API。

  • 问题10:连接器API的作用是什么?

    答:一个允许运行和构建可重用的生产者或消费者的API,将Kafka主题连接到现有的应用程序或数据系统,我们称之为连接器API。

  • 问题11:解释生产者是什么?

    答:生产者的主要作用是将数据发布到他们选择的主题上。基本上,它的职责是选择要分配给主题内分区的记录。

  • 问题12:比较RabbitMQ与Apache Kafka

    答:Apache Kafka的另一个选择是RabbitMQ。那么,让我们比较两者:

    • 功能:Kafka是分布式的、持久的和高度可用的,这里共享和复制数据RabbitMQ中没有此类功能。
    • 性能速度:Kafka达到每秒100000条消息;RabbitMQ每秒20000条消息。
  • 问题13:比较传统队列系统与Apache Kafka

    答:让我们比较一下传统队列系统与Apache Kafka的功能:

    • 消息保留:传统的队列系统通常从队列末尾处理完成后删除消息。Kafka中,消息即使在处理后仍然存在。这意味着Kafka中的消息不会因消费者收到消息而被删除。
    • 基于逻辑的处理:传统队列系统不允许基于类似消息或事件处理逻辑。Kafka允许基于类似消息或事件处理逻辑。
  • 问题14:为什么要使用Apache Kafka集群?

    答:为了克服收集大量数据和分析收集数据的挑战,我们需要一个消息队列系统。因此Apache Kafka应运而生。其好处是:只需存储/发送事件以进行实时处理,就可以跟踪Web活动。通过这一点,我们可以发出警报并报告操作指标。此外,我们可以将数据转换为标准格式。此外,它允许对主题的流数据进行连续处理。由于它的广泛使用,它秒杀了竞品,如ActiveMQ,RabbitMQ等。

  • 问题15:解释术语“Log Anatomy”

    答:我们将日志视为分区。基本上,数据源将消息写入日志。其优点之一是,在任何时候,都有一个或多个消费者从他们选择的日志中读取数据。下面的图表显示,数据源正在写入一个日志,而用户正在以不同的偏移量读取该日志。

image.png

  • 问题16:Kafka中的数据日志是什么?

    答:我们知道,在Kafka中,消息会保留相当长的时间。此外,消费者还可以根据自己的方便进行阅读。尽管如此,有一种可能的情况是,如果将Kafka配置为将消息保留24小时,并且消费者可能停机超过24小时,则消费者可能会丢失这些消息。但是,我们仍然可以从上次已知的偏移中读取这些消息,但仅限于消费者的部分停机时间仅为60分钟的情况。此外,关于消费者从一个话题中读到什么,Kafka不会保持状态。

  • 问题17:解释如何调整Kafka以获得最佳性能。

    答:因此,调优Apache Kafka的方法是调优它的几个组件:

    1. 调整Kafka生产者。
    2. Kafka代理调优。
    3. 调整Kafka消费者。
  • 问题18:Apache Kafka的缺陷

    答:Kafka的局限性是:

    1. 没有完整的监控工具集。
    2. 消息调整的问题。
    3. 不支持通配符主题选择。
    4. 速度问题。
  • 问题19:列出所有Apache Kafka业务

    答:Apache Kafka的业务包括:

    • 添加和删除Kafka主题
    • 如何修改Kafka主题
    • 如何在Kafka集群之间镜像数据找到消费者的位置
    • 扩展Kafka群集
    • 自动迁移数据
    • 退出服务器
    • 数据中心。
  • 问题20:解释Apache Kafka用例?

image.png

答:Apache Kafka有很多用例,例如:

  • Kafka指标:可以使用Kafka进行操作监测数据。此外,为了生成操作数据的集中提要,它涉及到从分布式应用程序聚合统计信息。
  • Kafka日志聚合:从组织中的多个服务收集日志。
  • 流式计算:流处理在流处理过程中,Kafka的强耐久性非常有用。

5. 基于特征的Kafka面试问题和解答(10)

  • 问题1:Kafka的一些最显著的应用。

    答:Netflix,Mozilla,Oracle。

  • 问题2:Kafka流的特点。

    答:Kafka流的一些最佳功能是Kafka Streams具有高度可扩展性和容错性。Kafka部署到容器、VM、裸机、云。我们可以说,Kafka流对于小型,中型和大型用例同样可行。此外,它完全与Kafka安全集成。编写标准Java应用程序。完全一次处理语义。而且,不需要单独的处理集群。

  • 问题3:Kafka的流处理是什么意思?

    答:连续、实时、并发和以逐记录方式处理数据的类型,我们称之为Kafka流处理。

  • 问题4:系统工具有哪些类型?

    答:系统工具有三种类型:

    1. Kafka迁移工具:它有助于将代理从一个版本迁移到另一个版本。
    2. Mirror Maker:Mirror Maker工具有助于将一个Kafka集群的镜像提供给另一个。
    3. 消费者检查:对于指定的主题集和消费者组,它显示主题,分区,所有者。
  • 问题5:什么是复制工具及其类型?

    答:为了增强持久性和更高的可用性,这里提供了复制工具。其类型为创建主题工具列表主题工具添加分区工具。

  • 问题6:Java在Apache Kafka中的重要性是什么?

    答:为了满足Kafka标准的高处理速率需求,我们可以使用java语言。此外,对于Kafka的消费者客户,Java也提供了良好的社区支持。所以,我们可以说在Java中实现Kafka是一个正确的选择。

  • 问题7:说明Kafka的一个最佳特征。

    答:Kafka的最佳特性是“各种各样的用例”。这意味着Kafka能够管理各种各样的用例,这些用例对于数据湖来说非常常见。例如日志聚合、Web活动跟踪等。

  • 问题8:解释术语“主题复制因子”。

    答:在设计Kafka系统时,考虑主题复制是非常重要的。

  • 问题9:解释一些Kafka流实时用例。

    答:《纽约时报》:该公司使用它来实时存储和分发已发布的内容到各种应用程序和系统,使其可供读者使用。基本上,它使用Apache Kafka和Kafka流。Zalando:Zalando使用Kafka作为ESB(企业服务总线)作为欧洲领先的在线时尚零售商。LINE:基本上,为了相互通信,LINE应用程序使用Apache Kafka作为其服务的中心数据中心。

  • 问题10:Kafka提供的保证是什么?

    答:他们是生产者向特定主题分区发送的消息的顺序相同。此外,消费者实例按照它们存储在日志中的顺序查看记录。此外,即使不丢失任何提交给日志的记录,我们也可以容忍最多N-1个服务器故障。