网站首页 > 技术文章 正文
目前,网上所有部署kafka集群的教程都要求必须部署zookeeper,集群架构如下图:
为什么kafka依赖zookeeper?
zookeeper是一个开源的分布式应用协调系统,用于管理分布式应用程序。kafka使用zookeeper存储kafka集群元数据信息,包括主题配置、主题分区位置等。可以说,kafka没有zookeeper就无法工作。
如何让kafka摆脱zookeeper依赖?
使用zookeeper充当kafka的外部元数据管理系统存在一些问题,例如数据重复、增加部署复杂度,需要额外的java进程等。
为了在没有zookeeper的情况下运行kafka,可以使用kafka Raft元数据模式(KRaft)运行它。当 Kafka 集群处于 KRaft 模式时,它将元数据存储在控制器节点的 KRaft 仲裁中。元数据将存储在内部kafka topic @metadata中。
注意,KRaft目前还处于早期实验阶段,不应在生产中使用,但可在 kafka 2.8 版本中进行测试。
实战
在下面的步骤中,我们将部署一个3节点kafka集群并创建一个测试主题,并使用kafka生产者将数据生成到测试主题中,还将使用kafka消费者使用kafka主题中的数据。
我们将用一台服务器的不同端口来模拟3个节点,服务器操作系统使用centos8。
1.下载kafka
从https://kafka.apache.org/downloads下载kafka 2.8.0,并解压到目录中:
wget https://apachemirror.wuchna.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz
tar xzf kafka_2.12-2.8.0.tgz
cd kafka_2.12-2.8.0
2.创建kafka集群配置
kafka主目录中的config/kraft/server.properties文件,是由kafka提供的示例文件,展示了如何在没有zookeeper的情况下启动kafka。
我们需要从server.properties复制成3个新文件,因为我们将创建一个3节点集群。
cd config/kraft
cp server.properties server1.properties
cp server.properties server2.properties
cp server.properties server3.properties
修改server1.properties以下属性,其他不要改动:
#节点Id,server2设为2,server3设为3
node.id=1
#所有可用的kafka控制器。我们将有3个kraft控制器节点分别在端口19091、19092和19091上运行
controller.quorum.voters=1@localhost:19091,2@localhost:19092,3@localhost:19093
#broker将使用端口9091,而kraft控制器将使用端口19091。其他2个节点分别用9092、19092和9093、19093端口
listeners=PLAINTEXT://:9091,CONTROLLER://:19091
#server2设为9092,server3设为9093
advertised.listeners=PLAINTEXT://localhost:9091
#日志目录,其他节点将server1改成对应节点名称
log.dirs=/tmp/server1/kraft-combined-logs
同样修改server2.properties、server3.properties上述属性。
3.创建kafka群集id和日志目录
首先,我们需要在启动服务器之前创建kafka集群id。执行下列命令,并记下运行生成的uuid:
./bin/kafka-storage.sh random-uuid
#我的输出
jzjo-mGLQyyfXLJuj7nKUw
接下来我们格式化所有存储目录:
#server1
./bin/kafka-storage.sh format -t jzjo-mGLQyyfXLJuj7nKUw -c ./config/kraft/server1.properties
#server2
./bin/kafka-storage.sh format -t jzjo-mGLQyyfXLJuj7nKUw -c ./config/kraft/server2.properties
#server3
./bin/kafka-storage.sh format -t jzjo-mGLQyyfXLJuj7nKUw -c ./config/kraft/server3.properties
4.启动kafka服务器
可以使用以下命令在守护程序模式下启动kafka服务器:
#server1
./bin/kafka-server-start.sh -daemon ./config/kraft/server1.properties
#server2
./bin/kafka-server-start.sh -daemon ./config/kraft/server2.properties
#server3
./bin/kafka-server-start.sh -daemon ./config/kraft/server3.properties
5.创建kafka topic
使用以下命令创建hello-kraft topic:
./bin/kafka-topics.sh --create --topic hello-kraft --partitions 3 --replication-factor 3 --bootstrap-server localhost:9091
6.生产和消费kafka数据
使用以下命令开启一个生产者:
bin/kafka-console-producer.sh --broker-list localhost:9091 --topic hello-kraft
在另一个终端中,使用以下命令启动消费者,注意,监听的集群另一个节点:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hello-kraft
可以看到,能够正常地执行!!!
猜你喜欢
- 2024-10-25 使用自带zookeeper安装单机kafka(适合刚接触kafka的同学)
- 2024-10-25 Kafka最全详解(图文全面总结) kafka基础知识
- 2024-10-25 深入了解Apache Kafka 深入了解对方的36个问题
- 2024-10-25 kafka和zookeeper在k8s集群踩的一些坑
- 2024-10-25 Kafka 2.8独立运行,不再需要ZooKeeper
- 2024-10-25 告别 ZooKeeper:Kafka 将提供自管理的元数据仲裁机制
- 2024-10-25 Kafka架构最全详解(图文全面总结)
- 2024-10-25 Zookeeper集群搭建及原理 zookeeper集群主要有哪三种角色
- 2024-10-25 Kafka架构和原理机制(图文全面详解)
- 2024-10-25 玩了分布式这么久,你不会连Kafka都不清楚吧
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)