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 -> 主动拉取
相关推荐
一条泥憨鱼12 小时前
【Redis | 黑马点评】分布式锁;Lua脚本;Redisson与看门狗 |源码万字详解
redis·分布式·lua
stark张宇13 小时前
库存扣减的“锁”事:悲观锁、乐观锁、分布式锁
redis·分布式·mysql
xianyuCcCcCCCcc16 小时前
Ceph 分布式存储:集群配置与存储池管理
运维·分布式·ceph
萧瑟余晖18 小时前
Spring Cloud分布式事务与链路追踪详解
分布式·spring·spring cloud
汤姆宝库19 小时前
预训练工程深拆:Scaling_Law、数据管线与分布式并行
分布式
pjj1985419 小时前
Spark RDD 核心知识详解:算子、依赖与执行模型
大数据·分布式·spark
SL-staff19 小时前
JVS私有化部署运维避坑指南:Kafka容灾、ES冷热分离、RabbitMQ可观测性三实战检查项
elasticsearch·kafka·jvs运维·es冷热分离·rabbitmq监控·中间件巡检·sre实践
starzy199019 小时前
KafkaProducer 源码深度剖析:支撑高吞吐的数据结构设计
大数据·数据结构·kafka
浔溺20 小时前
Spark核心基石:RDD全方位深度解析(原理、算子、实战、优化)
大数据·分布式·spark
catino20 小时前
RabbitMQ详解
分布式·rabbitmq·ruby