Kafka基础知识及常用命令

1. 基本信息

    Linux安装kafka:链接

    官方文档:链接

2. 基本概念

    简单描述:

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

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

    如图,这个 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

    

    截图中从左至右的列分别表示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

    扩容结果如下

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值