【大数据面试题】30 Kafka如何保证数据可靠性

一步一个脚印,一天一道面试题。

数据可靠性一直是各个技术都需要的一个特性。不能在使用过程中数据被错误消费,多消费少消费,或者直接漏了数据。那就来看看热门消息队列 Kafka 在数据可靠性方面做了些什么。

  1. Acknowledgment(ACK)机制
    生产者发送数据给Kafka后,可以有确认机制来保证数据是不是正常的发送成功。 Kafka 提供了三种级别的 ACK 配置,通过 acks 配置项控制,这些级别决定了生产者何时认为消息已成功发送: - acks=0:生产者不会等待任何来自 broker 的确认,消息发送后立即认为成功。这是最快但最不安全的模式。

    • acks=1(默认设置):生产者只需等待 leader 节点的确认。这种方式在 leader 落盘后即发送 ACK,但如果此时 leader 挂掉,未复制到 follower,数据可能会丢失。
    • acks=all:生产者等待所有参与复制的 ISR 节点确认消息。这是最安全但也是延迟最高的模式,因为只有当所有副本都确认接收到消息时,才认为消息发送成功。
  2. 副本与 ISR
    大数据组件基本都会有副本,如果某个节点异常则可以使用副本数据,防止数据丢失。同时副本 Replica 需要跟 leader 保持进度同步。 ISR(In-Sync Replica),就是处于同步的副本。 也就是说每个副本都会同步 leader 的进度,这样如果某个节点的时候,I就可以立即从 ISR 中选出副本,防止数据丢失。

  3. 分区日志与持久化
    Kafka 把每个主题分为多个分区,并将每个分区的日志存储在硬盘上,从而实现长期存储。这样即使在节点故障后,数据也能从其他副本恢复。

  4. Leader 选举与故障转移
    当 leader 节点宕机时, Kafka 会从 ISR 列表中选择一个新的 leader,确保数据可以被读取和写入 ,保证高可用性。这个过程依赖 Zookeeper

  5. 消费者偏移量管理
    ACK 确认机制是用于保证生产者的数据可靠性,那 offset偏移量就是用于保证消费者的数据可靠性。这样消费者可以知道,数据消费到哪个位置,避免重复消费。

  6. 幂等性与两阶段提交
    Kafka 支持幂等生产者,确保在特定时间内向同一分区发送的消息,即使被多次尝试发送,也只会被存储一次。
    此外,Kafka 也支持两阶段提交,允许跨多个主题和分区的生产和消费操作保持原子性,进一步增强了数据的一致性。

我是近未来,祝你变得更强!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当面试官问到大数据Kafka面试题,可能会涉及以下几个方面的内容: 1. Kafka的基本概念和特点: - Kafka是一个分布式流处理平台,用于高吞吐量的实时数据传输。 - Kafka采用发布-订阅模式,消息以topic为单位进行发布和订阅。 - Kafka具有高可靠性、可扩展性和持久性等特点。 2. Kafka的架构和组件: - Kafka集群由多个broker组成,每个broker负责存储和处理消息。 - 每个topic可以分为多个分区,每个分区可以在不同的broker上进行复制。 - 生产者将消息发布到指定的topic,消费者从指定的topic订阅消息。 3. Kafka的消息传输和存储: - Kafka使用消息日志的方式存储消息,每个分区都有一个对应的日志文件。 - 生产者将消息追加到分区的日志文件末尾,消费者按照偏移量顺序读取消息。 - Kafka支持消息的持久化存储,并且可以根据配置进行数据的保留和清理。 4. Kafka的高可用和容机制: - Kafka通过副本机制实现高可用性,每个分区可以有多个副本。 - 副本之间通过ISR(In-Sync Replicas)机制保持同步,确保数据的一致性。 - 当某个broker宕机时,Kafka会自动将其上的分区副本迁移到其他可用的broker上。 5. Kafka的性能调优和监控: - 可以通过调整Kafka的参数来提高性能,如调整分区数、批量发送消息等。 - 监控Kafka集群的健康状态,包括吞吐量、延迟、存储空间等指标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值