中国建设银行山西省分行网站,网页升级维护每天更新,云南省建设测量员注册网站,把照片做册子的网站【Kafka】| 总结/Edison Zhou1新的KRaft架构在Kafka 2.8之前#xff0c;Kafka重度依赖于Zookeeper集群做元数据管理和集群的高可用#xff08;即所谓的共识服务#xff09;。在Kafka 2.8之后#xff0c;引入了基于Raft协议的KRaft模式#xff0c;支持取消对Zookeeper的依赖… 【Kafka】| 总结/Edison Zhou1新的KRaft架构在Kafka 2.8之前Kafka重度依赖于Zookeeper集群做元数据管理和集群的高可用即所谓的共识服务。在Kafka 2.8之后引入了基于Raft协议的KRaft模式支持取消对Zookeeper的依赖。在此模式下一部分Kafka Broker被指定为Controller另一部分则为Broker。这些Controller的作用就是以前由Zookeeper提供的共识服务并且所有的元数据都将存储在Kafka主题中并在内部进行管理。总体而言使用KRaft的好处如下Kafka不用再依赖外部框架能够做到独立运行。类似于Redis的Sentinel它的本质仍然是一个Kafka实例。Controller管理集群时不再需要从Zookeeper中先读取数据因此集群的性能得到一定的提升。由于不再依赖ZookeeperKafka集群扩展时不用再受到Zookeeper读写能力的限制。Controller不再动态选举而是由配置文件规定。这样可以有针对性的加强Controller节点的配置而不是像以前一样对随机Controller节点的高负载束手无策。2KRaft架构部署实战本次我们采用物理宿主机部署本集群三个Kafka实例均在一台主机上。下载Kafka安装包从Apache Kafka官方社区下载最新版3.2.0的安装包.tgz然后将其拷贝到服务器上并解压。这里我使用一台Linux主机启动三个Kafka实例分别绑定9092,19092,29092端口来模拟三台服务器的集群效果。由于只有三个实例因此它们既是Controller节点也是Broker节点。修改KRaft必要配置和基于Zookeeper的模式不同KRaft模式下的配置需要进入Kraft目录找到server.properties文件cd config/kraft依次修改每个服务器下的kraft目录下的server.properties文件1kafka01process.rolesbroker,controller
node.id1
controller.quorum.voters1kafka01:9093,2kafka02:19093,3kafka03:29093
listenersPLAINTEXT://:9092,CONTROLLER://:9093
advertised.listenersPLAINTEXT://kakfa01:9092
log.dirs/usr/local/modules/kakfa01/logs2kafka02process.rolesbroker,controller
node.id2
controller.quorum.voters1kafka01:9093,2kafka02:19093,3kafka03:29093
listenersPLAINTEXT://:19092,CONTROLLER://:19093
advertised.listenersPLAINTEXT://kakfa02:19092
log.dirs/usr/local/modules/kakfa02/logs3kafka03process.rolesbroker,controller
node.id2
controller.quorum.voters1kafka01:9093,2kafka02:19093,3kafka03:29093
listenersPLAINTEXT://:29092,CONTROLLER://:29093
advertised.listenersPLAINTEXT://kakfa03:29092
log.dirs/usr/local/modules/kakfa03/logs初始化集群数据目录1生成存储目录唯一IDUUIDbin/kafka-storage.sh random-uuid
uTTIHcpoQSeiGlItgLau0A2用这个唯一ID格式化Kafka存储目录# kafka01
/usr/local/modules/kafka01/bin/kafka-storage.sh format -t uTTIHcpoQSeiGlItgLau0A -c /usr/local/modules/kafka01/config/kraft/server.properties
# kafka02
/usr/local/modules/kafka02/bin/kafka-storage.sh format -t uTTIHcpoQSeiGlItgLau0A -c /usr/local/modules/kafka02/config/kraft/server.properties
# kafka03
/usr/local/modules/kafka03/bin/kafka-storage.sh format -t uTTIHcpoQSeiGlItgLau0A -c /usr/local/modules/kafka03/config/kraft/server.properties3启动Kafka KRaft集群节点服务# kafka01
/usr/local/modules/kafka01/bin/kafka-server-start.sh -daemon /usr/local/modules/kafka01/config/kraft/server.properties
# kakfa02
/usr/local/modules/kafka02/bin/kafka-server-start.sh -daemon /usr/local/modules/kafka02/config/kraft/server.properties
# kafka03
/usr/local/modules/kafka03/bin/kafka-server-start.sh -daemon /usr/local/modules/kafka03/config/kraft/server.properties4验证Kafka集群节点服务# jps
1207 Kafka
2137 Jps
2013 Kafka
1614 Kafka快速测试生产消费1创建测试topickafka01/bin/kafka-topics.sh --create --bootstrap-server kafka01:9092,kafka02:19092,kafka03:29092 --replication-factor 2 --partitions 3 --topic test
Created topic test.2模拟Producerkafka01/bin/kafka-console-producer.sh --broker-list kafka01:9092,kafka02:19092,kafka03:29092 --topic test
hello
world
edison
zhou3模拟Consumerkafka02/bin/kafka-console-consumer.sh --bootstrap-server kafka01:9092,kafka02:19092,kafka03:29092 --from-beginning --topic test
hello
world
edison
zhou可以看到已经可以正常的生产和消费数据。End总结本文总结了Kafka KRaft模式的基本概念和优点介绍了Kafka KRaft模式的部署过程。基于KRaft模式我们不再需要依赖Zookeeper进行元数据管理和共识服务在技术选型时不再需要引入额外的组件对于Kafka来说实在是个好消息。至此Kafka学习征途系列已经有了11篇推文目前已经走到了结尾总结这个系列既是我对自己学习的总结也是系统地梳理所学知识相信它对我有帮助也一定对你有所帮助参考资料深度感谢以下参考教程极客时间胡夕《Kafka核心技术与实战》B站尚硅谷《Kafka 3.x入门到精通教程》年终总结Edison的2021年终总结数字化转型我在传统企业做数字化转型C#刷题C#刷剑指Offer算法题系列文章目录.NET面试.NET开发面试知识体系.NET大会2020年中国.NET开发者大会PDF资料