Apache Kafka - 분산 스트리밍 플랫폼
Apache Kafka
카프카(kafka)는 분산 스트리밍 플랫폼(Distributed streaming platform)이다. 분산 스트리밍 플랫폼은 아래의 기능을 가지고 있어야 한다.
- 데이터 스트림을 게시(Publish)하고 구독(Subscribe)할 수 있어야 한다. 이 점에서 메시지 큐 혹은 엔터프라이즈 메시징 시스템과 유사한 면이 있다.
- 내결함성(장애에 대한 내성)을 가지고 있어야 한다. 스트리밍 플랫폼을 구성하는 노드에 문제가 생기더라도 데이터를 안전하게 저장 할 수 있어야 한다.
- 데이터 스트림을 처리 할 수 있어야 한다.
카프카는 분산 스트리밍 플랫폼이 가져야 하는 위의 기본적인 기능을 가지고 있다. 카프카는 아래의 응용프로그램을 개발하는데 유용하게 사용 할 수 있다.
- 시스템과 시스템 혹은 시스템과 애플리케이션 사이에 안전한 데이터 전송을 위한 실시간 스트리밍 데이터 파이프라인 구축
- 데이터 스트림을 변환하거나 이를 받아서 즉시 처리하는 실시간 스트리밍 애플리케이션의 구축
카프카가 어떻게 이런일을 하는지 살펴보자. 아래 카프카의 주요 컨셉을 설명하고 있다.
- 카프카는 하나 이상의 서버로 구성되는 클러스터에서 작동한다.
- 카프카 클러스터는 토픽(topics)라고 부르는 파이프라인에 데이터 레코드 스트림을 저장한다.
- 각각의 레코드는 키, 값, 타임스탬프로 구성된다.
카프카의 주요 API들은 아래와 같다.
- Producer API : 애플리케이션은 이 API를 이용해서 하나 이상의 카프카 토픽에 스트림 레코드를 게시할 수 있다.
- Consumer API : 애플리케이션은 이 API를 이용해서 하나 이상의 카프카 토픽으로 부터 스트림 레코드를 구독 할 수 있다.
- Streams API : 애플리케이션이 하나 이상의 토픽에서 입력 스트림을 읽고 변환해서 하나 이상의 출력 토픽으로 스트림을 보낼 수 있도록 한다.
- Connector API : Connector를 이용해서 재 사용 가능한 Producer 혹은 Consumers를 카프카 토픽에 연결 할 수 있다. 예를 들어 관계형 데이터베이스 컨넥터는 테이블에 대한 변경 사항을 캡처할 수 있다.
아래 그림은 카프카의 구성요소들을 보여주고 있다. 이들 구성요소들은 위의 주요 API를 이용해서 주어진 일을 한다.
참고
.
'프로그래밍 > Server' 카테고리의 다른 글
네이버 클라우드 플랫폼 무료체험 이벤트 신청. (0) | 2017.06.02 |
---|---|
랜섬웨어 예방 요령 - 한국인터넷진흥원 (0) | 2017.05.15 |
포트 오픈상태 확인 사이트 (0) | 2017.01.18 |
윈도우 호스트(hosts) 파일 변경하기 (0) | 2015.10.07 |
OpenSSL Convert PEM (0) | 2015.09.08 |