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这样一个数据结构中的。

相关推荐
江畔柳前堤2 小时前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
Thomas21435 小时前
kafka 存储flink changelog两种方式和形态
分布式·flink·kafka
GIR1235 小时前
首发:2026年分布式储能系统市场分析报告——覆盖发展前景、占有率与十五五规划
分布式
leo_messi946 小时前
面试知识点梳理及相关面试题(十六)-- 分布式设计
分布式·面试·职场和发展
IT大白鼠17 小时前
MySQL 分布式集群系列 · 第四篇——实操部署指南:从零搭建生产级 MySQL NDB 集群
数据库·分布式·mysql
IT大白鼠17 小时前
MySQL 分布式集群系列 · 第三篇——核心原理精讲:NDB 自动分片、多主写入与数据同步
数据库·分布式·mysql
禾吾1 天前
Kafka基础-安装、基础命令等
kafka
cpolar技术支持1 天前
Kafka Streams 窗口统计怎么验收:本地跑订单流聚合,用 cpolar 给同事看只读结果页
java·docker·kafka·cpolar·kafka streams
星恒讯工业路由器1 天前
分布式光伏站点分散难联网?4G/5G点对多点自组网方案解析
分布式·物联网·5g·分布式光伏·自组网·点对多点通信·4g/5g
qq_452396231 天前
第十一篇:《eBPF 进阶:自定义探针与生产级可观测性部署》
分布式