Compression can be enabled at the producer level and doesn't require any configuration change in the brokers or in the consumers
compression.type = none ( default ), gzip, lz4, snappy
Disadvantage(very minor)
linger.ms
, batch.size
설정을 조정하여 배치 크기를 늘려 압축률을 늘릴 수 있다.
브로커에 적용하면, 모든 토픽에 적용되고, 토픽에 적용하면, 해당 토픽에만 적용된다.
compression.type
( 브로커 설정 )
producer
(default) : 브로커는 프로듀서가 압축한 배치를 가져다 토픽의 로그 파일에 바로 저장
none
: 모든 배치를 브로커가 압축 해제 ( 비효율적 )
특정 유형( lz4
, ... ) : 토픽에 설정된 압축 유형이 프로듀서의 것과 일치하면, 재압축하지 않는다.
일치하지 않으면, 브로커가 배치를 압축 해제하고, 명시된 압축 방법으로 압축
Disadvantage
linger.ms
( default 0 ) : 배치를 전송할때까지 기다리는 시간
batch.size
( default 16KB ) : linger.ms 시간 전에 이 용량이 채워지면 배치 전송
배치 크기보다 큰 메세지가 있다면 배치에 넣지 않고 바로 전송
배치는 전송하는 파티션마다 하나씩 할당되므로 너무 큰 값으로 설정하면 메모리 낭비
Kafka Producer Metrics를 사용해 평균 배치 크기를 모니터링할 수 있음