面试题答案
一键面试生产者端关键配置参数及其作用
- batch.size
- 作用:指定了生产者批量发送消息时,一个批次(batch)能容纳的字节数。当批次中的消息大小达到该值,或者linger.ms参数设置的时间到了,生产者就会将这个批次的消息发送出去。如果设置过小,会导致频繁发送请求,增加网络开销;设置过大,会导致消息在本地缓存时间过长,增加内存占用。
- linger.ms
- 作用:生产者在发送批次消息之前等待更多消息加入批次的时间,单位是毫秒。默认值为0,即消息会立即被发送,不等待。增加这个值可以使得更多的消息被收集到一个批次中发送,提高吞吐量,但也会增加消息的发送延迟。
- buffer.memory
- 作用:生产者用于缓冲尚未发送到服务器的消息的总内存字节数。如果生产者发送消息的速度超过了服务器处理消息的速度,并且缓冲区已满,生产者将阻塞,或者抛出异常(取决于max.block.ms的设置)。设置过小可能导致生产者频繁阻塞,影响生产效率;设置过大则会占用过多内存资源。
消费者端与批量拉取消息相关的重要配置
- fetch.min.bytes
- 作用:指定了消费者从服务器拉取数据时,服务器响应的最小数据量。如果没有达到这个数据量,服务器会等待,直到有足够的数据或者等待时间超过fetch.max.wait.ms。设置这个参数可以减少不必要的网络请求,提高数据拉取的效率,但也可能会增加消费者的等待时间。
- fetch.max.wait.ms
- 作用:当没有足够的数据达到fetch.min.bytes时,服务器等待的最大时间。如果等待时间超过这个值,即使数据量没有达到fetch.min.bytes,服务器也会将当前已有的数据返回给消费者。这个参数平衡了等待更多数据以提高效率和避免消费者等待时间过长的问题。
- max.poll.records
- 作用:指定了消费者每次调用poll方法时最多返回的记录数。设置这个参数可以控制单次拉取消息的数量,从而控制消费者一次处理的消息量。如果设置过小,可能导致频繁拉取,增加网络开销;设置过大,可能会使消费者一次处理的数据量过多,处理时间过长,影响消息处理的实时性。