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 -> 主动拉取
相关推荐
Jackyzhe2 小时前
从零学习Kafka:生产者压缩
分布式·学习·kafka
一只普通的码农2 小时前
kafka在windows环境部署
分布式·kafka
bqq198610263 小时前
Kafka高效的原因
缓存·kafka
Kiyra3 小时前
异步任务不用 Kafka 也行:用 Redis Stream 搭一套轻量级 Producer/Consumer 框架
数据库·人工智能·redis·分布式·后端·缓存·kafka
面向Google编程4 小时前
从零学习Kafka:幂等与事务
大数据·kafka
Jackeyzhe4 小时前
从零学习Kafka:幂等与事务
kafka
倒流时光三十年4 小时前
第6篇 Consumer 精讲(上):Offset 提交与幂等消费
spring boot·kafka
老码观察4 小时前
分布式系统核心理论与实践:从CAP到工程落地
分布式
赵渝强老师5 小时前
【赵渝强老师】Hadoop的伪分布部署模式
大数据·hadoop·分布式