Kafka08-优化-尚硅谷
5-Kafka优化
文章目录
- 5-Kafka优化
- @[toc]
- 5.1 资源配置
- 5.1.1 操作系统选择
- 5.1.2 磁盘选择
- 5.1.3 网络带宽
- 5.1.4 内存配置
- 5.1.5 CPU 选择
- 5.2 集群容错
- 5.2.1 副本分配策略
- 5.2.2 故障转移方案
- 5.2.3 数据备份与恢复
- 5.3 参数配置优化(关键项)
- 5.4 数据压缩与批量发送
- 压缩算法对比
- 批处理方式
文章目录
- 5-Kafka优化
- @[toc]
- 5.1 资源配置
- 5.1.1 操作系统选择
- 5.1.2 磁盘选择
- 5.1.3 网络带宽
- 5.1.4 内存配置
- 5.1.5 CPU 选择
- 5.2 集群容错
- 5.2.1 副本分配策略
- 5.2.2 故障转移方案
- 5.2.3 数据备份与恢复
- 5.3 参数配置优化(关键项)
- 5.4 数据压缩与批量发送
- 压缩算法对比
- 批处理方式
5.1 资源配置
5.1.1 操作系统选择
- 知识点:Kafka 网络层依赖 Java NIO,Linux 用 epoll,Windows 用 select;Linux 支持零拷贝。
- 答案:优先部署在 Linux,I/O 性能更高。
5.1.2 磁盘选择
- 知识点:Kafka 顺序写,机械盘即可;自带冗余与分区负载,无需 RAID。
- 答案:普通机械硬盘够用,按 1 亿条 1 KB 双副本保存 14 天估算需 ≈ 2.25 TB(开启 0.75 压缩比)。
5.1.3 网络带宽
- 知识点:千兆网易成瓶颈,按“服务器台数 = 2 × (峰值速率 × 副本 ÷ 100) + 1”估算。
- 答案:1 小时处理 1 TB,千兆网单机可用 240 Mb/s,需 ≈ 10 台;副本 2 倍则 20 台,副本 3 倍则 30 台。
5.1.4 内存配置
- 知识点:JVM 堆 10–15 GB,页缓存保留段文件 25% 即可。
- 答案:单节点 ≥ 16 GB 内存可保障流畅运行。
5.1.5 CPU 选择
- 知识点:Kafka 线程多(网络、IO、副本、日志等)。
- 答案:生产环境最低 16 核,建议 32 核以上。
5.2 集群容错
5.2.1 副本分配策略
- 答案:每分区至少 2 副本,保证高可用。
5.2.2 故障转移方案
- 答案:Broker 宕机时,Controller 自动把副本重分配到存活节点并选新 Leader。
5.2.3 数据备份与恢复
- 答案:日志文件即本地备份;调整 retention 与 replica 策略确保持久性,必要时手动复制日志段恢复。
5.3 参数配置优化(关键项)
参数 | 调优方向 | 简略值/建议 |
---|---|---|
num.network.threads | 低延迟 | 适当提高到 6–8 |
num.io.threads | 低延迟 | 可增至 16 |
socket.send/receive.buffer.bytes | 高吞吐 | 调到 100–200 KB |
batch.size | 生产吞吐 | 32–64 KB |
linger.ms | 生产吞吐 | 5–20 ms |
buffer.memory | 生产缓存 | 可升至 64–128 MB |
fetch.min/max.bytes & max.poll.records | 消费吞吐 | 酌情增大,减少网络往返 |
5.4 数据压缩与批量发送
压缩算法对比
- 答案:吞吐量 lz4 > snappy > zstd > gzip;压缩比 zstd > lz4 > gzip > snappy。高吞吐场景选 lz4,高压缩选 zstd。
批处理方式
- 答案:异步批处理+合理设置 batch.size 与 linger.ms,可显著提升吞吐并降低网络请求次数。