메시지를 생산(Produce)해서 Kafka의 Topic으로 메시지를 보내는 애플리케이션
* Producer와 Consumer는 서로 알지 못해, 각각의 고유 속도로 Partition(Commit Log)에 Write 및 Read를 수행한다.
Record
- Producer가 전송하는 데이터
- Message = Record = Event = Data
- Headers = Metadata, Key + Value = Body Data
- Key + Value = Json, Avro 등 다양한 형태가 가능하다.
** Kafka는 Record를 Byte Array로만 저장한다.
Producer 라이브러리가 입력 받은 데이터를 Serializer 작업을 진해해서 Byte Array로 데이터를 전달한다.
내부 동작
1. Client는 Record를 생성 후 Producer Libarary를 통해 .send() 실행 -> 보통 여기까지 코드 작성
2. Record가 Serializer를 통해 Byte Array로 변경되고 Partitioner로 전달
3. Partitioner는 어느 Partition으로 전달할지 결정
4. 압축 옵션이 존재하면 Compress를 통해 압축 진행
5. 이후, RecordAccumulator로 보내지고 배치 형태나 즉시 Kafka로 이동한다.
6. Kafka는 성공적으로 수신 시, 성공 metadata 리턴
7. 실패 시, 재시도 여부에 따라 RecordAccumulator에서 재전송
8. Limit까지 재전송에도 실패할 경우 예외 리턴
'Kafka' 카테고리의 다른 글
[Kafka] Replication (1) (0) | 2022.10.12 |
---|---|
[Kafka] Consumer (2) (0) | 2022.10.11 |
[Kafka] Consumer (1) (0) | 2022.10.10 |
[Kafka] Producer (2) (0) | 2022.10.09 |
[Kafka] Apache Kafka란? (0) | 2022.10.07 |