Kafka 面试,java实战贴

发布于:2025-05-01 ⋅ 阅读:(17) ⋅ 点赞:(0)

面试问题列表

Kafka的ISR机制是什么?如何保证数据一致性?
如何实现Kafka的Exactly-Once语义?
Kafka的Rebalance机制可能引发什么问题?如何优化?
Kafka的Topic分区数如何合理设置?
Kafka Producer的acks参数对消息可靠性有何影响?
Kafka Consumer的auto.offset.reset参数有哪些配置?适用场景?
如何监控Kafka的Lag(消费延迟)?
Kafka的Log Compaction原理是什么?
Kafka与RocketMQ在事务消息实现上的区别是什么?
如何解决Kafka集群中Broker磁盘IO瓶颈?
如何设计Kafka的高可用跨机房容灾方案?

kafka架构图

学习或复习kafka前很有必要了解一下kafka架构图,只有这样部分问题才能看起来清晰一点。
网上已经有很多现成的kafka架构图,这里就直接找了一个:
该图参考地址
在这里插入图片描述
核心组件说明:

  1. Topic:消息分类单元(如order-events
  2. Partition:物理存储单元(保证分区内有序)
  3. Broker:服务节点(形成分布式集群)
  4. Producer:消息生产者(支持批量发送)
  5. Consumer:消费者组(实现负载均衡)
  6. Replica:副本机制(Leader处理读写,Follower同步)
  7. Zookeeper:集群协调(元数据管理/控制器选举)

实战准备

这是国内网络环境下安装最新稳定版Kafka和Zookeeper的完整指南(基于Kafka 3.7.0):

  1. 使用国内镜像源下载Kafka:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.7.0/kafka_2.13-3.7.0.tgz
  1. 安装Java环境:
sudo apt update
sudo apt install openjdk-17-jdk -y
  1. 解压安装(使用/opt目录):
tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 /opt/kafka
  1. 配置Zookeeper(编辑配置文件):
sudo nano /opt/kafka/config/zookeeper.properties

修改以下配置:

dataDir=/var/lib/zookeeper
clientPort=2181
maxClientCnxns=60
  1. 配置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
  1. 创建服务管理脚本(替代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 &
  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}
  1. 启动服务:
cd /opt/kafka && ./start_services.sh
  1. 验证安装:
# 查看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