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 -> 主动拉取
相关推荐
国科安芯11 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
阿无,12 小时前
RabbitMQ面试题
分布式·rabbitmq
盛世宏博智慧档案15 小时前
全国100个分布式机房环境温湿度智能监测系统建设方案
分布式·机房·温湿度
六bring个六16 小时前
分布式设备连接对端失败问题分析
分布式·分布式软总线
天涯明月19931 天前
ray深度研究报告
大数据·人工智能·分布式·ray
海兰1 天前
【Kafka进阶4】KRaft 完全指南:Apache Kafka 摆脱 ZooKeeper 的架构
zookeeper·kafka·apache
Rain的Java大神之路1 天前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
大菠萝爱上小西瓜2 天前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农2 天前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰2 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka