面试题:Kafka的吞吐量和性能为什么那么好?以及Topic或者分区多了之后,会有什么问题?

2024-04-20 22:36

本文主要是介绍面试题:Kafka的吞吐量和性能为什么那么好?以及Topic或者分区多了之后,会有什么问题?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目来源

阿里-技术-1面

题目描述

Kafka的单个Broker上的Topic或者分区多了之后,会有什么问题?

我的回答

没了解过

更好的答案

一般来说,我们需要基于单个Broker来评判这个问题,因为在集群中,10个分区分布在10个Broker上,是不会有性能问题的。下面就针对单个Broker来讨论下Topic或者Broker多了,会有什么问题。

结论

Kafka Broker利用了磁盘的顺序读写的特性,以及Linux的Page Cache功能,所有会有很高的QPS和吞吐量。
Kafka的Topic或者分区多了,会导致性能下降。我有在网上查找相应的测试数据,当分区数在1000至2000的时候,消费者和生产者的TPS都会处于比较高的水平,生产者的TPS比10W低一点,消费者的速度会比10W高很多,如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为什么会这样呢?

Kafka的每一个分区对应着一个文件,当分区数少的时候,没有产生消息积压的情况下,生产者发送消息之后,Kafka使用零拷贝技术,直接将该消息持久化到磁盘,但是不是直接写入到磁盘,而是写入到Linux的Page Cache,Page Cahe还是操作系统的内存,如果此时消费者来消费消息,Kafka向操作系统请求读取该消息,操作系统发现该消息还在Page Cache中,就直接将该消息返回给Kafka,在上述流程中,消息没有经过磁盘,就直接到达消费者,速度非常快。
在这里插入图片描述

Linux操作系统的Page Cache是使用的内存,但是如果Partition的数量过多,使用的Page Cache就会变多,Linux在使用Page Cache的时候,一般不会超过操作系统的的总内存的10%,超过10%了,就会采取LRU的淘汰策略对某些Page进行淘汰,将淘汰的Page刷到磁盘上面去。这时性能就下降了。

参考

(好博客)kafka 解密:破除单机topic数多性能下降魔咒

这篇关于面试题:Kafka的吞吐量和性能为什么那么好?以及Topic或者分区多了之后,会有什么问题?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921497

相关文章

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

mysql主从及遇到的问题解决

《mysql主从及遇到的问题解决》本文详细介绍了如何使用Docker配置MySQL主从复制,首先创建了两个文件夹并分别配置了`my.cnf`文件,通过执行脚本启动容器并配置好主从关系,文中还提到了一些... 目录mysql主从及遇到问题解决遇到的问题说明总结mysql主从及遇到问题解决1.基于mysql

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

如何安装HWE内核? Ubuntu安装hwe内核解决硬件太新的问题

《如何安装HWE内核?Ubuntu安装hwe内核解决硬件太新的问题》今天的主角就是hwe内核(hardwareenablementkernel),一般安装的Ubuntu都是初始内核,不能很好地支... 对于追求系统稳定性,又想充分利用最新硬件特性的 Ubuntu 用户来说,HWEXBQgUbdlna(Har

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

MAVEN3.9.x中301问题及解决方法

《MAVEN3.9.x中301问题及解决方法》本文主要介绍了使用MAVEN3.9.x中301问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录01、背景02、现象03、分析原因04、解决方案及验证05、结语本文主要是针对“构建加速”需求交