kafka为什么分区不能那么多

1.生产者内存模型被分区数量击穿

生产者调用send方法发送消息时,不会立即发送,而是先进入一个内存缓冲区,其核心结构是一个concurrentmap,以消息的key为key,value是一个deque,也就是说每一个分区都占一个消息队列,消息发送的时机是达到一定时间或者分区满了才会发送,分区越多,数据越难达到满的状态,发送次数越多,网络io越严重,而且分区越多,而且多个分区竞争发送机会是靠reentrantlock+condition来实现的分区越多竞争越激烈,

2.kafka之所以因为顺序读写和pagecache,分区越多导致磁头不断寻址,顺序读写退化成随机写,pagecache需要在多个文件之间切换,命中率降低

3.Linux系统下,kafka的每一个分区在运行时至少需要打开很多文件的句柄,句柄耗尽后会导致系统文件异常

4.分区多了对消费者的影响也很大,消费者在组在消费者加入或离开时会触发重新分配,分区变化时也会触发重新分配,重新分配会根据分区分配算法,遍历所有分区进行分配,阻塞kafka正常活动,造成stw,分区越多意味着单消费者会分到更多的分区,容易超时被踢出消费者组,再次出发重分配,恶性循环,

5.分区计算公式,max(目标吞吐量/单分区生产者吞吐量,目标吞吐量/单分区消费者吞吐量),在高并发场景下6至12个分区即可满足,

相关推荐
Wang's Blog14 小时前
Go-Zero 项目开发19:基于 Kafka 的异步消息存储与转发实战
golang·kafka
Devin~Y15 小时前
互联网大厂 Java 面试实录:Spring Boot、MyBatis、Redis、Kafka、Spring Security、RAG 与 MCP 全链路问答
java·redis·kafka·mybatis·spring security·spring mvc·sprint boot
java1234_小锋2 天前
【免费】基于Spark实时电商用户行为分析与预测(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 锋哥原创出品,必属精品
java·spark·kafka·实时电商用户行为分析与预测系统
AI人工智能+电脑小能手3 天前
【大白话说Java面试题 第194题】【08_Kafka篇】第10题:简述 Kafka 的 Rebalance 机制?
java·kafka·消费者组·rebalance·分布式消息队列
AI人工智能+电脑小能手4 天前
【大白话说Java面试题 第192题】【08_Kafka篇】第8题:死信队列是什么?延时队列是什么?
java·kafka·消息队列·死信队列·延时队列
AI人工智能+电脑小能手4 天前
【大白话说Java面试题 第190题】【08_Kafka篇】第6题:消息队列有什么作用?
java·kafka·消息队列·系统设计·分布式架构
风中凌乱5 天前
kafka新版本集群的安装与部署
分布式·kafka
abcy0712135 天前
kafka消息丢失与消息重复消费
kafka
富士康质检员张全蛋5 天前
Kafka的操作-消费的详情
分布式·kafka
AI人工智能+电脑小能手6 天前
【大白话说Java面试题 第188题】【08_Kafka篇】第4题:Kafka 大量消息积压时该如何处理?
java·性能优化·kafka·故障排查·消息积压