查看“Kafka 集群操作”的源代码
←
Kafka 集群操作
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
=== 1.搭建 Kafka 集群(三个 broker) === * 准备3个 server.properties 文件<syntaxhighlight lang="shell-session"> [root@localhost ~]# cd /usr/local/kafka/kafka_2.11-2.4.0/config/ [root@localhost config]# cp server.properties server1.properties [root@localhost config]# cp server.properties server2.properties </syntaxhighlight> *server.properties<syntaxhighlight lang="apacheconf"> broker.id=0 listeners=PLAINTEXT://192.168.137.200:9092 log.dirs=/usr/local/kafka/data/kafka-logs </syntaxhighlight> *server1.properties<syntaxhighlight lang="apacheconf"> broker.id=1 listeners=PLAINTEXT://192.168.137.200:9093 log.dirs=/usr/local/kafka/data/kafka-logs-1 </syntaxhighlight> *server2.properties<syntaxhighlight lang="apacheconf"> broker.id=2 listeners=PLAINTEXT://192.168.137.200:9094 log.dirs=/usr/local/kafka/data/kafka-logs-2 </syntaxhighlight> *启动<syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server.properties [root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server1.properties [root@localhost bin]# ./kafka-server-start.sh -daemon ../config/server2.properties </syntaxhighlight> *搭建完成后通过查看 zk 中的 /brokers/ids 是否启动成功<syntaxhighlight lang="shell-session"> root@4ac6bd5bc9f6:/apache-zookeeper-3.8.0-bin/bin# ./zkCli.sh [zk: localhost:2181(CONNECTED) 0] ls /brokers/ids [0, 1, 2] </syntaxhighlight> === 2.副本的概念 === 在创建 topic(主题)时除了可以指明 partition(分区)数,还可以指明 replica(副本)数:<syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-topics.sh --create --zookeeper 192.168.137.200:2181 --replication-factor 3 --partitions 2 --topic my-replicated-topic Created topic my-replicated-topic. </syntaxhighlight> 查看 topic(主题)状况:<syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-topics.sh --describe --zookeeper 192.168.137.200:2181 --topic my-replicated-topic Topic: my-replicated-topic PartitionCount: 2 ReplicationFactor: 3 Configs: Topic: my-replicated-topic Partition: 0 Leader: 2 Replicas: 2,0,1 Isr: 2,0,1 Topic: my-replicated-topic Partition: 1 Leader: 0 Replicas: 0,1,2 Isr: 0,1,2 </syntaxhighlight> 两个 partition(分区)在 三个 broker 中都有: [[文件:两个分区在三个Broker都存在.png|无|缩略图|1400x1400像素]] 那么副本是一个什么概念呢? 副本是为了给主题中的分区创建多个备份,多个副本在 kafka 集群的多个 broker 中,会有一个副本作为 leader,其他是 follower。 [[文件:副本的概念.png|无|缩略图|1400x1400像素]] *leader Kafka 的写和读的操作,都发生在 leader 上。leader 负责把数据同步给 follower。当 leader 挂了,经过主从选举,从多个 follower 中选举产生一个新的 leader *follower 接收 leader 同步的数据 *isr 可以同步和已同步的节点会被存入到 isr 集合中。这里有一个细节:如果 isr 中的节点性能较差,会被踢出 isr 集合。 此时,broker、topic(主题)、partition(分区)、replica(副本)这些概念就全部展现了: '''<big>集群中有多个 broker,创建主题时可以指明主题有多个 partition(分区)(把消息拆分到不同的分区中存储),可以为 partition(分区)创建多个 replica(副本),不同的 replica(副本)存放在不同的 broker 里</big>'''。 ===3.关于集群消费=== *Kafka 集群消息的发送<syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-console-producer.sh --broker-list 192.168.137.200:9092,192.168.137.200:9093,192.168.137.200:9094 --topic my-replicated-topic >java </syntaxhighlight> *Kafka 集群消息的消费<syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092,192.168.137.200:9093,192.168.137.200:9094 --from-beginning --topic my-replicated-topic java </syntaxhighlight> *Kafka 集群消息的消费组的消费<syntaxhighlight lang="shell-session"> [root@localhost bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.137.200:9092,192.168.137.200:9093,192.168.137.200:9094 --from-beginning --consumer-property group.id=testGroup1 --topic my-replicated-topic java </syntaxhighlight> *关于分区消费组消费消费者的细节 [[文件:集群消费.png|无|缩略图|1200x1200像素]] * 一个 partition 只能被一个消费组中的一个消费者消费,目的是为了保证消费的顺序性,但是多个 partition 的多个消费者消费的总的顺序性是得不到保证的 * partition 的数量决定了消费组中消费者的数量,建议同一个消费组中消费者的数量不要超过 partition 的数量,否则多的消费者消费不到消息 * 如果消费者挂了,那么会触发 rebalance 机制,会让其他消费者来消费该分区
返回至
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帮助
工具
链入页面
相关更改
特殊页面
页面信息