欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kafka基础命令

程序员文章站 2024-01-31 13:11:46
...

1. 基本信息

    Linux安装kafka:链接

    官方文档:链接

2. 基本概念

    简单描述:

  • Broker:已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker)。 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。
  • Topic:Kafka将消息分门别类,每一类的消息称之为一个主题(Topic)。
  • Producer:生产者可以将数据发布到所选择的topic(主题)中。生产者负责将记录分配到topic的哪一个 partition(分区)中。
  • Consumer:订阅消息并处理发布的消息的对象称之为主题消费者(consumers)(扒自官方文档):

    消费者使用一个消费组名称来进行标识,发布到topic中的每条记录被分配给订阅消费组中的一个消费者实例.消费者实例可以分布在多个进程中或者多个机器上。
    如果所有的消费者实例在同一消费组中,消息记录会负载平衡到每一个消费者实例.
    如果所有的消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程.

Kafka基础命令

    如图,这个 Kafka 集群有两台 server 的,四个分区(p0-p3)和两个消费者组。消费组A有两个消费者,消费组B有四个消费者。
通常情况下,每个 topic 都会有一些消费组,一个消费组对应一个"逻辑订阅者"。一个消费组由许多消费者实例组成,便于扩展和容错。这就是发布和订阅的概念,只不过订阅者是一组消费者而不是单个的进程。
    在Kafka中实现消费的方式是将日志中的分区划分到每一个消费者实例上,以便在任何时间,每个实例都是分区唯一的消费者。维护消费组中的消费关系由Kafka协议动态处理。如果新的实例加入组,他们将从组中其他成员处接管一些 partition 分区;如果一个实例消失,拥有的分区将被分发到剩余的实例。
    Kafka只保证partition 分区内的记录是有序的,而不保证主题中不同分区的顺序。每个 partition 分区按照key值排序足以满足大多数应用程序的需求。但如果你需要总记录在所有记录的上面,可使用仅有一个分区的主题来实现,这意味着每个消费者组只有一个消费者进程。

  • Consumer Group:消费组,用于归组同类消费者。每个consumer属于一个特定的consumer group,多个消费组可以共同消息一个Topic下的消息,每消费组中的消费者消费Topic的部分消息,这些消费者就组成了一个分组。

3. Kakfa常用命令

    首先需要进入kafka安装路径再验证以下命令

  • 新建topic命令,示例:新建topic:TestTopic,4分区2副本,命令如下
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic TestTopic --partitions 4 --replication-factor 2

    注意,副本数要小于broker的数量

  • 查看所有的topic列表,命令如下:
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --list
  • 查看topic详细信息,命令如下:
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic TestTopic

    

Kafka基础命令

    截图中从左至右的列分别表示topic名称、partition编号,此partions的leader broker编号,副本存放的broker编号,同步broker编号

  • 扩容partition,将刚才创建的topic中的partion由3个扩容到6个
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic TestTopic --partitions 6

    扩容结果如下

Kafka基础命令

    注意,partition的数量不能减少,否则会报错,所以扩容之前一定要确认原有partition的数量

  • 删除topic
source /etc/profile && bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic TestTopic

    如果只出现下面提示,需要将kafka的service.properties配置文件中的delete.topic.enable设置为true

Kafka基础命令

Kafka基础命令

    正常情况删除返回日志如下:

Kafka基础命令

    以上对kafka的topic的增删改查基本命令介绍完成了,后续若学习到新的实用命令还会补充