kafka学习

一、基本概念

1、Topic(主题)

①kafka中的消息以topic为单位进行归类,生产者负责将消息发送到特定的topic,而消费者负责订阅topic并进行消费。
②topic是一个逻辑上的概念,为了提升性能引入了partition(分区)的概念,partition是物理分组。一个topic可以包含多个partition,同一个topic下的不同partition包含的消息是不同的。

2、Partition(分区)

①一个topic的不同partition可以放到不同broker(节点)上,充分利用机器资源。
②每个分区在不同的服务器上,其实就相当于是一个目录,通过分区就将topic里的数据,放到不同的服务器上实现分布式存储。

3、Broker(节点)

broker是kafka的一个实例,一台kafka服务器上会有一个或多个实例。多台kafka服务构成了kafka集群。

4、Replica(副本)

①为了保证partition中数据安全,所以设置了每个partition可以设置多个replica,每个replica都有角色之分,只有一个replica作为leader,而剩余的follower。生产者在发送数据的时候,是直接发送到leader partition中的,然后follower partition从leader那里同步数据,消费者消费数据的时候,也是从leader那里去消费的。
②副本的数量不能超过kafka节点的数量

5、示例

在这里插入图片描述

如图Kafka 集群中有4个 broker,主题A中有3个分区(P0、P1、P2),且副本因子(即副本个数)也为3,如此每个分区便有1个 leader 副本和2个 follower 副本。

二、相关命令

相关命令脚本位于kafka安装位置的bin目录下

1、主题帮助命令kafka-topics.sh

选项含义
- -bootstrap-server指定kafka的broker的服务列表
- -create创建新的topic,后面紧跟topic名称,
例如: --create --topic test
- -delete删除topic,后面紧跟topic名称,
例如: --delete --topic test
- -describe列出topic的描述信息,多个用逗号分隔

①列出已有的主题

#列出由 kafka1:9092、kafka2:9093 和 kafka3:9094 指定的 Kafka 集群中的所有主题。如下图所示,此时还没有创建任何主题。
sh kafka-topics.sh --list --bootstrap-server kafka1:9092,kafka2:9093,kafka3:9094

在这里插入图片描述

②创建主题

#在 Kafka 集群中创建一个名为 test 的新主题,该主题具有 3 个分区和 3 个副本,以确保数据的高可用性和容错能力。如下图所示新的主题已创建完成
sh kafka-topics.sh --create --bootstrap-server kafka1:9092,kafka2:9093,kafka3:9094 --topic test --partitions 3 --replication-factor 3

在这里插入图片描述

③查看主题描述信息

sh kafka-topics.sh --describe --bootstrap-server kafka1:9092,kafka2:9093,kafka3:9094 --topic test 
#可以看到分区0的leader副本在broker id=2的节点上,Replicas表示该0号分区所有的副本所在的broker id,Isr表示存活的broker节点。

在这里插入图片描述
使用kafka-server-stop.sh关闭broker1节点,可以看到2号分区的leader副本已经由broker 1节点上的副本更换为broker 3节点上的副本了,同时Isr的broker存活列表中已经没有broker 1了。
在这里插入图片描述

2、生产消息

#在控制台输入数据进行消息的生产
kafka-console-producer.sh --broker-list kafka1:9092,kafka2:9093,kafka3:9094 --topic test

在这里插入图片描述

/bitnami/kafka/data存放数据的路径,其中test-0 test-1 test-2 是分区,可以看到一开始三个文件夹中日志文件都为空
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
写入一条消息hello world,发现在test-1文件夹下的日志文件进行了数据的增加

在这里插入图片描述

3、消费数据

sh kafka-console-consumer.sh --bootstrap-server kafka1:9092,kafka2:9093,kafka3:9094 --topic test

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值