第一章 Kafka安装与简介 v1.0
第一部分 安装
一、使用docker-compose安装
1.创建docker-compose.yml
yaml
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zookeeper:2888:3888
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_PORT: 9092
KAFKA_LOG_RETENTION_HOURS: 120
KAFKA_MESSAGE_MAX_BYTES: 1000000
KAFKA_REPLICA_FETCH_MAX_BYTES: 1000000
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_LOG_DIRS: /kafka/logs
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./kafka-logs:/kafka/logs
depends_on:
- zookeeper2.启动服务
bash
docker-compose up -d3.验证安装
bash
# 查看容器状态
docker-compose ps
# 测试连接
docker exec -it kafka kafka-broker-api-versions.sh --bootstrap-server localhost:9092二、常用管理命令
1.Topic管理
bash
# 创建Topic
docker exec -it kafka kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 3 \
--topic test-topic
# 查看Topic列表
docker exec -it kafka kafka-topics.sh --list \
--bootstrap-server localhost:9092
# 查看Topic详情
docker exec -it kafka kafka-topics.sh --describe \
--bootstrap-server localhost:9092 \
--topic test-topic
# 删除Topic
docker exec -it kafka kafka-topics.sh --delete \
--bootstrap-server localhost:9092 \
--topic test-topic2.生产消费测试
bash
# 生产消息
docker exec -it kafka kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic
# 消费消息
docker exec -it kafka kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning
# 指定消费者组消费
docker exec -it kafka kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--group test-group3.消费者组管理
bash
# 查看消费者组列表
docker exec -it kafka kafka-consumer-groups.sh --list \
--bootstrap-server localhost:9092
# 查看消费者组详情
docker exec -it kafka kafka-consumer-groups.sh --describe \
--bootstrap-server localhost:9092 \
--group test-group
# 重置消费位点
docker exec -it kafka kafka-consumer-groups.sh --reset-offsets \
--bootstrap-server localhost:9092 \
--group test-group \
--topic test-topic \
--to-earliest \
--execute第二部分 Kafka简介
一、什么是Kafka
Apache Kafka是一个分布式流处理平台,由LinkedIn开发并开源,后来成为Apache顶级项目。它具有高吞吐量、低延迟、高可用性的特点,广泛应用于日志收集、实时数据分析、消息队列等场景。
二、核心特性
1.高吞吐量
单机支持每秒百万级别的消息处理,适合大数据场景。通过顺序读写、零拷贝、批量处理等技术实现高性能。
2.持久化
消息持久化到磁盘,支持数据备份,防止数据丢失。支持配置保留策略,自动清理过期数据。
3.分布式
支持集群部署,数据自动在多个节点间复制,保证高可用性。支持动态扩展节点。
4.实时性
消息生产后可以立即被消费者消费,延迟通常在毫秒级别。
5.容错性
支持多副本机制,Leader故障时自动选举新Leader,保证服务可用。
三、典型应用场景
1.消息队列
解耦生产者和消费者,实现异步通信。适用于系统解耦、流量削峰、异步处理。
2.日志收集
收集各种服务的日志,进行统一处理。支持高吞吐量的日志写入。
3.实时分析
结合Spark Streaming、Flink等进行实时数据处理。支持流式计算场景。
4.监控指标
统计各种运营数据,实现实时监控。支持时序数据的存储和查询。
5.事件溯源
记录系统状态变化的事件序列,支持事件回放和状态重建。