kafka面试题

都有哪些特点

高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。

可扩展性:kafka集群支持热扩展

持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)

高并发:支持数千个客户端同时读写

在哪些场景下会选择 Kafka?

  • 日志收集
  • 消息系统
  • 用户活动跟踪
  • 运营指标
  • 流式处理

分区的目的?

实现负载均衡,提高并发

高可靠性是怎么实现的?

  • 分区副本:当 Leader 挂了的时候,其中一个 follower 会重新成为新的 Leader
  • Producer:

    1. 提供消息确认机制,通过参数 request.required.acks 配置:0,1,all
    2. 提供同步配置producer.type:sync,async
  • 数据一致性:只有被所有follower同步的消息才会被消费
  • Leader 选举 producer 级别:acks=all(或者 request.required.acks=-1),同时发生模式为同步 producer.type=sync

topic 级别:设置 replication.factor>=3,并且 min.insync.replicas>=2;

broker 级别:关闭不完全的 Leader 选举,即 unclean.leader.election.enable=false;

Kafka 数据一致性原理

LEO、HW、LSO、LW等分别代表什么

Kafka 在什么情况下会出现消息丢失?

怎么尽可能保证 Kafka 的可靠性

数据传输的事务有几种?

最多一次,最少一次,精确的一次

Kafka消息是采用Pull模式的好处?

  • 指定消费的速率
  • 自主决定是否批量的从broker拉取数据

Kafka 是如何实现高吞吐率的?

顺序读写,零拷贝,文件分段,批量发送,数据压缩。

如何为Kafka集群选择合适的Topics/Partitions数量

Author: bkdwei