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 小时前
RabbitMQ消息队列:发送者的可靠性
java·分布式·rabbitmq
AAA@峥12 小时前
Ceph 分布式文件系统 CephFS 实战指南
运维·分布式·ceph
cyadyx12 小时前
RabbitMQ 使用说明文档
分布式·rabbitmq
布鲁飞丝13 小时前
kafka 副本集设置和理解
分布式·kafka
songgz13 小时前
ZenithVM:从虚拟机到分布式操作系统内核
jvm·分布式·vm
番茄炒鸡蛋加糖14 小时前
分布式 ID
分布式
Francek Chen15 小时前
【大数据处理与分析】实验5:MapReduce初级编程实践
大数据·hadoop·分布式·mapreduce
独行侠影a1 天前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行
数据库·redis·分布式
香菜TTT1 天前
Kafka_深度解析_从架构原理到生产实践
分布式·架构·kafka·linq
wWYy.1 天前
基于Raft分布式Kv存储:RPC
分布式·rpc