Kafka
- 프로듀서와 컨슈머의 분리
- 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
- 높은 처리량을 위한 메시지 최적화
- 데이터가 증가함에 따라 스케일 아웃이 가능한 시스템
- Pub- sub 모델 : 메시지를 직접적으로 보내는 것이 아니라 topic을 통해 카테고리화 한다. 분류된 메시지를 받기를 원하는 consumer는 해당 topic을 subscribe함으로써 메시지를 읽어올 수 있다. (발신자가 메일 서버로 SMTP를 통해 메일을 보내고 수신자가 메일 서버에서 IMAP를 통해 메일을 수신하는 것과 비슷)
- 카프카는 디스크에 메시지를 저장하고 유지한다.
Kafka topic : producer와 consumer들이 카프카로 보낸 자신들의 메시지를 구분하기 위한 네임
- Kafka topic에서 모든 메시지는 바이트의 집합이며 이 집합은 배열로 표현된다.
Producer : 카프카 큐에 정보를 저장하는 애플리케이션
- Producer는 Kafka topic으로 메시지를 전송한다.
- 로그 선행 기입 파일 마지막에 메시지를 추가한다.
Partition : 토픽이 분할된 것
- 각 partition은 메시지를 도착한 순서에 맞게 저장한다.
- 메시지는 topic으로 분류되고, topic은 여러 개의 파티션으로 분류된다.
Consumer : 주어진 topic partiion에 속한 로그 파일에서 메시지를 가져오는 애플리케이션
Broker : 카프카 애플리케이션이 설치되어 있는 서버 또는 노드.
- 동일한 노드내에서 여러 개의 broker서버를 띄울 수도 있다.
- 각각의 topic partition에는 leader로 활동하는 broker가 하나씩 있고, 0개 이상의 follower를 갖는다.
- Leader는 해당하는 partition의 읽기나 쓰기 요청을 관리한다.
- Follower는 leader의 작업에 최대한 간섭하지 않으면서 백그라운드에서 해당 leader를 복제한다.
Zookeeper : 분산 메시지 큐의 정보를 관리해 주는 역할
- Kafka는 주로 다중 브로커로 구성되기 떄문에 Kafka를 띄우기 위해서는 zookeeper가 반드시 실행되어야 한다.
- 각 broker는 statless지만 zookeeper를 사용해 state를 유지한다.
- Cluster 상태에 대해 카프카 큐의 producer나 consumer에게 통보한다.
- 어떤 브로커가 어떤 topic partition에 대해서 leader인지 기록하고 이러한 정보를 producer나 consumer가 메시지를 읽고 쓸 수 있게 제공한다.
Producer는 broker에게 데이터를 push한다. 데이터를 게시하는 시점에서 producer는 해당 topic partition의 선정된 leader를 검색하고 자동으로 해당 leader의 서버에 메시지를 전송한다.
비슷한 방식으로 consumer는 broker에게서 메시지를 읽는다.
'java framework > kafka' 카테고리의 다른 글
windows 환경에서 kafka 설치 및 실행 (0) | 2019.08.02 |
---|