Kafka集群 版本:V3.5.1

名称 Node1 Node2 Node3
IP 172.29.145.157 172.29.145.182 172.29.145.183

(1)查看Kraft集群中的状态以及Leader节点,投票节点

使用--status可以查看集群选举次数/水位线以及投票节点等

使用--replication可以查看Ledaer和Follower分布

使用kafka-metadata-quorum.sh

./kafka-metadata-quorum.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 describe --replication

./kafka-metadata-quorum.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 describe --status

(2)查看Kraft集群中的Topic

使用--list可以查看所有的topic

使用--describe --topic topicname可以查看指定topic的分区状态和副本同步状态

使用kafka-topics.sh

./kafka-topics.sh --list --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092

./kafka-topics.sh --describe --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1

(3)启动与关闭Kraft集群

启动集群时一定需要添加--daemon参数以后台守护进程运行

使用kafka-server-start.sh
使用kafka-server-stop.sh

./kafka-server-start.sh -daemon ../config/kraft/server.properties

启动后可以使用jps来查看kafka集群是否启动成功

关闭集群也需要加上参数server.properties

./kafka-server-stop.sh ../config/kraft/server.properties

(4)测试集群性能

使用kafka-producer-perf-test.sh生产数据
使用kafka-consumer-perf-test.sh消费数据

./kafka-producer-perf-test.sh --producer-props bootstrap.servers=172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1 --num-records 1000000 --record-size 4096 --throughput 50000

--topic指定topic
--num-records指定生产者产生的消息数量
--record-size指定一条消息的大小KB为单位
--throughput指定生产者每秒写入的消息数量限制(吞吐量),-1则为不限制



反馈的指标是生产者发送了一百万条消息,每秒生产消息15377条(生产速率60MB/s),平均时延394毫秒,后续就是各种时延的分布范围

./kafka-consumer-perf-test.sh --topic test-topic1 --messages 1000000 --fetch-size 40000 --broker-list 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092

使用--topic指定topic
使用--messages指定需要消费的消息数量
使用--fetch-size指定一次获取的消息总大小
使用broker-list来指定消费的broker



反馈的指标是 Kafka集群消费100万条消息用时23秒,消息总大小3906MB,平均每秒消费速率168MB,消息总数量1000015条,每秒消费消息数量43185条

(5)命令行验证生产实时消费

使用kafka-console-producer.sh实时生产消息
使用kafka-console-consumer.sh实时消费消息

./kafka-console-producer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2

./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2

同时在Kafka管控平台上也能够实时查询到test-topic2上的消息

同时我们也可以指定offset来使消费者从指定offset开始消费,对于生产环境有利于故障恢复

./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic2 --partition 1 --offset 2

可以看到由于输入的消息key相同所以消息都分到了partition1上,所以在消费消息时需要指定分区partition1,然后指定offset消息位移量2,就可以读取到offset=2对应的消息3以及之后的所有消息了

(6)查询消费者组信息

使用kafka-consumer-groups.sh

./kafka-consumer-groups.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --list

./kafka-consumer-groups.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --group perf-consumer-91301 --describe

通过--list查询到消费者组列表再通过--describe查询具体信息

可以看到在test-topic1主题上的partition5和partition0的Lag为18,代表着两个分区还有18条消息没有消费,通过kafka-console-consumer.sh尝试消费partition5的剩余18条消息

./kafka-console-consumer.sh --bootstrap-server 172.29.145.157:9092,172.29.145.182:9092,172.29.145.183:9092 --topic test-topic1 --group perf-consumer-91301

ps:很多很多消息,因为输入的时候一条消息的大小由--record-size决定,设置为4096KB...

此时再通过describe查看消费者组情况看在partition5和partition0上是否还有消息Lag



可以看到消息都消费完了,Lag也已为0,再执行相同的命令只会等待而不会继续输出消息

Kraft模式下Kafka脚本的使用的更多相关文章

  1. Kafka KRaft模式探索

    1.概述 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据.其核心组件包含Producer.Broker.Consumer,以及依赖的Zookeeper集群. ...

  2. Linux Shell脚本在service模式下的环境变量

    普通Shell脚本在终端下运行时,环境变量来自于init/profile/.bash_profile等,就是在当前终端下可以得到的环境,比如PATH.在service模式下,脚本运行在受限的环境中:比 ...

  3. .NET应用架构设计—表模块模式与事务脚本模式的代码编写

    阅读目录: 1.背景介绍 2.简单介绍表模块模式.事务脚本模式 3.正确的编写表模块模式.事务脚本模式的代码 4.总结 1.背景介绍 要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是 ...

  4. UEFI+GPT模式下的Windows系统中分区结构和默认分区大小及硬盘整数分区研究

    内容摘要:本文主要讨论和分析在UEFI+GPT模式下的Windows系统(主要是最新的Win10X64)中默认的分区结构和默认的分区大小,硬盘整数分区.4K对齐.起始扇区.恢复分区.ESP分区.MSR ...

  5. 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用

    我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会 ...

  6. 解决360、猎豹浏览器等极速模式下css3兼容问题

    有时候你会发现你写的animation动画的css3效果,在IE.谷歌.火狐等主流的新版本的浏览器的是没有什么兼容问题的,即便你不写前缀,也是可以显示动画效果的.然后,你本地在360浏览器或猎豹浏览器 ...

  7. Oracle在归档模式下恢复

    =============== 数据库的完全恢复 =============== 在归档模式下数据库完全恢复时,数据库所经过的状态如下: 1.利用备份修复(Restores)损坏或丢失的数据文件,即将 ...

  8. Linux下Kafka单机安装配置方法(图文)

    Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了 ...

  9. CentOS单用户模式下修改ROOT密码和grub加密

    Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务.如果系统管理员需要进行系统维护或系统出现启动异常时 ...

  10. cocos2d-html5的jsb模式下如何在编译时自动将js编译为jsc

    cocos2d-html5是一个用JS来开发游戏的框架,通过javascript Binding的方式可以将游戏编译到手机上.这对前端开发人员来说非常方便,开发效率也比使用c++开发要快的多. jsb ...

随机推荐

  1. Java使用joml计算机图形学库,将3D坐标旋转正交投影转为2D坐标

    最近遇到了一个困扰我许久的难题,现将解决方案分享出来 由于我们的项目侧重点在前端绘图,导致了前后端工作量不协调,我后端接口很快就能写完,而前端一个图要画好久,领导见状将前端的任务分到后端一部分用Jav ...

  2. Redis缓存同步1-策略介绍

    缓存数据同步策略示意图 在大多数情况下,我们通过浏览器查询到的数据都是缓存数据,如果缓存数据与数据库的数据存在较大差异的话,可能会产生比较严重的后果的.所以,我们应该也必须保证数据库数据.缓存数据的一 ...

  3. 学习C++这一篇就够了(提升篇)

    C++中除了面向对象的编程思想外,还有另一种就是泛型编程 主要用到的技术就是模板 模板机制的分类: 函数模板 类模板 函数模板 作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体定制,用虚拟 ...

  4. 【问题解决】docker版本v23.0后,构建Dockerfile中FROM私库镜像报错构建失败

    问题情况 Docker版本在v23.0以后,只要Dockerfile中FROM的私库镜像不存在本地,就会报错: # 我本地是v24.0.2版本Docker [root@localhost ipd]# ...

  5. 模拟ArrayList(顺序表)的底层实现

    模拟ArrayLIst的底层实现 package com.tedu.api04.list; import java.util.Objects; /** * @author LIGENSEN * Dat ...

  6. 2023-07-25:你驾驶出租车行驶在一条有 n 个地点的路上 这 n 个地点从近到远编号为 1 到 n ,你想要从 1 开到 n 通过接乘客订单盈利。你只能沿着编号递增的方向前进,不能改变方向 乘

    2023-07-25:你驾驶出租车行驶在一条有 n 个地点的路上 这 n 个地点从近到远编号为 1 到 n ,你想要从 1 开到 n 通过接乘客订单盈利.你只能沿着编号递增的方向前进,不能改变方向 乘 ...

  7. React报错:This is probably not a problem with npm. There is likely additional logging output above.

    解决方案 删除node_modules和package-lock.json,之后运行npm cache clear --force,重新安装模块npm install,另外要注意 npm 5.0版本之 ...

  8. .NET周刊【7月第5期 2023-07-30】

    国内文章 PaddleSharp:跨越一年的版本更新与亮点 https://www.cnblogs.com/sdflysha/p/20230724-paddlesharp-in-a-year.html ...

  9. 【技术实战】Vue功能样式实战【七】

    需求实战一 样式展示 代码展示 <template> <transition name="fade-in" appear> <ARow v-if=&q ...

  10. 接到一个新需求应该怎么做?(V1.0)

    接到一个新需求应该怎么做?(V1.0) 1 背景 在做业务研发的时候,经常会接到一些 产品需求/技术需求, 无论需求大小,都需要一套可以重复使用的方法论,来保证整个项目的正常交付,这篇思考就是总结梳理 ...