kafka教程(新手使用单机版)

文章目录

一、概念

kafka是一个分布式消息系统、所谓消息系统主要功能就是发布/订阅。

二、安装

为了省事,直接docker安装了,docker-compose.yml文件如下

概念说明:环境中一共包含四个

1、zookeeper:kafka数据调度,关键组件

2、kafka组件

3、kafka-connect

4、kafka-ui:kafka图形可视化

版本说明:kafka采用稳定版7.4.1,最新版有KRaft能够替代zookeeper,为了保险起见还是先用稳定版,如果用最新版就不用安装zookeeper

yaml 复制代码
services:
  # Zookeeper 服务
  zookeeper:
    image: docker.1ms.run/library/zookeeper:latest
    container_name: zookeeper
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    ports:
      - "2181:2181"
    restart: unless-stopped
    volumes:
      - kafka_data:/bitnami/zookeeper

  # Kafka 服务
  kafka:
    image: docker.1ms.run/confluentinc/cp-kafka:7.4.1
    container_name: kafka
    environment:
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"

      # 监听器配置 (核心)
      KAFKA_LISTENERS: "PLAINTEXT://:9092"
      KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:9092"

      # 单节点环境必需的关键配置
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_DEFAULT_REPLICATION_FACTOR: 1
      KAFKA_NUM_PARTITIONS: 3

      # 其他推荐配置
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
      KAFKA_LOG_RETENTION_HOURS: 168
      KAFKA_LOG_SEGMENT_BYTES: 1073741824
      # Confluent 镜像特定优化
      KAFKA_JMX_PORT: 9101
      KAFKA_JMX_HOSTNAME: localhost
    ports:
      - "9092:9092"
      - "29092:29092"
    depends_on:
      - zookeeper
    restart: unless-stopped
    volumes:
      - kafka_data:/bitnami/kafka

  # Kafka Connect 服务
  kafka-connect:
    image: docker.1ms.run/confluentinc/cp-kafka-connect:latest
    container_name: kafka-connect
    environment:
      - CONNECT_BOOTSTRAP_SERVERS=kafka:9092
      - CONNECT_GROUP_ID=kafka-connect-cluster
      - CONNECT_CONFIG_STORAGE_TOPIC=_connect-configs
      - CONNECT_OFFSET_STORAGE_TOPIC=_connect-offsets
      - CONNECT_STATUS_STORAGE_TOPIC=_connect-status
      - CONNECT_KEY_CONVERTER=org.apache.kafka.connect.json.JsonConverter
      - CONNECT_VALUE_CONVERTER=org.apache.kafka.connect.json.JsonConverter
      - CONNECT_KEY_CONVERTER_SCHEMAS_ENABLE=false
      - CONNECT_VALUE_CONVERTER_SCHEMAS_ENABLE=false
      - CONNECT_REST_ADVERTISED_HOST_NAME=kafka-connect
      - CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR=1
      - CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR=1
      - CONNECT_STATUS_STORAGE_REPLICATION_FACTOR=1
      - CONNECT_PLUGIN_PATH=/usr/share/java,/usr/share/confluent-hub-components
    ports:
      - "8083:8083"
    depends_on:
      - kafka
    restart: unless-stopped
    volumes:
      - kafka_data:/usr/share/confluent-hub-components
  kafka-ui:
    image: docker.1ms.run/provectuslabs/kafka-ui:latest
    container_name: kafka-ui
    ports:
      - "8080:8080"  # 通过浏览器访问 http://localhost:8080
    environment:
      # 动态配置模式,允许在Web界面中添加集群
      - DYNAMIC_CONFIG_ENABLED=true
      # 也可以通过环境变量直接配置集群连接(示例)
      #- KAFKA_CLUSTERS_0_NAME=local
      #- KAFKA_CLUSTERS_0_BOOTSTRAP_SERVERS=kafka:9092
      #- KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
      #- KAFKA_CLUSTERS_0_KAFKACONNECT_0_NAME=local-connect
      #- KAFKA_CLUSTERS_0_KAFKACONNECT_0_ADDRESS=http://kafka-connect:8083
    depends_on:
      - kafka
      - kafka-connect
volumes:
  kafka_data:

三、使用

使用kafka-ui地址:http://localhost:8080/

添加管理kafka集群和kafka-connect

添加成功:kafka-connect此时并没有显示是因为没有配置连接插件

相关推荐
DemonAvenger4 天前
Kafka性能调优:从参数配置到硬件选择的全方位指南
性能优化·kafka·消息队列
初次攀爬者4 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
yumgpkpm5 天前
AI视频生成:Wan 2.2(阿里通义万相)在华为昇腾下的部署?
人工智能·hadoop·elasticsearch·zookeeper·flink·kafka·cloudera
予枫的编程笔记5 天前
【Kafka高级篇】避开Kafka原生重试坑,Java业务端自建DLQ体系,让消息不丢失、不积压
java·kafka·死信队列·消息中间件·消息重试·dlq·java业务开发
倚肆5 天前
在 Windows Docker 中安装 Kafka 并映射 Windows 端口
docker·kafka
断手当码农6 天前
Redis 实现分布式锁的三种方式
数据库·redis·分布式
Sheffield6 天前
如果把ZooKeeper按字面意思比作动物园管理员……
elasticsearch·zookeeper·kafka
初次攀爬者6 天前
Redis分布式锁实现的三种方式-基于setnx,lua脚本和Redisson
redis·分布式·后端
雪碧聊技术6 天前
kafka的下载、安装、启动
kafka