Kafka 面试,java实战贴
面试问题列表
Kafka的ISR机制是什么?如何保证数据一致性?
如何实现Kafka的Exactly-Once语义?
Kafka的Rebalance机制可能引发什么问题?如何优化?
Kafka的Topic分区数如何合理设置?
如何设计Kafka的高可用跨机房容灾方案?
Kafka Producer的acks参数对消息可靠性有何影响?
Kafka Consumer的auto.offset.reset参数有哪些配置?适用场景?
如何监控Kafka的Lag(消费延迟)?
Kafka的Log Compaction原理是什么?
如何解决Kafka集群中Broker磁盘IO瓶颈?
Kafka与RocketMQ在事务消息实现上的区别是什么?
实战准备
这是国内网络环境下安装最新稳定版Kafka和Zookeeper的完整指南(基于Kafka 3.7.0):
- 使用国内镜像源下载Kafka:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.7.0/kafka_2.13-3.7.0.tgz
- 安装Java环境:
sudo apt update
sudo apt install openjdk-17-jdk -y
- 解压安装(使用/opt目录):
tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 /opt/kafka
- 配置Zookeeper(编辑配置文件):
sudo nano /opt/kafka/config/zookeeper.properties
修改以下配置:
dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=60
- 配置Kafka(编辑配置文件):
sudo nano /opt/kafka/config/server.properties
修改以下关键配置:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://your_server_ip:9092
log.dirs=/var/lib/kafka
zookeeper.connect=localhost:2181
- 创建服务管理脚本(替代systemd方案):
创建启动脚本:
sudo nano /opt/kafka/start_services.sh
内容:
#!/bin/bash
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties > /var/log/zookeeper.log 2>&1 &
sleep 5
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /var/log/kafka.log 2>&1 &
- 设置文件权限:
sudo chmod +x /opt/kafka/start_services.sh
sudo mkdir -p /var/lib/{zookeeper,kafka}
sudo chown -R $USER:$USER /var/lib/{zookeeper,kafka}
- 启动服务:
cd /opt/kafka && ./start_services.sh
- 验证安装:
# 查看Zookeeper日志
tail -f /var/log/zookeeper.log# 创建测试主题
/opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1# 列出主题
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092