1. kafka数据传输的事务定义有哪三种?
① 最多一次(at most once):消息不会被重复发送,最多被传输一次,但也有可能一次都不传输
② 最少一次(at leatest once):消息不会被漏发,最少被传输一次,但也有可能被重复传输
③精确一次(exactly once):不会漏传输也不会重复传输,每个消息都传输一次且有且仅有一次。
2. kafka判断一个节点是否还活着有哪两个条件?
① 节点必须可以和zk相连,zk通过心跳机制检查每个节点的状态
② 如果节点是个follower,则它必须能够及时的同步leader的写操作,并且延时不能太久
3. kafka存储在硬盘上的消息格式是什么?
消息是由一个固定长度的头部和可变长度的字节数组组成。头部包含了一个版本号和CRC32校验码。
①消息长度:4byte(value: 1+4+n)
②版本号:1 byte
③CRC校验码:4 byte
④具体的消息:n byte
4. kafka高效文件存储设计特点
① kafka把topic中的一个parition大文件拆分成多个小文件段,通过多个小文件段,就容易定期清理消费完成文件,减少磁盘的占用;
② 通过索引信息可以快速定位message和确定response的最大大小
③通过index元数据全部映射到memory,可以避免segment file 的IO磁盘操作
④ 通过索引文件稀疏存储,可以大幅降低index文件元数据占用空间
5. kafka Partition的数据如何保存到硬盘
① topic中发多个partition以文件夹的形式保存到broker中,每个分区序号从0递增,且消息有序
② partition文件下有多个segment(xxx.index,xxx.log)
③ segment文件里的大小和配置文件大小一致可以根据要求修改,默认为1G
④如果大小大于1G时,会滚动生成一个新的segment并且以上一个segment最后一条消息的偏移量命名
6. kafka的ack机制
request.required.acks有三个值 0 1 -1 0:生成者不会等待broker的ack,这个延迟最低但是存储保证最弱,当server挂掉时就会丢失数据 1:服务端会等待ack值,leader副本确认收到消息后发送ack,但是leader挂掉后不能确保是否复制完成的新leader也会导致数据丢失 -1:同样在1的基础上,服务端会等待所有的follower的副本都接收到数据后才会收到leader发出的ack,这样数据就不会丢失。
7. kafka消费者如何消费数据
消费者每次消费数据时,都会记录消费的物理偏移量(offset)。等到下次消费时接着从上次的位置消费数据。
8. 消费者负载均衡策略
一个消费者组中的一个分片对应一个消费者组成员,也就是一个分片数据只能被消费者组中的一个消费者消费。但它会尽可能的将数据分发给多个消费者,如果消费者组中的消费者过多,则会有空闲的成员。成员过少,那么有可能消费者消费多个分区的数据。但分区数据尽可能使采用轮询的方式。
9. kafka消费数据的有序性说明
kafka保证数据在一个消费者组内部它是有序的,消费者组与消费者组之间是无序的;
kafka保证同一个partition中,保证数据能够先进先出顺序消费,所以在数据写入时,可以按照key hash写入不同的partition中,保证数据key相同的写入同一个分区中。
10. 你怎么理解kafka ,kafka在大数据架构中承担了什么样的角色?
kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),该项目主要为了处理实时数据提供一个统一的、高吞吐的、低延迟的平台。
在实时数据开发过程中,它主要承担了一个统一的数据缓存和分发的的角色,类似于一个数据的总线的作用。在大批量的数据到来时,kafka可以凭借其高吞吐,高可靠性,对数据起到一个削峰填谷的作用,保证系统的稳定性。同时kafka也能够接受各种各样的数据源,最终汇总到一起,经过处理后发送不同的系统中。
11. kafka 解释下ISR?
Leader 维护了一个动态的 in-sync replica set (ISR),意为和 leader 保持同步的 follower 集合。当 ISR 中的 follower 完成数据的同步之后, leader 就会给 follower 发送 ack。如果 follower长 时 间 未 向 leader 同 步 数 据 , 则 该 follower 将 被 踢 出 ISR , 该 时 间 阈 值 由replica.lag.time.max.ms 参数设定。Leader 发生故障之后,就会从 ISR 中选举新的 leader。
12. kafka 中zk在其中作用?
Kafka 集群中有一个 broker 会被选举为 Controller,负责管理集群 broker 的上下线,所有 topic 的分区副本分配和 leader 选举等工作。Controller 的管理工作都是依赖于 Zookeeper 的。
13. kafka producer 生产者加快速度?
- 新增topic分区数,创建多个生产者
- 批量提交消息
14. kafka 为什么不支持读写分离?
在 Kafka 中,生产者写入消息、消费者读取消息的操作都是与 leader 副本进行交互的,从 而实现的是一种主写主读的生产消费模型。
15. kafka leader crash 时 ,isr为空怎么办?
kafka在Broker端提供了一个配置参数:unclean.leader.election,这个参数有两个值: true(默认):允许不同步副本成为leader,由于不同步副本的消息较为滞后,此时成为leader,可能会出现消息不一致的情况。 false:不允许不同步副本成为leader,此时如果发生ISR列表为空,会一直等待旧leader恢复,降低了可用性。
|