1.准备工作
Apache Kafka 是一个分布式流数据平台,专为处理实时数据流设计,具备高吞吐、低延迟、持久化存储等核心特性。
1.分布式消息系统
解耦生产者(Producer)与消费者(Consumer),支持发布/订阅模式。
示例场景:订单系统生成订单事件,库存系统实时消费处理。
2.流处理基础设施
支持实时数据管道(如日志聚合、IoT设备数据流)。
示例架构:传感器数据 → Kafka → Flink实时计算 → 预警系统。
3.持久化存储系统
数据按主题(Topic)分类存储,默认保留7天(可配置为永久存储)。
支持TB级数据存储,常用于数据湖的实时层。
1.创建所需要的配置文件及数据挂载目录
2.docker-compose.yml
services:
kafka:
image: apache/kafka:3.7.0
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_NODE_ID: 1
KAFKA_LOG_DIRS: "/var/lib/kafka/data"
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CLUSTER_ID: "my-kafka-cluster"
KAFKA_LISTENERS: SASL_PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
KAFKA_ADVERTISED_LISTENERS: SASL_PLAINTEXT://192.168.147.130:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: SASL_PLAINTEXT
KAFKA_SASL_ENABLED_MECHANISMS: PLAIN
KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL: PLAIN
KAFKA_OPTS: "-Djava.security.auth.login.config=/etc/kafka/kafka_jaas.conf"
volumes:
- /home/kafka/kafka-data:/var/lib/kafka/data
- /home/kafka/kafka_jaas.conf:/etc/kafka/kafka_jaas.conf
networks:
- kafka-net
networks:
kafka-net:
driver: bridge
3.kafka_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
2.启动容器
3. Offset Explorer 3.0 连接kafka
1.offsetexplorer.vmoptions 配置文件中加入客户端连接的认证信息位置
# Enter one VM parameter per line
# For example, to adjust the maximum memory usage to 512 MB, uncomment the following line:
# -Xmx512m
# To include another file, uncomment the following line:
# -include-options [path to other .vmoption file]
-Djava.security.auth.login.config=d:/client_jaas.conf
2.认证信息位置中加入认证信息 client_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
3.Offset Explorer 3.0 中相关配置