티스토리 뷰
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
- Total
- Today
- Yesterday
- bool
- operators
- Lambda
- Method
- index
- Upper
- Python
- isalpha
- counter
- find
- If
- permutations
- Lower
- for
- isdigit
- function
- Built-in Functions
- zip
- combinations
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |