2023. 9. 5. 16:52ㆍ학습/Data Engineering
Apache Kafka는 LinkedIn에서 개발된 오픈 소스 스트림 처리 플랫폼입니다.
https://www.hanbit.co.kr/media/channel/view.html?cms_code=CMS9400468504
큰 데이터를 실시간으로 처리하고 분석하는 데 사용됩니다.
작동 원리
Kafka의 핵심 개념은 Producer, Broker(Server), Consumer입니다.
Producer: 데이터를 생성해서 Kafka에 전달하는 역할을 합니다.
Broker(Server): Producer로부터 받은 메시지를 저장하고 관리합니다. 여러개의 Broker로 구성된 Kafka 클러스터는 대용량의 메시지들을 분산 저장합니다.
Consumer: Broker가 가지고 있는 메시지를 가져가는 역할을 합니다.
추가!
Topic: Kafka에서 메시지들은 Topic이라는 카테고리에 따라 분류됩니다.
Partition: Topic은 하나 이상의 Partition으로 나뉘어져 있습니다. 이렇게 하는 이유는 병렬처리를 가능하게 하기 위함입니다.
Offset: 각 Partition 내에서 메시지 위치(순서)를 표현하는 unique identifier 입니다.
활용처
Kafka는 다음과 같은 환경에서 주로 사용됩니다:
실시간 스트림 데이터 처리 및 분석
로그 수집 시스템
애플리케이션 간의 비동기 작업 큐
웹사이트 활동 추적
장점
고성능: 대용량 실시간 스트림 데이터 처리에 최적화되어 있습니다.
확장성: 클러스터 형태로 구축되어 새로운 노드 추가와 함께 성능이 선형적으로 증가합니다.
내구성과 안정성: 복제와 파티셔닝 기능을 제공하여 데이터 손실 위험이 낮습니다.
단점
복잡성: 설정과 관리가 상대적으로 복잡할 수 있으며, 장애 발생 시 디버깅도 어렵습니다.
기본적인 메세징 시스템 기능 부재: JMS(Java Message Service)나 RabbitMQ 같은 전통적인 메세징 시스템과 달리, 메시지 우선순위 지정, 지연 메시지 전송 등의 기능이 부재합니다.
Kafka는 이러한 특성들로 인해 실시간 데이터 파이프라인 및 스트리밍 애플리케이션에서 널리 사용됩니다.
'학습 > Data Engineering' 카테고리의 다른 글
strava api를 이용해 운동 데이터 mysql에 적재하기 -1 (2) | 2023.09.05 |
---|---|
mysql에 적재된 data를 flask 웹에 띄우기 (+ 개선사항) (0) | 2023.09.05 |
ubuntu에 PostgreSQL 설치 -1 (0) | 2023.09.01 |
간단한 ML api server 띄우기 -2 hello flask (0) | 2023.08.30 |
간단한 ML api server 띄우기 - 1 환경설정(pyenv) (0) | 2023.08.30 |