Java玩转大数据

Kafka场景性能优化配置

2024-12-02  本文已影响0人  AlienPaul

系统和JVM级别优化

Kafka通用参数

未分类配置:

leader选举:

日志保留:

主从同步:

写入磁盘配置:

ack:

批量:
linger.ms和batch.size两个参数共同控制kafka发送消息的吞吐量和延迟。
Kafka producer发送消息的时候需要满足以下任一条件:

  1. 消息缓存大小达到batch.size。
  2. 缓存中的消息存时间在超过linger.ms,即便消息大小达不到batch.size,也会一并发送。

Consumer还有一个配置为max.poll.records,含义是每次拉取的最大消息数量。需要根据Consumer机器内存大小,业务复杂度和数据量调整为一个合适的值。

压缩:
compression.type指定压缩算法。通过CPU换取吞吐量。

消费者超时/再平衡配置:

频繁的超时会触发大量消费者rebalance,对性能有严重影响。需要根据业务处理压力和网络情况,调整这三个参数。在consumer压力大响应时间长的情况下,不合理的参数会导致某consumer反复加入然后被踢出消费者组,严重影响性能。使用者需要确保不要误触发consumer再平衡机制。

Broker网络:

消息大小限制:

场景优化

提高吞吐量

Java API Kafka Producer是线程安全,Kafka Consumer不是线程安全。

Broker:

Producer:

Consumer:

降低延迟

Broker:

Producer:

Consumer端:

精准一次投送

精准一次投送即数据不丢失不重复。

务必确保生产消费端开启事务和幂等性。

Producer配置:

另外,Producer调用API send的时候应使用send(ProducerRecord<K,V> record, Callback callback);。通过回调可知数据是否真正发送成功,从而有机会补救处理。常用的send(ProducerRecord<K,V> record);方法未异步发送,无论数据发送成功与否均会返回,吞吐量很高但是结果不可控。

Broker配置:

Consumer配置:

上一篇 下一篇

猜你喜欢

热点阅读