Skip to content

第一章 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:
      - zookeeper

2.启动服务 ​

bash
docker-compose up -d

3.验证安装 ​

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-topic

2.生产消费测试 ​

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-group

3.消费者组管理 ​

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.事件溯源 ​

记录系统状态变化的事件序列,支持事件回放和状态重建。