高并发是大型架构核心,下面我详解Kafka高并发@mikechen
高并发
高并发(High Concurrency),是互联网和分布式系统架构中的核心性能指标。
指的是系统在同一时间段内,能够同时处理大量请求或任务的能力。

在消息系统如Kafka中,高并发主要体现在每秒消息处理量(吞吐量)和响应时间上。
Kafka多少算高并发
单机能写入 10 万条/s → 已可称为高并发;
集群吞吐超 百万条/s → 属于典型高并发 Kafka 场景;
超 千万级 TPS → 大厂级“超高并发”部署。

Broker层高并发配置
Kafka 的高并发能力主要来自其架构特性:分区(partition)并行、顺序写入、零拷贝传输与批量处理。

1. 分区与副本
增加分区数,可以提高并行消费与写入能力,但过多分区会增加元数据与领导选举开销。根据负载与消费者数量合理设置分区。
副本数保证可用性,一般为 2 或 3。
如果在高并发下要求最低延迟,可调整 ISR 与 ack 策略,但需权衡数据安全性。
2. 生产端
使用异步发送与批量发送(batch.size、linger.ms)来合并小消息,减少网络请求次数。
启用压缩(snappy、lz4)以减少网络带宽占用与磁盘写入量,注意压缩会增加 CPU 开销。
调整 acks(0/1/all)与重试策略以平衡可靠性与吞吐。
3. Broker存储优化
利用顺序写入的特性选择适当的磁盘(SSD 优于机械盘),并保证足够的磁盘带宽与低延迟写入。

增加 num.io.threads 与 num.network.threads 以提升并行 IO 与网络处理能力。
合理设置 log.segment.bytes 与 log.retention 策略,避免过多小文件导致文件句柄压力。
4. 零拷贝
Kafka 的零拷贝(sendfile)减少了内核与用户态之间的数据复制,提升网络效率。

确保操作系统、与 JVM 能支持并配置合适的 sendfile 行为。
调整 socket.buffer、socket.request.max.bytes 等网络参数以匹配消息大小与吞吐需求。
