查看“Kafka的基本知识”的源代码
←
Kafka的基本知识
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
=== 1.Kafka 的安装=== *部署一台 ZooKeeper 服务器 *安装 JDK *下载 Kafka 的安装包:https://kafka.apache.org/downloads *上传到 Kafka 服务器上:/usr/local/kafka *解压缩压缩包 *进入到 config 目录内,修改 server.properties <syntaxhighlight lang="apacheconf"> # broker.id 属性在 Kafka 集群中必须要是唯一 broker.id # Kafka 部署的机器 IP 和提供服务的端口号 listeners=PLAINTEXT://192.168.137.200:9092 # Kafka 的消息存储文件 log.dirs=/usr/local/kafka/data/kafka-logs # Kafka 连接 ZooKeeper 的地址 zookeeper.connect=localhost:2181 </syntaxhighlight>[[Kafka 的安装 详细|详细]] *进入到 bin 目录内,执行以下命令来启动 Kafka 服务器(带着配置文件) <syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server.properties </syntaxhighlight>[[启动 Kafka|详细]] *校验 Kafka 是否启动成功: 进入到 ZooKeeper 内查看是否有 Kafka 的节点:/brokers/ids/0 [[校验 Kafka 是否启动成功|详情]] ===2. Kafka 中的一些基本概念=== Kafka 中有这么些复杂的概念 [[文件:Kafka 中的一些基本概念.png|无|缩略图|1200x1200px|替代=]] {| class="wikitable" !名称 !解释 |- |Broker |消息中间件处理节点,一个 Kafka 节点就是一个 broker,一个或者多个Broker可以组成一个 Kafka 集群 |- |Topic |Kafka 根据 topic 对消息进行归类,发布到 Kafka 集群的每条消息都需要指定一个 topic |- |producer |消息生产者,向 Broker 发送消息的客户端 |- |Consumer |消息消费者,从 Broker 读取消息的客户端 |} ===3.创建 topic=== *通过 Kafka 命令向 ZK 中创建一个主题 <syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test Created topic test. [root@localhost ~]# </syntaxhighlight> *查看当前 ZK 中所有的主题 <syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-topics.sh --list --zookeeper localhost:2181 test [root@localhost ~]# </syntaxhighlight> ===4.发送消息=== 把消息发送给 broker 中的某个 topic,打开一个 Kafka 发送消息的客户端,然后开始用客户端向 Kafka 服务器发送消息<syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-console-producer.sh --broker-list 192.168.137.200:9092 --topic test >123 >abc >java </syntaxhighlight> ===5.消费消息=== 打开一个消费消息的客户端,向 Kafka 服务器的某个主题消费消息 *方式一:从当前主题中的最后一条消息的 offset(偏移量位置) +1开始消费 <syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092 --topic test java qf hz </syntaxhighlight> *方式二:从当前主题中的第一条消息开始消费 <syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092 --from-beginning --topic test 123 abc java qf hz </syntaxhighlight> ===6.关于消息的细节=== [[文件:关于消息的细节.png|无|缩略图|1300x1300像素]] *生产者将消息发送给 broker,broker 会将消息保存在本地的日志文件中 <syntaxhighlight lang="shell-session"> /usr/local/kafka/data/kafka-logs/主题-分区/00000000000000000000.log </syntaxhighlight> *消息的保存是有序的,通过 offset 偏移量来描述消息的有序性 *消费者消费消息时也是通过 offset 来描述当前要消费的那条消息的位置 ===7.单播消息=== 在一个 Kafka 的 topic 中,启动两个消费者,一个生产者,问:生产者发送消息,这条消息是否同时会被两个消费者消费? 如果多个消费者在同一个消费组,那么只有一个消费者可以收到订阅的 topic 中的消息。 换言之,同一个消费组中只能有一个消费者收到一个 topic 中的消息。<syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092 --consumer-property group.id=testGroup --topic test a b </syntaxhighlight> === 8.多播消息 === 不同的消费组订阅同一个 topic,那么不同的消费组中只有一个消费者能收到消息。 实际上也是多个消费组中的多个消费者收到了同一个消息。<syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092 --consumer-property group.id=testGroup --topic test d </syntaxhighlight><syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092 --consumer-property group.id=testGroup1 --topic test d </syntaxhighlight> [[文件:单播和多播消息.png|居中|缩略图|1200x1200像素|单播和多播消息]] === 9.查看消费组的详细信息 === 通过以下命令可以查看到消费组的详细信息:<syntaxhighlight lang="shell-session"> [root@localhost __consumer_offsets-0]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.137.200:9092 --describe --group testGroup GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID testGroup test 0 7 7 0 consumer-testGroup-1-e02ae50d-c6ee-45b2-986e-259dfb5c3a9a /192.168.137.200 consumer-testGroup-1 [root@localhost __consumer_offsets-0]# </syntaxhighlight>重点关注以下几个信息: * CURRENT-OFFSET:最后被消费的消息的偏移量 * LOG-END-OFFSET:消息总量(最后一条消息的偏移量) * LAG:积压了多少条消息
返回至
Kafka的基本知识
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息