四、Kafka 万亿级消息优化
4.1 磁盘IO优化方案
日志存储策略:
# server.properties
log.dirs=/data1/kafka,/data2/kafka # 多磁盘负载均衡
num.recovery.threads.per.data.dir=4
log.segment.bytes=1073741824 # 1GB分段
log.retention.bytes=53687091200 # 50GB保留
log.cleanup.policy=delete,compact # 混合策略
4.2 生产者关键参数
// 吞吐优化配置
properties.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384); // 16KB
properties.put(ProducerConfig.LINGER_MS_CONFIG, 20); // 20ms
properties.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");
properties.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432); // 32MB
// 可靠性配置
properties.put(ProducerConfig.ACKS_CONFIG, "all");
properties.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);
properties.put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, 5);
4.3 消费者负载均衡
再平衡策略对比:
策略类 | 特点 | 适用场景 |
---|---|---|
RangeAssignor | 按范围分配(可能不均衡) | 简单场景 |
RoundRobinAssignor | 轮询分配(均衡但忽略消费速度) | 消费者性能相近时 |
StickyAssignor | 尽量保留原有分配(减少重复消费) | 消费者状态重要时 |
CooperativeStickyAssignor | 增强版Sticky(支持协作再平衡) | Kafka 2.4+版本推荐 |
本文来自投稿,不代表本站立场,如若转载,请注明出处: