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. 如何使用 Terraform 和 Git 分支有效管理多环境?

    作者|Sumeet Ninawe 翻译|Seal软件 链接|https://spacelift.io/blog/terraform-environments 通常我们使用 Terraform 将我们的 ...

  2. MySQL 中分区表

    MySQL 中的分区表 InnoDB 逻辑存储结构 表空间 (Tablespace) 段 (segment) 区 (extent) 页 (page) 行 (row) InnoDB 数据页结构 分区别表 ...

  3. 2023-07-01:redis过期策略都有哪些?LRU 算法知道吗?

    2023-07-01:redis过期策略都有哪些?LRU 算法知道吗? 答案2023-07-01: 缓存淘汰算法(过期策略) 当Redis的内存超出物理内存限制时,内存中的数据就会频繁地与磁盘进行交换 ...

  4. Windows同时安装多个JDK

    一.下载并安装JDK这一步选择你需要的JDK并下载安装,记得要记住安装的路径. 二.为JDK配置环境变量①找到系统环境变量 ②新建如下三个环境变量 第一个表示默认Java的home路径,以后在更改JD ...

  5. 分布式多协议接入网关FluxMQ-2.0功能说明

    FluxMQ-2.0版本更新内容 前言 FLuxMQ是一款基于java开发,支持无限设备连接的云原生分布式物联网接入平台.FluxMQ基于Netty开发,底层采用Reactor3反应堆模型,具备低延迟 ...

  6. 【Docker】部署Tomcat

    搜索镜像 $ docker search 镜像名称:镜像TAG # 如: 没有加TAG,表示默认搜索的是最新版本的tomcat镜像 $ docker search tomcat # 如:搜索 tomc ...

  7. idea连接数据库及使用

    连接数据库 idea本身足够强大,可以直接操作数据库. 1.打开idea后,点击右侧的Database,点击加号,点击Data Source,在右侧选择需要的数据库,我这里选择mysql. 2.填写完 ...

  8. UG NX实现叉车运输货物功能遇见的问题

    在前一段时间编写模拟叉车运输功能时遇到,货物无法跟随的问题(如下动图) 后面发现是速度太快的原因导致货物没有跟着动,类似于抽桌布的感觉 解决办法有两种:第一种解决办法很简单就是把速度降低到不超过  2 ...

  9. django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported.

    django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing a ...

  10. 仅三天,我用 GPT-4 生成了性能全网第一的 Golang Worker Pool,轻松打败 GitHub 万星项目

    目录 1. 我写了一个超牛的开源项目 1.1 你看看这性能 1.2 你看看这功能 1.3 你猜我这一百天都经历了啥 2. 你有多久没写并发程序了? 3. 问:一个 Worker Pool 程序需要包含 ...