producer
-
compression.type
生产者设置的消息压缩格式,可配置的值有none、 gzip、 lz4、snappy,通过该参数可以提高生产者吞吐量。
-
batch.size
当要往同一个分区发送多条数据时,将多个消息打包在一起发送,减少请求交互。该参数要根据实际情况进行合理配置;如果设置过大,则可能需要等待较长的时间才能凑够足够大的数据,导致数据的延迟较大。
-
buffer.memory
生产者用来缓存等待发送到服务器的消息的内存总字节数。如果设置的缓冲区不够,当生产消息的速度大于消息发送的速度,缓冲区被写满之后,导致用户线程阻塞;
生产者阻塞超过max.block.ms时间后,抛出异常;根据当前业务生产消息的能力和客户端发送消息的能力,合理配置。 -
linger.ms
发送消息的最大延迟时间;设置为0表示无延迟,直接发送;大于0时,如果消息数据小于batch.size,则继续等待,当数据超过batch.size或者等待时间超过linger.ms,则直接发送数据。
broker
-
消息解压缩
一般情况下,Producer压缩消息,Broker保存消息,Consumer解压缩消息,Broker只是保持消息,不会解压缩处理消息;如果broker需要解压缩消息,会导致broker压力变大,并失去零拷贝特性;
broker解压缩消息的场景有两种:
生产者和broker配置的压缩算法不一样,broker需要解压缩后重新压缩 集群保存了不同版本格式的消息,为了兼容老版本,将消息格式转为老版本
-
增量线程数
num.network.threads: 网络线程数,将接收到的请求添加到队列;num.io.threads: IO线程数,真正处理请求的线程。根据硬件资源,调整IO线程数可控制broker的处理能力。
consumer
-
partition
增加topic的分区数,将topic的数据尽量均匀的落盘到不同的分区;避免将topic的数据都落盘到一个节点,这个节点的IO能力将会成为消费者消费的瓶颈。
-
consumer number
将消费者的数量调整到和分区数一样,一个消费消费一个分区的数据,提高消费能力。