Kafka学习(3)——测试

2024年最全Windows环境单节点部署kafka最新版本3(2),耗时两个礼拜8000字大数据开发面试长文 Kafka 是一个由 LinkedIn 开发的分布式消息系统,它于2011年年初开源,现在由著名的 Apache 基金会维护与开发。Kafka 使用 Scala 实现,所以kafka发布的版本号通常含有两部分,例如kafka_2.12-3.1.0.tgz,其中,2.12为scala版本,3.1.0为kafka版本, Kafka 是基于消息发布﹣订阅模式实现的消息系统,具体实现原理参考官方文档这里不再冗余阐述。 阅读详情

首先,简单介绍下kafka。

Kafka是由LinkedIn开发的分布式的、基于发布/订阅的消息系统,以可水平扩展和高吞吐率而被广泛使用。主要设计目标如下:

  • 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。
  • 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。
  • 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。
  • 同时支持离线数据处理和实时数据处理。
  • Scale out:支持在线水平扩展。

个人认为kafka是个万金油,不仅可以作为消息件,还可以在数据处理时当作分布式管道来运用,还可以作为蓄水池,实在是特别心动。

究竟kafka具体性能如何,还是需要亲自测一下才有底和放心。测试方法主要参考Kafka的创始人之一的Jay Kreps的bechmark。

1 测试环境

见附录。

2 测试内容

测试内容包括:

  • producer吞吐率
  • producer吞吐率和已存储的数据量间的关系
  • producer吞吐率和partition数量的关系
  • producer吞吐率和producer数量的关系
  • producer吞吐率和同步复制/异步复制的关系
  • producer的offset
  • consumer吞吐率和consumer数量的关系
  • consumer吞吐率和replica数量的关系
  • consumer吞吐率和同步复制/异步复制的关系
  • consumer的offset
  • producer数量对consumer吞吐率的影响
  • consumer数量对producer吞吐率的影响
  • 消息长度对吞吐率的影响
  • snappy压缩率
  • 日志过期情况

2.1 producer吞吐率

该项测试只测producer的吞吐率,也就是数据只被持久化,没有consumer读数据。

(1) 吞吐率

重复10次。测试如下:

该测试在1台测试机设置1个producer,向有1个partition,1个replication的topic发送100 million的消息,消息大小100bytes。

图Producer Throughput是吞吐率图。从图中可以看到,吞吐率约500000~600000records/sec。

结论:单独producer运行时吞吐率约700000~800000records/sec。

(2) 已存储的数据量对producer吞吐率的影响

测试如下:

kafka集群,4 broker,4 partition,1 replication

该测试在1台测试机设置1个producer,向有4个partition,1个replication的topic发送1600 million的消息,消息大小1000bytes 。

图Producer Throughput VS Stored Data是吞吐率与数据量大小的关系图。可以明显看到,吞吐率存在一些偏差,kafka作者解释,偏差是由Linux I/O管理造成的,它会把数据缓存起来再批量flush。实际上从图中可以看到,当磁盘数据量达到1T时,吞吐率和磁盘数据只有几百MB时没有明显区别,吞吐率并不受磁盘上所存数据量大小的影响。

结论:producer吞吐率基本不受磁盘上所存数据量大小的影响。

这里写图片描述

这里写图片描述

(3) partition数量对producer吞吐率的影响

如果1个Topic对应1个partition ,那这个partition所在磁盘I/O将会成为这个Topic的性能瓶颈,将一个topic拆分为多个partition后,不同的消息可以并行写入不同磁盘的不同partition里,极大的提高了吞吐率。

这里需要注意的是,不同partition需要位于不同的磁盘。如果多个partition位于同一个磁盘,那么意味着有多个进程同时对一个磁盘的多个文件进行读写,使得操作系统会对磁盘读写进行频繁调度,也就是破坏了磁盘读写的连续性。

同一磁盘,测试如下:

(1) 在1台测试机设置1个producer,向有1个partition,1个replication的topic发送100 million的消息,消息大小100bytes ;

(2) partition加1,重复(1)。

不同磁盘,测试如下:

设置1台kafka为1个partition,1个replication;在另一台测试机设置1个producer,向kafka有1个partition,0个replication的topic发送100 million的消息,消息大小100bytes ;

设置2台kafka为2个partition,1个replication;在另一台测试机设置1个producer,向kafka有2个partition,0个replication的topic发送100 million的消息,消息大小100bytes ;

设置3台kafka为3个partition,1个replication;在另一台测试机设置1个producer,向kafka

Kafka 集群 Golang 应用实例 这个实例做了些什么? 搭建了拥有 3 节点 kafka、 3 节点 zookeeper 的 docker 集群服务; 分别创建了 1 个消息发布者和 2 个相同消费组的消息订阅者的 docker 应用; 使用 ab 进行并发测试,验证该实例消息的订阅 / 发布功能; 通过这个实例,能够了解些什么? 使用 Docker Compose 构建 Kafka 集群 ... 阅读详情

相关推荐

Kafka学习笔记(一)Kafka基准测试、幂等性和事务、Java编程操作Kafka

Kafka学习笔记(一)Linux环境基于Zookeeper搭建Kafka集群、Kafka的架构在HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源,对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,任意多次请求执行,对资源本身所产生的影响均与一次请求执行的影响相同。实现幂等性的关键就是服务端可以区分请求是否重复,过滤掉重复的请求。唯一标识:要想区分请求是否重复,请求中就得有唯一标识。例如支付请求中,订单号就是唯一标识。记录下已处理过的请求标识。

挑灯日记 记录自己 1721

如何使用Jmeter对Kafka进行性能测试

最近决定把阿里云的消息服务MNS换成Kafka,作为一个测试人员,当然要了解它,测试它。所以,把自己学习和使用的一些经验记录在本文中,研究如何去使用Apache JMeter测试Kafka。 首先,先来了解一下什么是Kafka。 A Brief Overview of Apache Kafka 在一个大型的分布式系统中,通常有很多服务生成不同的事件:日志、监视数据、可疑用户操作等等。在Kafk...

shan286的专栏 1万+

kafka 发送和接收消息

消息中间件kafka 进行消息的分发和接收示例 应用中包含分通道发送和多线程接收

可视化kafka测试工具

可视化kafka测试工具,配置好broker地址即可模拟发送topic消息

fMRI独立成分分析方法(ICA)工具GIFT

详细介绍了进行fmri数据进行ICA分析的工具包GIFT的使用,和进行ICA分析的流程。

m0_58256026的博客 1万+

保姆级教程:用北醒TFmini-i-CAN雷达给PixHawk飞控加装‘眼睛’,实现自动避障与定高

经过多次测试,前向雷达的最佳安装位置是机架前部下方5-10cm处,倾斜角度20-30度。电源方面,建议为CAN设备单独供电,避免电机启动时的电压骤降导致数据异常。北醒TFmini-i-CAN雷达与PixHawk飞控的组合,为DIY爱好者打开了低成本实现智能避障的大门。实际部署时,需确保整个CAN网络的波特率一致(TFmini-i默认为250kbps),每个设备具有唯一ID。雷达的安装角度也直接影响检测效果,建议通过3D打印支架将雷达向前下方倾斜15-30度。当使用多个雷达时,需为每个设备创建独立的参数组。

weixin_30892889的博客 336

Edge主页被2345劫持?手动清理注册表与组策略的完整方案

浏览器主页劫持是Windows系统中常见的恶意篡改行为,其原理是通过修改注册表、快捷方式、组策略等多处系统配置,强制锁定浏览器启动页。这类劫持不仅影响上网体验,还可能带来隐私泄露和恶意软件感染风险。在安全防护与系统优化场景中,掌握手动清理主页劫持的技能至关重要。本文针对Edge主页被2345导航劫持的问题,深入解析劫持入口,提供从快捷方式、注册表到组策略的逐层清理步骤,并给出防复发策略,帮助用户彻底摆脱顽固劫持。

weixin_30582943的博客 378

Ollama最新快速上手指南:从安装到精通本地AI模型部署

想让Ollama跑你的"私房模型"?三种主流格式全支持,总有一款适合你!GGUF格式(推荐新手首选)创建Modelfile文件:执行创建命令:运行你的专属模型:PyTorch/Safetensors格式(适合进阶玩家)先用库测试模型能否正常加载确保模型结构完整后再导入Ollama官方文档有详细转换指南专业小贴士GGUF格式最轻量,PyTorch最灵活,Safetensors最安全遇到问题?试试用llama.cpp进行格式转换7B参数模型推荐使用q4_0量化级别想让AI用马里奥。

全世界的博客 2309

Apollo和autoware规划算法代码ros移植-路径规划可跑工程分享

Apollo6.0规划核心代码移植到Ros工程,可编译移植分享

weixin_39735688的博客 8507

高频面试题-项目介绍篇

聊聊如何介绍项目经历。

m0_73359763的博客 1908

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 368

使用 syncstart 实现同场景下多个音视频音轨自动化同步

如果需要在视频编辑中同步多个机位的音轨,使得相同的视频能够同时播放,手动操作可能会变得相当复杂。特别是当处理多个视频文件时,例如有10个视频需要互相匹配,实现一对多的同步关系,这就涉及到为每对视频生成匹配的音轨数据。手动完成这样的任务,如生成90套对应的音轨数据,不仅耗时而且容易出错。因此,使用脚本自动化这一过程是一个更为高效和准确的解决方案。通过编写脚本,您可以批量处理多个视频文件,自动同步它们的音轨,大大简化了音视频编辑的工作流程,并确保了同步的准确性。

Mr数据杨 1073

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

上一篇: Kafka学习(2)——理解Kafka
下一篇: Kafka学习(4)——生产消费实践
白水不开
博客等级 码龄18年 91粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值