面试题答案
一键面试关键配置参数及影响
replication.factor
- 含义:指定每个主题分区的副本数。
- 对数据备份机制的影响:副本数决定了数据的冗余程度。例如,设置
replication.factor = 3
,表示每个分区的数据会有两个额外副本。这样当一个副本所在的Broker节点出现故障时,其他副本可以继续提供服务,保证数据的可用性和备份的完整性。如果副本数设置过低,数据丢失风险增加;设置过高,则会占用更多的磁盘和网络资源。
min.insync.replicas
- 含义:指定一个分区必须保持同步的最小副本数。
- 对数据备份机制的影响:当分区的同步副本数小于这个值时,生产者会收到错误,表明消息不能被可靠地备份。例如,设置
min.insync.replicas = 2
,如果只有一个副本与领导者副本保持同步,生产者发送消息时会失败。这确保了在数据备份过程中,有足够数量的可靠副本,从而提高数据的持久性和一致性。
acks
- 含义:生产者在确认消息发送成功之前需要收到的确认数。
- 对数据备份机制的影响:
acks = 0
:生产者发送消息后,不等待任何确认,这可能导致数据丢失,因为生产者不知道消息是否成功到达Broker。acks = 1
:生产者等待领导者副本确认消息已成功写入。这种情况下,如果领导者副本在确认后但其他副本同步前发生故障,数据可能丢失。acks = all
(或acks = -1
):生产者等待所有同步副本确认消息已成功写入。这提供了最高的数据备份保证,但会增加消息发送的延迟,因为需要等待所有副本完成同步。
log.retention.hours
或log.retention.minutes
或log.retention.ms
- 含义:控制日志保留时间,即数据在Kafka中保存的时长。
- 对数据备份机制的影响:这些参数决定了数据在Kafka集群中保留的时间长度。例如,设置
log.retention.hours = 72
,表示数据会在72小时后被删除。这对于长期数据备份可能需要调整合适的保留时间,以确保重要数据不会过早被清理,同时避免占用过多磁盘空间。
log.retention.bytes
- 含义:控制日志保留的最大字节数。
- 对数据备份机制的影响:当分区日志达到这个大小限制时,旧的日志段将被删除。这与时间相关的保留参数(如
log.retention.hours
)共同作用,确保数据在Kafka中的存储大小和时长得到合理控制,以平衡数据备份需求和存储资源的使用。