kafka基本操作

本文详细介绍了Kafka消息队列的工作原理,包括点对点和发布-订阅两种模式,以及其优缺点。深入探讨了Kafka中的核心概念,如生产者、消费者、消费组、broker、partition等,并展示了如何启动Kafka服务和执行基本操作,如创建、删除topic。此外,还讨论了消费者分区策略和偏移量管理,以及Kafka的数据存储和日志管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.消息队列(Message queue,MQ)

  • 0.0 什么是消息队列?
  • 0.1 消息队列的种类
    • 0.点对点模式
      一对一,一个生产者对应一个消费者;
      消费者主动拉取数据,消息被消费后会被清除;
      一条消息只会被一个消费者所读取。
    • 1.发布-订阅模式
      一对多,一个生产者对应多个消费者;
      消息被消费后不会立马被清除,而是间隔一定时长后才会作清除动作。
  • 0.2 各类别的优缺点

1.kafka中的基本概念

  • 生产者
  • 消费者
  • 消费组
  • broker
  • partition
  • replication
  • leader
  • ISR

2.kafka的基本操作

  • 2.0 启动

    • 0.启动zookeeper
      zkServer.sh start
      
    • 1.启动kafka
        kafka-server-start.sh -daemon ./config/server.properties
        # -daemon 是将服务方后台
        	```
      
      
  • 2.1 常用命令

    • 0.查看topic
      topic命令操作的是kafka的元数据,因此连接的必须是存储元数据的zookeeper
      kafka-topics.sh --list --zookeeper localhost:2181
      
    • 1.创建topic
      kafka-topics.sh --create --zookeeper localhost:2181 --topic first_topic --partitions 2 --replication-factor 2
      # --topic 指定topic name
        --partitions 指定当前topic的分区数(用于负载均衡及并发)
        --replication-factor 备份的数量,其值必须小于等于kafka broker的数量,即安装kafka节点的数量
      
    • 2.删除topic
      kafka-topics.sh --delete --zookeeper localhost:2181 --topics first_topic
      # 删除topic时,配置文件的delete.topic.enable=true(默认),如为false,则无法删除
      # delete操作并不会马上将topic的数据删除掉,而是在log.dirs下将topic作一个标记(数据文件名称增加delete字样),之后在进行自动删除
      
    • 3.topic基本信息
      kafka-topics.sh --describe --topic first_topic --zookeeper localhost:2181
      
    • 4.控制台生产者
      kafka-console-producer.sh --topic first_topic --broker-list localhost:9092
      
      生产者写入的数据是如何分配到partition的?(api下)
      1. 如果指定partition,则写入到指定的partition
      2. 如果未指定partition,但指定key,则写入到key的hash值所对应的partition
      3. 如果未指定partition,也未指定key,则第一条消息写入时,随机生成一个整数,之后以轮询的方式指定partition(round-robin算法)
    • 5.控制台消费者
      kafka-console-consumer.sh --topic first_topic --bootstrap-server localhost:9092 --from-beginning
      

4.策略

  • 4.0.消费者分区

    • 0.一个消费者可以同时订阅多个topic
    • 1.一个topic的一个partition只能被一个消费者消费
    • 2.一个消费者可以同时订阅一个topic中的多个partition
    • 3.topic中的partition指派给消费者时有两种策略
      • 0.roundrobin,轮询方式;
      • 1.range,同一个消费者消费的partition编号是连续的。
    • 4.当消费者数量变化时,partition会重新指派给消费者
  • 4.1 偏移量

    • 0.9之前,offset保存在zookeeper;0.9之后,offset保存在kafka的topic中,topic名为__consumer_offset

3.log

  • 0.数据存储地址
    kafka的数据会存储在server.properties配置的log.dirs下
  • 1.进程产生的log
    进程产生的日志存储在$KAFKA_HOME/logs/server.log中
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值