1. Kafka 的核心概念
在开始之前,理解 Kafka 的核心概念非常重要:
- PProducer(生产者):将数据发送到 Kafka 的客户端应用程序。
- Consumer(消费者):从 Kafka 订阅并读取数据的客户端应用程序。
- Topic(主题):Kafka 中用于存储消息的逻辑分类,消息按主题发布和订阅。
- Partition(分区):每个主题由一个或多个分区组成,用于实现数据分布。
- Broker(代理):Kafka 集群中的一个服务器,负责存储和管理数据。
- Zookeeper:管理 Kafka 集群元数据(从 Kafka 2.8 开始可选,后续版本使用 Kafka 自带的 KRaft 替代)。
2. 安装和运行 Kafka
2.1 环境准备
确保安装了 Java 8 或更高版本。
2.2 启动 Kafka
以下步骤使用默认设置运行 Kafka:
解压 Kafka 文件:
tar -xzf kafka_2.13-x.x.x.tgz cd kafka_2.13-x.x.x
启动 Zookeeper: Kafka 需要 Zookeeper 管理集群元数据。
bin/zookeeper-server-start.sh config/zookeeper.properties
启动 Kafka 服务: 启动 Kafka broker:
bin/kafka-server-start.sh config/server.properties
3. 创建和管理 Topic
3.1 创建一个 Topic
创建名为 test
的主题,默认 1 个分区,1 个副本:
bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
3.2 列出现有 Topic
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
4. 生产和消费消息
4.1 生产消息
运行一个 Kafka 生产者并向 test
主题发送消息:
bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
输入任意消息并按 Enter,消息会发送到 Kafka。
4.2 消费消息
运行一个 Kafka 消费者以读取 test
主题中的消息:
bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
5. Kafka 的重要工具
5.1 查看 Topic 的详细信息
bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
5.2 删除 Topic
如果需要删除主题:
bin/kafka-topics.sh --delete --topic test --bootstrap-server localhost:9092
6. 多 Broker 配置(集群模式)
6.1 修改配置文件
复制 config/server.properties
文件并创建多个配置文件(如 server-1.properties, server-2.properties
)。
在每个配置文件中修改以下内容:
broker.id:为每个 broker 分配唯一 ID。
log.dirs:指定每个 broker 的日志存储路径。
port:指定每个 broker 使用的端口(默认 9092,可改为 9093, 9094 等)。
6.2 启动多个 Broker
使用不同的配置文件启动多个 broker:
bin/kafka-server-start.sh config/server-1.properties bin/kafka-server-start.sh config/server-2.properties
7. 生产环境注意事项
配置高可用:配置多个 broker,并设置合理的副本因子(replication.factor)。
监控和运维:使用 Kafka 自带的工具或集成监控系统(如 Prometheus、Grafana)监控 Kafka 的状态。
调整性能:根据负载优化 Kafka 配置,如 batch.size, linger.ms 等参数。