关于Kafka相关的面试题

1.请描述Kafka相关的概念和特点?
关于Kafka相关的面试题
概念:

主题:就是消息的分类,生产者将消息发送到特定主题,消费者订阅该主题或者主题的分区来进行消费。
消息:就是数据,一个固定长度的消息头和一个可变长度的消息体组成。
分区和副本:一个主题可以分成多个分区,每个分区由一系列有序、不可变的消息组成,是一个有序队列。每个分区在物理上对应一个文件夹,分区的命名规则为主题名称后接“-”连接符,之后再接分区编号,分区编号从0开始,表示第一个分区

特点:
(1)高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个主题可以分多个分区, 消费组对分区进行消费操作;
(2)可扩展性:kafka集群支持热扩展;
(3)持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
(4)容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败);
(5)高并发:支持数千个客户端同时读写;
(6)支持实时在线处理和离线处理:可以使用Storm这种实时流处理系统对消息进行实时进行处理,同时还可以使用Hadoop这种批处理系统进行离线处理;

2.Kafka判断一个Broker节点是否还活着有哪两个条件?
(1)节点必须可以维护和ZooKeeper的连接,Zookeeper通过心跳机制检查每个节点的连接
(2)如果节点是个follower,他必须能及时的同步leader的写操作,延时不能太久

3.Kafka 创建 Topic 时如何将分区放置到不同的Broker节点中?
副本因子不能大于 Broker 的个数;
第一个分区(编号为0)的第一个副本放置位置是随机从 brokerList 选择的;
其他分区的第一个副本放置位置相对于第0个分区依次往后移。也就是如果我们有5个 Broker,5个分区, 假设第一个分区放在第四个 Broker 上,那么第二个分区将会放在第五个 Broker 上;第三个分区将会放在第一个 Broker 上;第四个分区将会放在第二个 Broker 上,依次类推;
剩余的副本相对于第一个副本放置位置其实是由 nextReplicaShift 决定的,而这个数也是随机产生的

4.Kafka 与传统消息系统之间有哪三个关键区别?
(1).Kafka 持久化日志,这些日志可以被重复读取和无限期保留
(2).Kafka 是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过复制数据提升容错能力和高可用性
(3).Kafka 支持实时的流式处理

5.Kafka 的消费者如何消费数据?
消费者每次消费数据的时候,消费者都会记录消费的物理偏移量(offset)的位置
等到下次消费时,他会接着上次位置继续消费

可以借鉴这个网址关于kafka的面试题