kafka快速上手

kafka基础工作机制是消息发送者可以将消息发送到kafka上指定的topic,而消息消费者,可以从指定的topic上消费消息。

kafka体系中的一些概念:

**消费者组:**每个消费者可以指定一个所属的消费者组,相同消费者组的消费者共同构成一个逻辑消费者组。每一个消息会被多个感兴趣的消费者组消费,但是在每一个消费者组内部,一个消息智慧被消费一次。
topic :这是一个逻辑概念,一个topic被认为是业务含义相同的一组消息。客户端都通过绑定topic来生产或者消费自己感兴趣的话题。
分区partition:topic只是一个逻辑概念,而partition就是实际存储消息的组件。每个partition就是一个queue队列结构。所欲偶消息以FIFO的顺序保存在这些partition分区中。

快速搭建单机服务

kafka的运行环境非常简单,只要有jvm虚拟机就可以。

kafka安装

官网下载地址:https://kafka.apache.org/community/downloads/ 我们选择下载kafka_2.13-3.8.0.tgz版本。

注意:前面2.13是开发kafka的Scala语言版本,后面3.8.0是kafka版本。

上传服务器,解压即可使用。

zookeeper启动

kafka需要基于zookeeper启动。并且kafka自带zookeeper。

yaml 复制代码
nohup bin/zookeeper-server-start.sh config/zookeeper.properties &

启动kafka

yaml 复制代码
nohup bin/kafka-server-start.sh config/server.properties &
kafka基本使用

创建topic

yaml 复制代码
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test
Created topic test.

发送消息给topic

yaml 复制代码
./bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
>123
>345
>456
>

接收消息

yaml 复制代码
#这样之前发送的消息,接收不到,只能接收新发送的消息
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test
567
#--from-beginning 是指从开始消息接收
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
123
345
456
567

#--partition 0 --offset 2 指定从第3条开始接收
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --partition 0 --offset 2
456
567

看似消息发送给了topic,实际是存储到了topic中的一个partition中,每一个消息都有一个编号,就是offset的编号,指定partition 和offset 可以选择接收消息

消费者组

查看消费者组信息

yaml 复制代码
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group testGroup

Consumer group 'testGroup' has no active members.
组名称                           partition编号  当前消费了多少消息  总共有多少消息 还剩多少消息
GROUP          TOPIC           PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
testGroup       test            0          10              10              0               -               -    

当两个相同消费者组都监听时,只能有一个消费者组收到消息

yaml 复制代码
#第一个消费者组
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group testGroup
1
2
3
yaml 复制代码
#第二个消费者组
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group testGroup

当两个不同消费者组都监听时,都能收到消息

yaml 复制代码
[root@instance-viiz6yun kafka_2.13-3.8.0]# ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group testGroup2
4
5
6
理解kafka的消息传递机制

kafka的消息发送者和消费者通过topic来进行业务沟通。实际上,所有的消息是存在服务端的partition这样一个数据结构中的。

相关推荐
KmSH8umpK12 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第三篇
redis·分布式·wpf
KmSH8umpK16 小时前
SpringBoot 分布式锁实战:从单机锁到Redis分布式锁全覆盖,解决超卖、重复下单、幂等并发问题
spring boot·redis·分布式
KmSH8umpK19 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案
redis·分布式·wpf
长河20 小时前
XXL-JOB 从本地快速上手到核心架构深度解析
分布式
juniperhan20 小时前
Flink 系列第22篇:Flink SQL 参数配置与性能调优指南:从 Checkpoint 到聚合优化
大数据·数据仓库·分布式·sql·flink
juniperhan1 天前
Flink 系列第21篇:Flink SQL 函数与 UDF 全解读:类型推导、开发要点与 Module 扩展
java·大数据·数据仓库·分布式·sql·flink
marsh02062 天前
41 openclaw分布式会话管理:跨服务状态同步方案
分布式·ai·编程·技术
杰建云1672 天前
Plurai 分布式推理引擎深度评测
分布式
星筏2 天前
深入理解分布式锁:ZooKeeper vs Redis
redis·分布式·zookeeper
Knight_AL2 天前
从 0 到 1:PG WAL → Debezium → Kafka → Spring Boot → Redis
spring boot·redis·kafka