快速上手Kafka的核心是安装Kafka、创建Topic、用Producer发送消息、用Consumer消费消息,通过简单命令行工具在本地运行即可解决基本数据处理难题。
安装与启动
下载Kafka二进制包,解压后启动Zookeeper:bin/zookeeper-server-start.sh config/zookeeper.properties,然后启动Kafka:bin/kafka-server-start.sh config/server.properties。
创建Topic
使用命令创建主题:bin/kafka-topics.sh --create --topic quickstart --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1。
生产者发送消息
运行生产者:bin/kafka-console-producer.sh --topic quickstart --bootstrap-server localhost:9092,输入消息按回车发送。
消费者接收消息
在新终端运行消费者:bin/kafka-console-consumer.sh --topic quickstart --from-beginning --bootstrap-server localhost:9092,查看所有消息。
基本概念
Kafka是一个分布式的流处理平台,主要用于高吞吐、低延迟的发布订阅消息系统,核心包括Producer、Broker、Consumer、Topic、Partition。
数据处理应用
Kafka常用于实时数据管道,比如日志收集、流式处理、网站活动跟踪,通过消费者组实现负载均衡和故障恢复。
简单Java Producer示例
import org.apache.kafka.clients.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"); Producer
FAQ
Q: Kafka需要Zookeeper吗?
A: 早期版本需要,新版Kafka支持KRaft模式无需Zookeeper。
Q: Topic和Partition区别是什么?
A: Topic是消息类别,Partition是Topic的并行单元,支持水平扩展。
Q: 如何查看Topic列表?
A: 用命令 bin/kafka-topics.sh --list --bootstrap-server localhost:9092。
Q: Consumer如何处理消息顺序?
A: 同Partition内消息有序,不同Partition间无序。