티스토리 뷰

Kafka

[Kafka] 핵심 개념 정리

seungwonlee 2024. 11. 20. 15:10

1. 프로듀서(Producer)

  • 데이터(메시지)를 발행하는 서비스.
  • 다양한 데이터 소스에서 가져온 데이터를 kafka의 특정 토픽에 저장.

2. 브로커(Broker)

  • kafka의 핵심 서버 컴포넌트.
  • 프로듀서로부터 데이터를 받아 저장하고, 컨슈머에게 전달.
  • kafka 클러스터는 여러 브로커로 구성되며, 각 브로커는 하나 이상의 토픽 데이터를 관리.

※ 클러스터: 비슷한 요소들이 모여 집합이나 군집을 이루는 것을 의미.

클러스터링: 비슷한 특성을 가진 데이터를 그룹으로 나눈 것.


3. 토픽(Topic)

  • kafka에서 데이터를 분류하는 단위.
  • N개의 파티션으로 나뉘어 병렬 처리 지원.
  • 프로듀서는 특정 토픽에 데이터를 발행하고, 컨슈머는 해당 토픽을 구독하여 데이터를 소비.

4. 파티션(Partition)

  • 토픽 내 데이터를 나눈 단위.
  • 병렬 처리를 통해 대용량 트래픽을 빠르게 처리 가능.
  • 순차 처리 보장 하지만 다른 파티션 간에는 순서 보장이 안될 수 있음.

5. 컨슈머(Consumer)

  • 특정 토픽의 데이터를 소비하는(읽기) 서비스.
  • 하나 이상의 토픽을 구독 가능.
  • 파티션 단위로 데이터를 읽으며 병렬 소비 가능.

6. Message

  • Kafka에서 다루는 데이터의 기본 단위.
  • <Key, Value> 형태로 구성.

7. Offset

  • 파티션 내 메시지의 저장 위치를 위미.
  • 각 메시지는 고유한 오프셋을 가짐.
  • 컨슈머는 오프셋을 기준으로 어디까지 읽었는지를 추적.

8. 컨슈머 그룹(Consumer Group)

  • 하나의 토픽 데이터를 여러 컨슈머가 동시에 처리하기 위해 그룹으로 묶음.
  • 컨슈머 그룹 내 컨슈머와 파티션을 수 조정

파티션 수 < 컨슈머 수: 잉여 컨슈머 발생(동작하지 않음).

파티션 수 > 컨슈머 수: 컨슈머가 여러 파티션을 처리해 부하 증가.

 

파티션 수는 늘릴 수 있지만 줄일 수 없으므로, 무작정 늘리기보다는 테스트를 통해 최적의 파티션 수와 컨슈머 수를 설정하는 것이 중요 


9. Cluster

  • 고가용성(HA)을 위해 여러 서버를 묶어 특정 서버의 장애를 극복할 수 있도록 구성.
  • Broker가 증가할수록 메시지 수진, 전달 처리량을 분산시킬 수 있어 확장에 유리.

 고가용성: 서버, 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능.


10. Rebalancing

컨슈머 그룹의 가용성과 확장성을 확보해 주는 개념으로 컨슈머가 추가되거나 제거되거나 장애가 발생할 때 파티션의 소유권을 재조정.

  • 추가: 새로운 컨슈머에게 파티션 할당하여 부하를 분산.
  • 장애: 장애가 발생한 컨슈머의 파티션 소유권을 회수하고, 다른 컨슈머에 재배정.

 리밸런싱 중에는 컨슈머가 메시지를 읽을 수 없다.


11. Replication

Cluster의 가용성을 보장하기 위해 각 파티션의 복제본(Replica)을 생성하여 백업 및 장애 복구 지원.

1. Leader Replica

  •  각 파티션에서 하나만 존재하며, 모든 Producer와 Consumer 요청을 처리.
  • 요청을 단일 리더를 통해 처리함으로써 데이터 일관성을 유지.

2. Follower Replica

  • 리더를 제외한 나머지 복제본으로, 리더의 데이터를 복제하여 백업 역할 수행.
  • 리더 장애 발생 시, 동기화된 팔로워 중 하나를 새로운 리더로 선출.
  • 주의: 리더와 동기화되지 않은 팔로워는 리더로 선출되지 않음.

가용성: 요구 기능을 요구 시간 동안(서비스가 중단되지 않고) 올바르게 수행할 수 있는 능력 


비동기 메시지 통신으로 데이터를 처리할 때 주의할 점

비즈니스 로직 실행 후 이벤트가 발생 실패

  • 해당 이벤트를 바라보는 컨슈머 또한 자신의 비즈니스 로직을 수행할 수 없음.
  • 전체 비즈니스 흐름에 공백(Hole)이 발생하거나 데이터 정합성에 문제가 생길 수 있음.

정합성: 시스템 내 데이터가 일관되고 정확한 상태를 유지하는 것

 

예를 들면 주문 생성 후 결제 상태가 업데이트되지 않으면, 데이터 간 정합성이 깨진 상태이다. kafka처럼 분산 시스템에서는 이벤트 발행 실패가 정합성 문제를 유발할 수 있다.

 

끝.

 

참고 자료 및 이미지 출처

https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함