728x90
Topcis, Partitions, Offsets
- 파티션
- 토픽은 파티션을 나눌 수 있음
- 토픽당 데이터를 분산 처리하는 단위
- 병렬 처리와 많은 양의 데이터 처리를 위해서 파티션을 늘릴 수 있음
(늘리기만 하고 줄이는 것은 안됨) - 파티션의 인덱스는 0부터 1, 2, ... 을 가짐
- 파티션 별로 증가되는 아이디, Offset 값을 가지게 됨.
- Offset은 파티션에서만 의미가 있음
- 토픽과 파티션
- ⭐️ 파티션 안에서는 데이터의 순서가 보장
-> 다른 파티션의 경우 데이터의 순서성 보장이 안됨 - 파티션에 데이터가 한 번 쓰여지면 변경이 안됨(write once)
- key를 주지 않으면 어느 ㅍ티션에 데이터가 들어가는지 모름
- ⭐️ 파티션 안에서는 데이터의 순서가 보장
Broker
Zookeeper
- 분산 애플리케이션 코디네이터
- 주키퍼는 브로커를 관리한다.
- 파티션의 리더 선출을 도와준다.
- 카프카의 변경에 대하여 알림을 준다.
- 카프카는 주키퍼 없이 동작 못함
Producer
- 메세지를 생산하여 토픽으로 메세지를 보내는 애플리케이션, 서버 등을 Producer라고 부른다.
Consumer
- 토픽 이름으로 저장된 메세지를 가져가는 앱, 서버 등을 Consumer 라고 부른다.
- Consumer Group 안의 각각의 Consumer는 파티션의 데이터를 읽는다.
Consumer Offset
Kafka Scaling
Partition
Consumer Group
- Message Lagging이 높을 경우, 치리를 담당하는 컨슈머를 증가한다.
- 컨슈머 그룹별로 그룹 코디네이터가 각 컨슈머 그룹을 관리
- 컨슈머는 풀링(poliing)하거나 커밋할 때 Heartbeat 메세지를 그룹 코디네이터에게 전달.
Replication Factor
Zookeeper
- Zookeeper는 Broker를 관리(Broker 들의 목록/ 설정을 관리)하는 소프트웨어
- Zookeeper는 변경사항에 대해 Kafka에 알린다.
Kafka Connect
- Producer와 Consumer를 사용해 데이터 파이프라인을 생성해 준다.
- Connect와 Source Connector를 사용해 Kafka Broker로 데이터를 보내고, Connect와 Sink Connector를 사용해 Kafka에 담긴 데이터를 타겟 DB에 저장한다.
Kafka Connect 용어 정의
- Connect:Connector를 동작하게 하는 프로세서(서버)
- Connector: Data Source(DB)의 데이터를 처리하는 소스가 들어있는 jar 파일
- Source Connector: data source에 담긴 데이터를 topic에 담는 역할(Producer)을 하는 connector
- Sink Connector: topic에 담긴 데이터를 특정 data source로 보내는 역할(Consumer 역할)을 하는 connector
Kafka Connect DLQ(Dead Letter Queue)
- 오류가 발생한 레코드를 별도의 토픽에 처리한다.
Message Flow in Kafka
- Topic=mall, Partition=1, Replica=1 인 경우, 한 개 파티션으로 처리한다.
- LAG는 Consumer offset과 Producer offset의 차이를 의미한다.
리밸런싱이란 컨슈머 그룹의 파티션 소유권을 재할당하는 작업, Producer의 메세지는 모든 파티션에 균등하게 배분하고 저장된다.
- Conumser offset이 있다는 것은, Consumer Group 로 데이터를 전달하지 않은 것이다.
멀티 파티션 및 멀티 컨슈머 환경에서 중요한 것은 어떤 상황에서도 메세지를 유실하지 않으면서 순서대로 처리하는 "메세지 순서성"이 보장되어야 한다.
- 이벤트 설정
- 트리거(명령, 정책
'교육 > [온라인] KOSTA EDU' 카테고리의 다른 글
[KOSTA] Spring-boot를 활용한 MSA 아키텍처 적용하기 (0) | 2024.08.24 |
---|---|
[KOSTA] Kafka를 이용한 서비스와 데이터 통합 - 2편 (0) | 2024.07.19 |
[KOSTA] KAFKA with Spring - 2편 (0) | 2024.07.12 |
[KOSTA] Kafka with Spring Boot - 1편 (0) | 2024.07.12 |
[KOSTA] Java 기반의 객체지향 프로그래밍 1주차 (0) | 2024.06.22 |