본문 바로가기

java framework/kafka

Kafka 용어 정리

Kafka

-      프로듀서와 컨슈머의 분리

-      메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용

-      높은 처리량을 위한 메시지 최적화

-      데이터가 증가함에 따라 스케일 아웃이 가능한 시스템

-      Pub- sub 모델 : 메시지를 직접적으로 보내는 것이 아니라 topic을 통해 카테고리화 한다. 분류된 메시지를 받기를 원하는 consumer는 해당 topicsubscribe함으로써 메시지를 읽어올 수 있다. (발신자가 메일 서버로 SMTP를 통해 메일을 보내고 수신자가 메일 서버에서 IMAP를 통해 메일을 수신하는 것과 비슷)

-      카프카는 디스크에 메시지를 저장하고 유지한다.

 

Kafka topic : producerconsumer들이 카프카로 보낸 자신들의 메시지를 구분하기 위한 네임

-      Kafka topic에서 모든 메시지는 바이트의 집합이며 이 집합은 배열로 표현된다.

 

Producer : 카프카 큐에 정보를 저장하는 애플리케이션

-      ProducerKafka 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가 반드시 실행되어야 한다.

-      brokerstatless지만 zookeeper를 사용해 state를 유지한다.

-      Cluster 상태에 대해 카프카 큐의 producerconsumer에게 통보한다.

-      어떤 브로커가 어떤 topic partition에 대해서 leader인지 기록하고 이러한 정보를 producerconsumer가 메시지를 읽고 쓸 수 있게 제공한다.

 

Producerbroker에게 데이터를 push한다. 데이터를 게시하는 시점에서 producer는 해당 topic partition의 선정된 leader를 검색하고 자동으로 해당 leader의 서버에 메시지를 전송한다.

비슷한 방식으로 consumerbroker에게서 메시지를 읽는다.

'java framework > kafka' 카테고리의 다른 글

windows 환경에서 kafka 설치 및 실행  (0) 2019.08.02