카프카에서 토픽이 뭐야??
카프카(Kafka)에서 토픽(Topic)은 메시지를 저장하고 조직하는 기본 단위입니다. 카프카는 대규모 데이터 스트리밍을 지원하는 분산 메시징 시스템으로, 토픽은 이 시스템 내에서 메시지를 논리적으로 구분하는 방법입니다. 좀 더 구체적으로 설명하자면 다음과 같습니다.
1. 토픽의 정의
- 토픽(Topic): 카프카 클러스터 내에서 메시지를 카테고리별로 구분하여 저장하는 논리적인 컨테이너입니다. 각 토픽은 특정 주제나 목적에 맞는 메시지를 포함합니다.
- 예를 들어, '웹사이트 로그'를 저장하는 토픽과 '금융 거래'를 저장하는 토픽은 서로 다른 카프카 토픽으로 구성될 수 있습니다.
2. 파티션(Partition)
- 파티션: 각 토픽은 하나 이상의 파티션으로 나뉩니다. 파티션은 물리적으로 분할된 메시지의 하위 집합이며, 각 파티션은 독립적으로 관리되고 저장됩니다.
- 파티션을 사용함으로써 데이터 병렬 처리가 가능해지고, 확장성과 내구성이 향상됩니다.
3. 메시지(Message)
- 메시지: 각 파티션 내에 저장되는 단위 데이터입니다. 메시지는 키(key), 값(value), 타임스탬프(timestamp) 등의 메타데이터를 포함할 수 있습니다.
- 메시지는 생산자(Producer)에 의해 생성되어 토픽의 특정 파티션에 기록되며, 소비자(Consumer)는 이 메시지를 읽어들입니다.
4. 생산자(Producer)와 소비자(Consumer)
- 생산자(Producer): 메시지를 생성하여 특정 토픽의 파티션에 기록하는 역할을 합니다. 생산자는 메시지에 키를 부여하여 특정 파티션으로 라우팅할 수 있습니다.
- 소비자(Consumer): 특정 토픽의 파티션으로부터 메시지를 읽어들이는 역할을 합니다. 일반적으로 소비자 그룹(Consumer Group)으로 조직되어, 여러 소비자가 동일한 토픽을 병렬로 처리할 수 있습니다.
5. 카프카 클러스터
- 브로커(Broker): 카프카 서버 인스턴스를 의미하며, 각 브로커는 하나 이상의 파티션을 호스팅합니다. 여러 브로커가 모여 클러스터를 구성합니다.
- 리더(Leader)와 팔로워(Follower): 각 파티션에는 리더와 팔로워가 있습니다. 리더는 파티션의 읽기/쓰기를 담당하고, 팔로워는 리더의 데이터를 복제하여 데이터 내구성을 보장합니다.
6. 내구성 및 확장성
- 카프카는 데이터 복제 및 로그 세그먼트를 사용하여 높은 내구성을 제공합니다. 또한 파티션 단위로 병렬 처리를 통해 수평 확장이 가능합니다.
7. 토픽 설정
- 리텐션 정책(Retention Policy): 토픽의 메시지가 얼마나 오래 유지될지를 설정합니다. 로그의 크기 또는 시간에 기반하여 메시지가 삭제될 수 있습니다.
- 분할 수(Partition Count): 토픽이 얼마나 많은 파티션으로 나뉘어질지를 설정합니다. 이는 토픽의 성능과 확장성에 영향을 미칩니다.
이와 같이, 카프카의 토픽은 메시지를 논리적으로 구분하고, 파티션을 통해 물리적으로 분할하여 저장 및 관리되는 구조를 가지고 있습니다. 이러한 구조는 대규모 데이터 스트리밍 환경에서 높은 처리량과 내구성을 제공합니다.
카프카의 파티션, 프로듀서와 컨슈머에 관해 알려줘
카프카(Kafka)의 파티션, 프로듀서(Producer)와 컨슈머(Consumer)에 대해 자세히 설명하겠습니다.
1. 파티션(Partition)
파티션은 카프카의 핵심 개념 중 하나로, 각 토픽을 물리적으로 분할한 것입니다. 파티션은 다음과 같은 기능과 특징을 갖습니다:
- 분할된 로그: 파티션은 각각 독립된 로그 파일로 유지됩니다. 이는 토픽 내에서 메시지가 순서대로 기록되고, 각 메시지에는 고유한 오프셋(offset)이 부여됩니다.
- 병렬 처리: 파티션을 통해 데이터 병렬 처리가 가능해집니다. 여러 파티션에 데이터를 분산시킴으로써 동시에 여러 프로듀서와 컨슈머가 데이터를 처리할 수 있습니다.
- 데이터 복제: 각 파티션은 리더(Leader)와 팔로워(Follower)로 구성되며, 리더는 실제 읽기/쓰기 작업을 담당하고, 팔로워는 리더의 데이터를 복제하여 내구성을 보장합니다.
- 확장성: 파티션의 수를 늘림으로써 시스템의 확장성을 높일 수 있습니다. 각 파티션은 독립적으로 관리되기 때문에, 필요에 따라 추가적인 파티션을 통해 처리량을 늘릴 수 있습니다.
2. 프로듀서(Producer)
프로듀서는 카프카 토픽에 메시지를 전송하는 역할을 합니다. 프로듀서의 주요 기능과 특징은 다음과 같습니다:
- 메시지 생성: 프로듀서는 데이터를 생성하여 특정 토픽에 전송합니다. 이 과정에서 메시지에 키와 값을 부여할 수 있으며, 키를 사용하여 메시지를 특정 파티션으로 라우팅할 수 있습니다.
- 메시지 전송: 메시지는 프로듀서에 의해 카프카 클러스터의 특정 파티션에 기록됩니다. 이 때 프로듀서는 브로커에게 직접 메시지를 전송하며, 브로커는 이를 적절한 파티션에 저장합니다.
- 전송 보장: 프로듀서는 메시지 전송의 내구성을 보장하기 위해 다양한 전송 모드를 지원합니다. 예를 들어, acks=all 설정을 통해 모든 팔로워 브로커가 메시지를 수신할 때까지 대기할 수 있습니다.
- 재시도 및 오류 처리: 프로듀서는 전송 실패 시 재시도 정책을 설정할 수 있으며, 오류 발생 시 적절한 조치를 취할 수 있습니다.
3. 컨슈머(Consumer)
컨슈머는 카프카 토픽으로부터 메시지를 읽어들이는 역할을 합니다. 컨슈머의 주요 기능과 특징은 다음과 같습니다:
- 메시지 소비: 컨슈머는 특정 토픽의 파티션으로부터 메시지를 읽어옵니다. 컨슈머는 특정 오프셋부터 메시지를 읽기 시작하며, 이 오프셋은 컨슈머가 처리한 메시지 위치를 나타냅니다.
- 컨슈머 그룹(Consumer Group): 컨슈머는 컨슈머 그룹으로 조직될 수 있습니다. 동일한 그룹 내의 각 컨슈머는 토픽의 서로 다른 파티션을 할당받아 병렬로 메시지를 처리할 수 있습니다. 이는 부하 분산과 높은 처리량을 제공합니다.
- 자동 커밋과 수동 커밋: 컨슈머는 메시지 처리가 완료된 후 오프셋을 자동으로 커밋할 수 있으며, 필요에 따라 수동으로 커밋할 수도 있습니다. 수동 커밋을 통해 메시지 처리의 정확성과 제어를 높일 수 있습니다.
- 내구성 및 확장성: 컨슈머 그룹을 통해 메시지 처리를 확장할 수 있으며, 새로운 컨슈머가 그룹에 추가되면 자동으로 파티션이 재할당되어 부하가 분산됩니다.
4. 프로듀서와 컨슈머의 상호 작용
프로듀서와 컨슈머는 카프카 시스템에서 다음과 같은 방식으로 상호 작용합니다:
- 메시지 전송: 프로듀서는 특정 토픽의 파티션에 메시지를 전송합니다. 이 메시지는 오프셋과 함께 저장됩니다.
- 메시지 소비: 컨슈머는 해당 토픽의 파티션으로부터 메시지를 읽어들이며, 처리한 후 오프셋을 커밋합니다.
- 내구성: 메시지는 파티션에 저장되며, 설정된 리텐션 정책에 따라 일정 기간 동안 유지됩니다. 이 기간 동안 컨슈머는 메시지를 반복적으로 읽을 수 있습니다.
이와 같이, 파티션, 프로듀서, 컨슈머는 카프카 시스템에서 중요한 역할을 하며, 데이터 스트리밍의 효율성과 내구성을 보장합니다.
'[KAFKA]' 카테고리의 다른 글
| 카프카 - 3 (설치, chroot) (0) | 2024.06.24 |
|---|---|
| 카프카 - 2 (0) | 2024.06.24 |
| 카프카 브로커와 클러스터 (0) | 2024.06.23 |