1 新的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中先读取数据,因此集群的性能得到一定的提升。

  • 由于不再依赖Zookeeper,Kafka集群扩展时不用再受到Zookeeper读写能力的限制。

  • Controller不再动态选举,而是由配置文件规定。这样可以有针对性的加强Controller节点的配置,而不是像以前一样对随机Controller节点的高负载束手无策。

2 KRaft架构模式部署实战

本次我们采用物理宿主机部署,本集群三个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文件:

(1)kafka01

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@kafka01:9093,2@kafka02:19093,3@kafka03:29093
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://kakfa01:9092
log.dirs=/usr/local/modules/kakfa01/logs

(2)kafka02

process.roles=broker,controller
node.id=2
controller.quorum.voters=1@kafka01:9093,2@kafka02:19093,3@kafka03:29093
listeners=PLAINTEXT://:19092,CONTROLLER://:19093
advertised.listeners=PLAINTEXT://kakfa02:19092
log.dirs=/usr/local/modules/kakfa02/logs

(3)kafka03

process.roles=broker,controller
node.id=2
controller.quorum.voters=1@kafka01:9093,2@kafka02:19093,3@kafka03:29093
listeners=PLAINTEXT://:29092,CONTROLLER://:29093
advertised.listeners=PLAINTEXT://kakfa03:29092
log.dirs=/usr/local/modules/kakfa03/logs

初始化集群数据目录

(1)生成存储目录唯一ID(UUID)

bin/kafka-storage.sh random-uuid
uTTIHcpoQSeiGlItgLau0A

(2)用这个唯一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.properties

(3)启动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.properties

(4)验证Kafka集群节点服务

# jps
1207 Kafka
2137 Jps
2013 Kafka
1614 Kafka

快速测试生产消费

(1)创建测试topic

kafka01/bin/kafka-topics.sh --create --bootstrap-server kafka01:9092,kafka02:19092,kafka03:29092 --replication-factor 2 --partitions 3 --topic test
Created topic test.

(2)模拟Producer

kafka01/bin/kafka-console-producer.sh --broker-list kafka01:9092,kafka02:19092,kafka03:29092 --topic test
>hello
>world
>edison
>zhou

(3)模拟Consumer

kafka02/bin/kafka-console-consumer.sh --bootstrap-server kafka01:9092,kafka02:19092,kafka03:29092 --from-beginning --topic test
hello
world
edison
zhou

可以看到,已经可以正常的生产和消费数据。

3 总结

本文总结了Kafka KRaft模式的基本概念和优点,介绍了Kafka KRaft模式的部署过程。基于KRaft模式,我们不再需要依赖Zookeeper进行元数据管理和共识服务,在技术选型时不再需要引入额外的组件,对于Kafka来说,实在是个好消息。

至此,Kafka学习征途系列已经有了11篇推文,目前已经走到了结尾,总结这个系列既是我对自己学习的总结,也是系统地梳理所学知识,相信它对我有帮助,也一定对你有所帮助

参考资料

极客时间,胡夕《Kafka核心技术与实战》

B站,尚硅谷《Kafka 3.x入门到精通教程》

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

Kafka入门实战教程(10):不再依赖ZooKeeper的KRaft的更多相关文章

  1. Kafka入门实战教程(7):Kafka Streams

    1 关于流处理 流处理平台(Streaming Systems)是处理无限数据集(Unbounded Dataset)的数据处理引擎,而流处理是与批处理(Batch Processing)相对应的.所 ...

  2. 转 Kafka入门经典教程

    Kafka入门经典教程 http://www.aboutyun.com/thread-12882-1-1.html 问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic. ...

  3. Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算 ...

  4. Kafka入门经典教程

      本帖最后由 desehawk 于 2015-5-3 00:45 编辑问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程 ...

  5. Kafka入门经典教程【转】

    问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有 ...

  6. [入门帮助] Kafka入门经典教程

    问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic.发送消息.消费消息?3.如何书写Kafka程序?4.数据传输的事务定义有哪三种?5.Kafka判断一个节点是否活着有 ...

  7. ZooKeeper入门实战教程(一)-介绍与核心概念

    1.ZooKeeper介绍与核心概念1.1 简介ZooKeeper最为主要的使用场景,是作为分布式系统的分布式协同服务.在学习zookeeper之前,先要对分布式系统的概念有所了解,否则你将完全不知道 ...

  8. duilib教程之duilib入门简明教程10.界面设计器 DuiDesigner

    上一个教程讲解了怎么布局最大化.最小化.关闭按钮,但是如果手动去计算这三个按钮的位置和大小的话,非常的不直观,也很不方便.    所以这一章准备介绍duilib的UI设计器,由于这个设计器很不完善,也 ...

  9. 《OD大数据实战》Kafka入门实例

    官网: 参考文档: Kafka入门经典教程 Kafka工作原理详解 一.安装zookeeper 1. 下载zookeeper-3.4.5-cdh5.3.6.tar.gz 下载地址为: http://a ...

  10. MVC5 + EF6 入门完整教程二

    从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分. ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,Vie ...

随机推荐

  1. Fast Prefix Sum Implementation Using Subgroups in GLSL Compute Shaders

    利用 Vulkan 1.1 的 subgroup 特性加速 ComputeShader 的前缀和计算,参考: Vulkan Subgroup Tutorial - Khronos Blog - The ...

  2. windows10环境下,remote wsl链接wsl ubuntu使用ubuntu 开发环境,报错:VS Code server for WSL closed unexpectedly check WSL terminal for more details

    报错提示这样 在windows的vscode里面的关键报错信息是:vscode wsl Unable to detect if server is already installed: Error: ...

  3. 12.ZIP伪加密

    题目是伪加密,打开压缩包,发现里面直接放着flag.txt,但是好像需要输入密码,此时我们在不看题目的第一反应就是破解,但是无果,看了别人的wp之后,了解了一点伪加密. ZIP文件分为:压缩源文件数据 ...

  4. 在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持

    我在前面随笔中介绍了在SqlSugar的开发框架中实现EAV模型(实体-属性-值)的处理,这个EAV模型实现的目的是支持弹性化的数据库设计,可以自由扩展数据库表字段和数据的查询和存储,实现的思路是在常 ...

  5. MySQL 高可用集群搭建部署

    MySQL 高可用集群搭建(GTID 模式 + 自动故障转移) 一.环境规划 角色 IP 地址 说明 主库 (Master) 192.168.1.100 运行 MySQL + Keepalived/M ...

  6. n8n 快速入门

    今天,我将为大家介绍一个当前非常流行的可视化智能体搭建平台--n8n.n8n(发音为 "n-eight-n")是一个强大的自动化工具,它能够帮助您轻松地将任何具有API的应用程序与 ...

  7. MIUI系统,APKMirror Installer安装apkm的时候提示app installation failed Installation aborted解决方案

    场景 我的手机是MIUI系统,通过APKMirror Installer安装apkm的时候提示app installation failed Installation aborted. 本来不想装了, ...

  8. pikachu靶场的详细搭建,附pikachu靶场源码下载链接

    一.安装好phpstudy 首先搭建pikachu靶场的第一步,先是安装好phpstudy,这是一款集成环境的软件,里面包含了Apache,FTP,MySQL,Nginx.phpstudy的官方网址: ...

  9. 【工具】FFmpeg|压缩视频,500MB变25MB(有损,支持 Windows、Linux、macOS 各个平台)

    参考: 如何将一分钟长的1080p视频压缩至5MB以内?-知乎-滔滔清风 近期HEVC扩展备用安装方法-B站-悲剧天下 总共三个步骤,安装FFmpeg.运行指令.打开视频. 亲测 500MB 变 25 ...

  10. C# 定时器 Timer 如何精确到 1-2 毫秒以内

    最近在排查项目OTA的一个问题,触发了一毫秒或者2毫秒执行一次进程间通信的,导致通信阻塞的问题.这样就需要用到模拟触发1ms或者2ms触发事件.这让我第一时间想到了C#的定时器.由于我们项目用到的框架 ...