Hello World

kafka: 性能优化

1. 生产者

1. compression.type

生产者设置的消息压缩格式,可配置的值有none, gzip, lz4, snappy
通过该参数可以提高生产者吞吐量

2. batch.size

当要往同一个分区发送多条数据时,将多个消息打包在一起发送,减少请求交互
该参数要根据实际情况进行合理配置;如果设置过大,则可能需要等待较长的时间才能凑够足够大的数据,导致数据的延迟较大

3. buffer.memory

生产者用来缓存等待发送到服务器的消息的内存总字节数。
如果设置的缓冲区不够,当生产消息的速度大于消息发送的速度,缓冲区被写满之后,导致用户线程阻塞;
生产者阻塞超过max.block.ms时间后,抛出异常;
根据当前业务生产消息的能力和客户端发送消息的能力,合理配置

4. linger.ms

发送消息的最大延迟时间;
设置为0表示无延迟,直接发送;
大于0时,如果消息数据小于batch.size,则继续等待,当数据超过batch.size或者等待时间超过linger.ms,则直接发送数据

2. broker

1. 消息解压缩

一般情况下,produce压缩消息,broker保存消息,consumer解压缩消息,broker只是保持消息,不会解压缩处理消息;
如果broker需要解压缩消息,会导致broker压力变大,并失去零拷贝特性;
broker解压缩消息的场景有两种:
生产者和broker配置的压缩算法不一样,broker需要解压缩后重新压缩;
集群保存了不同版本格式的消息,为了兼容老版本,将消息格式转为老版本;

2. 增量线程数

num.network.threads: 网络线程数,将接收到的请求添加到队列
num.io.threads: IO线程数,真正处理请求的线程
根据硬件资源,调整IO线程数可控制broker的处理能力

3. consumer

1. partition

增加topic的分区数,将topic的数据尽量均匀的落盘到不同的分区;避免将topic的数据都落盘到一个节点,这个节点的IO能力将会成为消费者消费的瓶颈;

2. consumer number

将消费者的数量调整到和分区数一样,一个消费消费一个分区的数据,提高消费能力

posted @ 2021-06-01 20:14  小小忧愁米粒大  阅读(338)  评论(0编辑  收藏  举报
瞅啥瞅,好好看书