Kafka基础篇

Kafaka安装和使用以及整和

一、 安装(docker)

1)创建docker-compose.yml文件

bash 复制代码
mkdir kafka-demo
cd kafka-demo
touch docker-compose.yml
docker compose up -d

docker-compose.yml

yml 复制代码
version: '3'

services:
  kafka:
    image: apache/kafka:latest  # 镜像
    container_name: kafka       # 容器名
    ports:                      # 映射端口
      - "9092:9092"

    environment:
      KAFKA_NODE_ID: 1      # 当钱节点

      # KRaft 模式
      KAFKA_PROCESS_ROLES: broker,controller

      KAFKA_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093  # 监听端口
    # controller  Kafka集群节点之间通信
    # plaintext  普通客户端端口

      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      # 客户端如访问kafaka

      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER

      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT

      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:9093
      # nodeId@host:port

      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1

      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1

      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0

2)测试

bash 复制代码
docker exec -it kafka bash  # 进入容器

# 创建topic
/opt/kafka/bin/kafka-topics.sh \
--create \
--topic test-topic \
--bootstrap-server localhost:9092
# 查看topic
/opt/kafka/bin/kafka-topics.sh \
--list \
--bootstrap-server localhost:9092

# 启动生产者
/opt/kafka/bin/kafka-console-producer.sh \
--topic test-topic \
--bootstrap-server localhost:9092
# 输入
hello
kafka

启动一个新终端

bash 复制代码
docker exec -it kafka bash

/opt/kafka/bin/kafka-console-consumer.sh \
--topic test-topic \
--from-beginning \
--bootstrap-server localhost:9092

可以看到

二、 kafaka基础知识

1)kafaka核心架构

  1. Producer(生产者)
    • 负责发送消息
    • 可以是订单系统 、 日志系统 、webApp
  2. Consumer(消费者)
    • 负责消费消息
  3. Topic(主题)
    • Kafka 不直接存消息,消息会进入 Topic。
    • 类似 文件夹 / 数据分类
      例如:order-topic log-topic user-topic
  4. Partition(分区)
    • 一个 Topic 可以拆成多个 Partition。
    • 分区后可以可以并行写、并行读、横向扩展
    • 本质就是多个日志文件
  5. Offset(偏移量)
    Kafka 中消息长这样:
bash 复制代码
Partition-0

0 -> hello
1 -> world
2 -> kafka

这个编号就是offset:

bash 复制代码
0、1、2

作用:

  • 标识消息位置
  • 记录消费进度
  1. Broker

    Kafka 集群中的一台服务器。

    • 组成 Kafka 集群
    • 提供高可用
    • 提供分布式能力
bash 复制代码
Broker-1
Broker-2
Broker-3
  1. Consumer Group(消费者组)
    • 多个消费者构成的消费者组
    • 同一个分区只能被组内一个消费者消费,实现并行消费

2) 工作流程

bash 复制代码
# 1.生产者发送消息
Producer
   ↓
Topic
# 2.Kafka写入Partition
Topic
 ├── P0
 ├── P1
 └── P2
# 3.Consumer 拉取消息
Consumer -> 主动拉取
相关推荐
AI人工智能+电脑小能手8 小时前
【大白话说Java面试题 第87题】【Mysql篇】第17题:分布式事务的实现原理?
java·数据库·分布式·mysql·面试
不爱编程的小陈14 小时前
事务的进化:从MySQL单机事务到TiDB分布式事务的探究
分布式·mysql·tidb
是小王同学啊~19 小时前
Kafka 面试通关笔记:高频八股 + 生产实战 + 追问链路(上)
笔记·面试·kafka
Devin~Y20 小时前
从内容社区到AIGC客服:Spring Boot、Redis、Kafka、K8s、RAG的三轮大厂Java面试对话(附标准答案)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
Hello_worlds20 小时前
Kafka InconsistentClusterIdException 导致容器无限重启,磁盘打满排查与修复
docker·kafka·磁盘·排障
007张三丰21 小时前
AIoT与嵌入式系统深度解析:2026软考案例核心考点全攻略
物联网·mqtt·kafka·freertos·时序数据库·tdengine·aiot
Java 码思客1 天前
【Redis分布式缓存实战】第4章 单机Redis部署、配置与基础优化
redis·分布式·缓存
卷毛迷你猪1 天前
快速实验篇(A3)基于 Hive 的气象数据数仓构建与干旱指标初步分析
大数据·hadoop·分布式
卷毛迷你猪1 天前
快速实验篇(A4)Hive 数据仓库进阶:全站点干旱事件识别与多维统计分析
数据仓库·hive·hadoop·分布式
RingWu1 天前
高并发三板斧-异步
分布式·微服务·架构