温馨提示×

如何测试Kafka服务

小樊
41
2026-08-06 19:04:30
栏目: 大数据

测试 Kafka 服务可以从连通性、基本功能、性能、稳定性等多个层面进行。下面按由浅入深的方式给你一套完整实用的测试方案,适用于开发、测试、运维场景。


一、测试前准备

1. 确认环境信息

你需要知道:

  • Kafka 地址:host:port(如 localhost:9092
  • 是否有 Zookeeper(旧版本)或 KRaft(新版本)
  • Topic 名称(或是否允许自动创建)
  • 是否开启认证(SASL / SSL)

二、连通性测试(最基础)

1. 使用 telnet / nc 测试端口

telnet localhost 9092

nc -vz localhost 9092

✅ 能连上说明网络没问题
❌ 连不上检查:

  • Kafka 是否启动
  • 防火墙
  • 安全组(云服务器)

2. 使用 Kafka 自带命令行工具测试

查看 Broker 是否存活

kafka-broker-api-versions.sh --bootstrap-server localhost:9092

✅ 返回 API 版本说明 Kafka 正常


三、基本功能测试(核心)

1. 创建 Topic

kafka-topics.sh \
  --bootstrap-server localhost:9092 \
  --create \
  --topic test-topic \
  --partitions 3 \
  --replication-factor 1

查看 Topic:

kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test-topic

2. 生产消息(Producer 测试)

kafka-console-producer.sh \
  --bootstrap-server localhost:9092 \
  --topic test-topic

手动输入消息:

hello kafka
test message

3. 消费消息(Consumer 测试)

kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic test-topic \
  --from-beginning

✅ 能看到刚才发送的消息说明 Kafka 基本功能正常


四、压力 / 性能测试(常用)

Kafka 自带性能测试工具,非常实用。

1. 生产者性能测试

kafka-producer-perf-test.sh \
  --topic test-topic \
  --num-records 100000 \
  --record-size 1024 \
  --throughput -1 \
  --producer-props bootstrap.servers=localhost:9092

关注指标:

  • records/sec
  • MB/sec
  • avg latency

2. 消费者性能测试

kafka-consumer-perf-test.sh \
  --bootstrap-server localhost:9092 \
  --topic test-topic \
  --messages 100000

五、可靠性 & 容错测试

1. 多副本测试

  • 创建 replication-factor > 1 的 topic
  • 杀掉一个 broker
  • 观察:
    • 是否仍能生产和消费
    • leader 是否切换

2. 消费者组测试

kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic test-topic \
  --group test-group

再启动一个相同 group 的 consumer,观察:

  • 分区是否重新分配
  • 是否避免重复消费

六、Java / 客户端测试(开发级)

1. Java Producer 示例

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

KafkaProducer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<>("test-topic", "key", "value"));
producer.close();

2. Java Consumer 示例

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "test-group");
props.put("enable.auto.commit", "true");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");

KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(List.of("test-topic"));
ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));

七、进阶测试工具

1. AKHQ / Kafka UI(可视化)

  • 查看 topic、消息、consumer lag
  • 非常适合测试环境

2. Kafka Monitor / Cruise Control

  • 长期稳定性
  • 集群健康监控

八、常见问题排查

现象 可能原因
连接超时 broker 未启动 / 端口未开放
topic 不存在 auto.create.topics.enable=false
消费不到消息 consumer group offset 问题
性能低 分区数少 / 磁盘慢

九、推荐测试流程(总结)

快速验证

端口 → broker api → 创建 topic → 生产 → 消费

性能验证

producer perf test → consumer perf test

生产级验证

多副本 → consumer group → 容错 → 监控

如果你愿意,我可以:

  • 给你一份 Kafka 测试 Checklist
  • 针对 Docker / Kubernetes / 云 Kafka 给具体测试方案
  • 帮你写 自动化测试脚本

你现在是在 本地 / 测试环境 / 生产环境 测试 Kafka?

0