본문 바로가기

빅데이터/Kafka

아파치 Kafka Producer의 데이터 처리 내부 architecture 설명 및 튜닝포인트

지난 포스트에서 Kafka architecture 및 개요에 대해 알아보았다.


빅 데이터 처리를 위한 아파치 Kafka 개요 및 설명 포스팅


이번 포스트에서는 kafka architecture의 Producer 내부 데이터 흐름에 대해 알아보려고 한다.


Kafka Producer 데이터 내부 처리 순서


#1 : User application thread에서 Record 추가

#2 : Record Batch단위로 Record를 압축

#3 : 복수의 Record Batch를 묶어 Broker로 보냄

#4 : Record Batch를 각 Partition에 저장

#5 : 지정시간에 request 에 대한 완료(ack)를 회신

   - acks=0 : ack 응답없음(속도가장빠름, 데이터유실확률 가장 높음)

   - acks=1  : Leader Replica writer 완료시  회신, follower는 확인하지 않음(속도 중간, 데이터유실확률 중간)

   - acks=all(-1) : 최소 ISR(In-sync replicas)수까지 복제 완료시 회신(속도 가장 낮음, 데이터 유실확률 아주 낮음)


Kafka Producer 튜닝 파라미터


#A : 메모리사용량

   - buffer.memory=64MB 

#B : Record Batch size & 압축

   - batch.size=16KB

   - compression.type=none ('gzip', 'snappy', 'lz4')

#C : Request size

   - max.request.size=1MB

   - acks=1

#D : Request connection

   - linger.ms=0ms(데이터 축적 최대 대기 시간)

   - max.in.flight.requests.per.connection=5

   - send.buffer.bytes=128kb


첨부파일 :  apache kafka producer architecture.key