Kafka
# 1. Kafka是如何保证消息不丢失?
Kafka保证消息不丢失的措施包括:
- 生产者使用异步回调发送消息,设置重试机制应对网络问题。
- 在Broker中通过复制机制,设置
acks
参数为all
,确保消息在所有副本中都得到确认。 - 消费者手动提交消费成功的offset,避免自动提交可能导致的数据丢失或重复消费。
# 2. Kafka中消息的重复消费问题如何解决?
通过以下方法解决Kafka中的重复消费问题:
- 禁用自动提交offset,手动控制offset提交时机。
- 确保消息消费的幂等性,例如通过唯一主键或分布式锁。
# 3. Kafka是如何保证消费的顺序性?
Kafka默认不保证消息顺序性,但可以通过以下方法实现:
- 将消息存储在同一个分区,通过指定分区号或相同的业务key来实现。
# 4. Kafka的高可用机制了解吗?
Kafka的高可用性主要通过以下机制实现:
- 集群部署,多broker实例,单点故障不影响整体服务。
- 复制机制,每个分区有多个副本,leader和follower,leader故障时从follower中选举新leader。
# 5. 解释一下复制机制中的ISR?
ISR(In-Sync Replicas)指与leader保持同步的follower副本。
- 当leader故障时,优先从ISR中选举新leader,因为它们数据一致性更高。
# 6. Kafka数据清理机制了解吗?
Kafka的数据清理包括:
- 基于消息保留时间的清理。
- 基于topic数据大小的清理,可配置删除最旧消息。
# 7. Kafka中实现高性能的设计有了解过吗?
Kafka高性能设计包括:
- 消息分区,提升数据处理能力。
- 顺序读写,提高磁盘操作效率。
- 页缓存,减少磁盘访问。
- 零拷贝,减少数据拷贝和上下文切换。
- 消息压缩,减少IO负载。
- 分批发送,降低网络开销。
上次更新: 2025/4/13 14:39:08