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

相关推荐
2501_9333295511 小时前
技术架构深度解析:Infoseek舆情监测系统的全链路设计与GEO时代的技术实践
开发语言·人工智能·分布式·架构
工具罗某人12 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
大尚来也12 小时前
告别“字符串拼接”:在.NET中用LINQ重塑数据查询
.net·solr·linq
鬼先生_sir12 小时前
Zookeeper:从入门到精通
分布式·zookeeper·云原生
huohuopro16 小时前
Hbase伪分布式远程访问配置
数据库·分布式·hbase
Francek Chen18 小时前
【大数据存储与管理】NoSQL数据库:01 NoSQL简介
大数据·数据库·分布式·nosql
qq_2975746720 小时前
【Kafka 系列・入门第六篇】Kafka 集群部署(3 节点)+ 负载均衡配置
分布式·kafka·负载均衡
不懂的浪漫21 小时前
mqtt-plus 架构解析(一):分层架构与设计哲学
spring boot·分布式·物联网·mqtt·架构