📌 kafka 및 Confluent 를 공부하며 정리하는 글
1. Topic (토픽) 이란?
토픽은 데이터 스트림과 비슷한 개념이다.
데이터베이스의 테이블과 비슷하다. (제약사항이 없는!)
카프카에서 원하는 만큼의 토픽을 만들 수 있고, 각 토픽은 이름으로 구별한다.
2. 토픽과 Partition (파티션), Offset(오프셋)
- 토픽은 파티션으로 쪼개진다!
각 파티션은 NUMBER를 가지는데(partition0, partition 1, 이렇게), 각 파티션은 순서를 갖게 된다.
하나의 파티션 안의 각 메세지는 0부터 순차적으로 증가하는 id(offset)를 가진다.
🔎 Topic Example: delivery_gps
여러 배달 오토바이가 배달 중인 비즈니스에서 카프카를 사용한다고 가정해보자.
각 배달 오토바이의 GPS 위치가 카프카로 보고되는데, 해당 위치 정보를 delivery_gps라는 topic에 담는다.
각 배달기사는 카프카에 20초마다 데이터(메시지)를 보내는데, 각 메세지는 오토바이 ID 및 위치(위도 및 경도)정보를 나타낸다.
토픽으로부터 Location dashboard 및 Notification Service 등의 어플리케이션을 개발할 수 있다.
- Offset은 특정 partition 내에서만 의미를 가진다: partition 0의 offset 3은 partition1의 offset 3과 동일한 데이터를 나타내지 않는다.
- Partition 내에서만 Offset의 순서가 보장된다: partition1의 offset 2 와 partition2 의 offset 2 중 어떤 offset 2의 메세지가 더 먼저 생성(write)되었는지는 알 수 없다
- 데이터는 정해진 시간동안 보관된다: 기본적으로 일주일만 보관된다(Data retention Policy: 전체적으로 적용하거나 개별 topic 별로 적용 가능)
- 데이터는 segment 단위로 제거되는데, 일단 파티션에 데이터가 write 되면, 이는 절대 변할 수 없다.
- key의 값이 null인 경우, 데이터는 파티션에 랜덤하게 할당된다
3. Broker
Kafka 클러스터는 다수의 broker(server) 로 구성된다.
각 broker는 ID(integer)로 식별 가능하다.
각 broker는 특정 topic partition을 담고 있다.
Kafka가 자동으로 topic을 Broker에 분배하여 할당한다.
정확히 말하면 topic이 쪼개져 있는 partition들을 여러 Broker에 걸쳐 할당한다.
브로커 클러스터가 잘 구성되어 있다면 이중 하나의 broker(bootstrap broker)에만 접속해도 전체 cluster에 접속 가능하다.
1) Topic Replication Factor
Topic은 최소 1 이상의 Replication Factor를 가지게 되는데, 보통 2와 3사이의 값을 가진다.
총 partitions의 갯수는 다음과 같다: Partitions num X Replication Factor
broker가 down 되면, 또 다른 broker가 그 데이터를 담당하는데, 이때 replicated된 데이터를 통해 담당하게 된다.
아래 그림을 통해 rf 값이 2로 설정되어 있고 파티션이 3개인 토픽을 확인할 수 있다.
rf가 2이기 때문에 하나의 원본 파티션과 그 파티션의 복제본이 다른 브로커에 할당되어 있다.
이때 102브로커에 장애가 생겨도 102가 담고 있던 토픽은 각각 101과 103에도 할당되어 있어 지속적인 처리가 가능하다.
Leader for a Partition
원본 파티션과 복제본 파티션이 펼쳐진 브로커 클러스터 환경에서 '리더'가 존재한다.
특정 partition에 대해 leader인 브로커는 해당 파티션에 대한 data 처리과정을 담당한다.(receive & serve)
다른 follower broker는 data를 동기화할 뿐이다. (apache 2.5 버전부터는, follower로부터 read 가능)
즉, 각 파티션마다 leader와 다수의 ISR 레플리카 그룹(follower)이 할당된다.
토픽 파티션에 대한 leader 선정 과정은 백그라운드에서 이루어지는데,
zookeeper에 의해 그 leader 와 ISR 그룹이 결정된다.
'자기발전소 > # Kafka_Confluent' 카테고리의 다른 글
[Kafka] Producer 관련 주요 옵션 (0) | 2021.05.29 |
---|---|
[Kafka] Broker & Zookeeper (0) | 2021.05.19 |
[Kafka] Consumer (0) | 2021.05.19 |
[Kafka] Producer (0) | 2021.05.19 |
[Kafka] Apache Kafka란 (0) | 2021.05.19 |