Apache Kafka는 높은 성능과 확장성을 요구하는 다양한 실시간 데이터 스트리밍을 위한 분산형 이벤트 스트리밍 플랫폼입니다. 다음은 Kafka의 주요 특징과 구성 요소에 대한 설명입니다.
1. 기본 구조
Producer (프로듀서) : 데이터를 생성하고 Kafka 토픽에 전송하는 역할
- Kafka cluster 에 메세지를 보내고 넣음.
- 메세지를 저장할 때 어떤 토픽에 저장해줘 라고 요청을 함
Consumer (컨슈머) : Kafka 토픽에서 데이터를 읽어오는 역할
- Kafka cluster 에서 메세지를 읽어와서 필요한 처리를 함.
- 어떤 토픽에서 메세지를 읽어올래 라고 처리함.
ZooKeeper (주키퍼) : Kafka cluster 를 관리함.
- ZooKeeper 속에 Kafka cluster 와 관련된 정보가 기록되고 관리됨.
Kafka cluster (카프카 클러스터):
- 메세지를 저장하는 저장소
- 여러개의 브로커로 구성
- 메세지를 나눠서 저장하고 이중화 처리도 한다.
- 장애가 나면 대체도 한다 (고가용성)
- 데이터를 이동하는데 필요한 핵심 역할을 맡음.
Broker (브로커): Kafka 서버 인스턴스 (브로커는 각각의 서버라고 보면 됨)
- 데이터를 저장하고 관리합니다. 여러 브로커가 클러스터로 구성됩니다.
Topic: 데이터를 카테고리별로 구분하는 단위. 한개의 토픽은 한개 이상의 파티션으로 나뉩니다.
- 메세지를 저장하는 단위가 토픽이라고 한다.
- 메세지를 구분하는 용도로 사용을 함.
- 파일시스템의 폴더나 메일함과 유사한 개념
- 한개의 토픽은 한개 이상의 파티션으로 구성 된다.
- 토픽을 기준으로 producer와 consumer 가 메세지를 주고 받음.
Partition: 메세지를 저장하는 물리적인 파일을 의미함
- 토픽의 세그먼트로, 각 파티션은 순서가 보장되는 레코드의 시퀀스를 가집니다.
** Partition 과 Offset, 메시지 순서
- Partition 은 append-only 파일이고 각각의 메시지가 저장 되는 위치를 offset 이라고 한다.
- Producer 가 카프카에 메시지를 저장하면 저장된 메시지들은 차례대로 offset-0, offset-1, offset-2 같은식으로 offset 값을 가지게 된다.
- 또한, append-only file 이기 때문에 Producer 가 넣은 메시지는 Partition의 맨뒤에 추가가 된다. (중간에 낄 수 없음)
- Consumer 는 Offset 기준으로 메시지를 순서대로 읽는다. (섞어서 읽지 못함)
- Partition에 저장된 메시지는 삭제되지 않는다.(파일이기 때문)
2. 기능:
- 높은 처리량: 대용량의 실시간 데이터를 처리할 수 있습니다.
- 확장성: 브로커 수를 추가하여 쉽게 확장할 수 있습니다.
- 내구성: 데이터를 디스크에 저장하여 내구성을 보장합니다.
- 실시간 처리: 실시간으로 데이터를 처리하고 전송할 수 있습니다.
3. 사용 사례:
- 로그 및 이벤트 수집: 애플리케이션 로그, 사용자 활동 로그 등의 실시간 수집.
- 데이터 파이프라인: 데이터베이스와 데이터 웨어하우스 간의 실시간 데이터 스트리밍.
- 실시간 분석: 실시간 데이터 분석 및 모니터링.
- 메시지 브로커: 애플리케이션 간의 데이터 전송을 위한 메시지 브로커로 사용.
'IT 세상' 카테고리의 다른 글
CQRS(Command Query Responsibility Segregation) (0) | 2024.08.07 |
---|---|
Architecture 설계 - 요구사항, Cloud Native, MSA (0) | 2024.08.05 |
Redis(REmote DIctionary Server) 주요 개념 및 특징, 사례 (0) | 2024.08.05 |
그라파나(Grafana) 로 데이터 시각화 하기 (0) | 2024.08.05 |
Application Architecture (AA) 역량 (0) | 2024.07.27 |