如何做 Kafka 的性能测试

这篇具有很好参考价值的文章主要介绍了如何做 Kafka 的性能测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌

Java知识图谱点击链接:体系化学习Java(Java面试专题)

💕💕 感兴趣的同学可以收藏关注下不然下次找不到哟💕💕

kafka性能测试,带你手撕 Kafka,kafka,分布式

1、Kafka 的特性是什么

Kafka 是一种高性能、分布式的消息系统,具有以下特性:

  1. 高吞吐量:Kafka 可以处理大规模的消息流,并具有很高的吞吐量。它能够支持每秒数百万条消息的读写操作。

  2. 可扩展性:Kafka 的设计允许用户在集群中添加或删除节点,以满足不断增长的消息流量需求。它可以水平扩展,以适应更大规模的数据处理。

  3. 持久性:Kafka 将消息持久化到磁盘上,确保消息的持久性和可靠性。即使消费者离线,也可以通过重新读取存储的消息来进行消费。

  4. 分布式:Kafka 是一个分布式系统,它将消息分布在多个节点上,实现了高可用性和容错性。它使用分布式存储和复制机制来确保数据的可靠性。

  5. 多样的数据流处理:Kafka 不仅仅是一个消息队列,还具备了流处理的能力。它支持实时流处理、批处理和交互式查询等多种数据处理场景。

  6. 可靠性:Kafka 提供了副本机制,确保消息在集群中的冗余存储和故障恢复。它具有高可靠性,即使在节点故障的情况下,也能保证消息的可用性。

  7. 可定制性:Kafka 提供了可定制的消息保留策略、分区策略和一致性保证等功能,可以根据不同的需求进行配置和调整。

总之,Kafka 是一个高性能、可扩展、持久化、分布式的消息系统,适用于处理大规模的实时数据流和构建实时数据处理应用。

2、Kafka 为什么高吞吐

Kafka 之所以能够实现高吞吐量,主要归功于以下几个方面的设计和特性:

  1. 分区机制:Kafka 将每个主题的消息分为多个分区,并将这些分区分布在不同的节点上。这样可以实现消息的并行处理和读写操作。每个分区都可以独立地进行读写,从而提高了吞吐量。

  2. 批量发送:Kafka 允许生产者将消息进行批量发送,而不是一条一条地发送。批量发送可以减少网络开销和系统调用的次数,从而提高了生产者的吞吐量。

  3. 零拷贝技术:Kafka 使用零拷贝技术来提高数据传输的效率。它通过直接操作内核缓冲区,避免了数据在用户空间和内核空间之间的拷贝,从而减少了数据传输的开销。

  4. 内存和磁盘结合:Kafka 将消息同时存储在内存和磁盘上。消息首先写入内存中的消息缓冲区,然后定期将缓冲区中的消息批量写入磁盘。这种内存和磁盘结合的方式,既保证了高吞吐量,又保证了消息的持久性。

  5. 集群架构:Kafka 可以通过添加更多的节点来扩展集群,从而实现分布式的消息处理。多个节点之间可以并行地处理消息,从而提高了整个系统的吞吐量。

综上所述,Kafka 通过分区机制、批量发送、零拷贝技术、内存和磁盘结合以及集群架构等设计和特性,实现了高吞吐量的消息处理能力。

3、如何测试 Kafka 的性能到底有多高呢?

3.1、单台 Kafka 两块磁盘做压测

测试命令:
4c 8g 2块独立磁盘(高性能云硬盘)

压测的命令:
./kafka-producer-perf-test.sh --topic aiocloud_test --num-records 50000000 --throughput -1 --payload-file ./record --payload-delimiter secsmart --producer-props bootstrap.servers=127.0.0.1:9092 acks=1 linger.ms=3 batch.size=20000 compression.type=lz4 max.request.size=26214400 buffer.memory=52428800

kafka性能测试,带你手撕 Kafka,kafka,分布式
50000000 records sent, 272843.851464 records/sec (1314.03 MB/sec), 33.17 ms avg latency, 1273.00 ms max latency, 3 ms 50th, 182 ms 95th, 514 ms 99th, 897 ms 99.9th.

吞吐量: 272843.851464 records/sec (1314.03 MB/sec)

磁盘IO数据:
kafka性能测试,带你手撕 Kafka,kafka,分布式

3.1、单台 Kafka 单块磁盘做压测

测试三组的数据:
kafka性能测试,带你手撕 Kafka,kafka,分布式
kafka性能测试,带你手撕 Kafka,kafka,分布式
kafka性能测试,带你手撕 Kafka,kafka,分布式
kafka性能测试,带你手撕 Kafka,kafka,分布式

3.3、结论总结

一块盘相对两块盘,写入的吞吐量差距不大,1~2w的吞吐量,总体也有25w的吞吐量,但是写入的时间大概是两块盘的两倍。

3.4、压测参数命令介绍

分析下这个命令:
./kafka-producer-perf-test.sh --topic aiocloud_test --num-records 50000000 --throughput -1 --payload-file ./record --payload-delimiter secsmart --producer-props bootstrap.servers=127.0.0.1:9092 acks=1 linger.ms=3 batch.size=20000 compression.type=lz4 max.request.size=26214400 buffer.memory=52428800

  • –topic aiocloud_test :指定要发送消息的主题名称为 “aiocloud_test”。
  • –num-records 50000000 :指定要发送的消息数量为 5000 万条。
  • –throughput -1 :指定发送速率为无限制,即尽可能快地发送。
  • –payload-file ./record :指定消息的内容来源于名为 “record” 的文件。
  • –payload-delimiter secsmart :指定消息内容的分隔符为 “secsmart”。
  • –producer-props bootstrap.servers=127.0.0.1:9092 acks=1 linger.ms=3 batch.size=20000 compression.type=lz4 max.request.size=26214400 buffer.memory=52428800 :指定生产者的配置属性。具体的配置如下:
  • bootstrap.servers=127.0.0.1:9092 :指定 Kafka 集群的连接地址为 127.0.0.1:9092。
  • acks=1 :指定生产者在发送消息时等待的确认数为 1,表示只需要 Leader 副本确认即可。
  • linger.ms=3 :指定生产者在发送消息前等待的时间,单位为毫秒,这里设置为 3 毫秒。
  • batch.size=20000 :指定生产者在发送消息前等待的消息批次大小,单位为字节,这里设置为 20000 字节。
  • compression.type=lz4 :指定消息的压缩类型为 lz4。
  • max.request.size=26214400 :指定生产者发送的最大请求大小为 26214400 字节。
  • buffer.memory=52428800 :指定生产者的缓冲区大小为 52428800 字节。

kafka性能测试,带你手撕 Kafka,kafka,分布式

💕💕 本文由激流原创,首发于CSDN博客,博客主页 https://blog.csdn.net/qq_37967783?spm=1010.2135.3001.5421
💕💕喜欢的话记得点赞收藏啊文章来源地址https://www.toymoban.com/news/detail-751524.html

到了这里,关于如何做 Kafka 的性能测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka 最佳实践:构建可靠、高性能的分布式消息系统

    Apache Kafka 是一个强大的分布式消息系统,被广泛应用于实时数据流处理和事件驱动架构。为了充分发挥 Kafka 的优势,需要遵循一些最佳实践,确保系统在高负载下稳定运行,数据可靠传递。本文将深入探讨 Kafka 的一些最佳实践,并提供丰富的示例代码,帮助读者更好地应用

    2024年02月03日
    浏览(57)
  • 【kafka性能测试脚本详解、性能测试、性能分析与性能调优】

    Apache Kafka 官方提供了两个客户端性能测试脚本,它们的存放位置如下: 生产者性能测试脚本:$KAFKA_HOME/bin/kafka-producer-perf-test.sh 消费者性能测试脚本:$KAFKA_HOME/bin/kafka-consumer-perf-test.sh kafka-producer-perf-test.sh 支持测试的性能指标包括:吞吐量(throughput)、最大时延(max-latenc

    2024年02月04日
    浏览(62)
  • Kafka SASL认证授权(六)全方位性能测试

    Kafka SASL认证授权(六)全方位性能测试。 官网地址:https://kafka.apache.org/ 一、场景 线上已经有kafka集群,服务运行稳定。但是因为产品升级,需要对kakfa做安全测试,也就是权限验证。 但是增加权限验证,会不会对性能有影响呢?影响大吗?不知道呀! 因此,本文就此来做

    2024年02月07日
    浏览(37)
  • kafka 分布式的情况下,如何保证消息的顺序消费?

    目录 一、什么是分布式 二、kafka介绍 三、消息的顺序消费 四、如何保证消息的顺序消费   分布式是指将计算任务分散到多个计算节点上进行并行处理的一种计算模型。在分布式系统中,多台计算机通过网络互联,共同协作完成任务。每个计算节点都可以独立运行,并且可以

    2024年02月10日
    浏览(53)
  • Kafka是如何实现高性能IO

    ​ 批量处理是一种非常有效的提升系统吞吐量的方法。在 Kafka 内部,消息都是以“批”为单位处理的。一批消息从发送端到接收端,是如何在 Kafka 中流转的呢? Kafka 的 Producer 只提供了单条发送的 send() 方法,并没有提供任何批量发送的接口。 kafka 根本就没有提供单条发送

    2024年02月11日
    浏览(46)
  • 【消息队列】Kafka如何实现高性能IO

    我们直到Kafka是一个自称高性能的消息队列引擎,一般来说对于中间件的设计需要从计算、存储、网络三方面进行下手,而消息从产生到消费,也会经历多个流程,比如在生产者端采用异步同步方式发送,采用高效的压缩算法,高效的序列化方式,以及网络IO等。那么Kafka主要

    2023年04月13日
    浏览(45)
  • 【软件开发/设计】分布式架构中的组件(如Kafka、MongoDB和Nginx)如何进行容器化部署

    容器化部署是将应用程序及其依赖打包成一个容器镜像,然后在任何支持容器的环境中运行这个镜像的过程。在分布式架构中,像Nginx、MongoDB、Kafka这样的组件通过容器化可以更易于部署、扩展和管理。以下是这些组件容器化部署的一般步骤和原理: 容器化部署的一般步骤

    2024年02月04日
    浏览(47)
  • 深入解读Kafka:如何进行运维与监控,实现性能调优和故障排除

    Kafka是由Apache Software Foundation开发的一款分布式流处理平台和消息队列系统 可以处理大规模的实时数据流,具有高吞吐量、低延迟、持久性和可扩展性等优点 常用于数据架构、数据管道、日志聚合、事件驱动等场景,对Kafka的运维和监控十分必要 本文旨在介绍Kafka的运维和监

    2024年02月04日
    浏览(45)
  • 数据结构入门(C语言版)一篇文章教会你手撕八大排序

    排序 :所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而

    2024年02月01日
    浏览(63)
  • gpt-4教你如何进行Kafka测试:实践与示例

    Apache Kafka是一个分布式流处理平台,用于构建实时数据流管道和应用程序。在使用Kafka之前,进行适当的测试至关重要,以确保系统的性能和稳定性。本文将介绍如何进行Kafka测试,并提供一些实际示例。 在进行Kafka测试时,需要关注以下几个方面: 生产者(Producer)和消费者

    2024年02月21日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包