Kafka 기본 개념 정리

Linux/kafka / / 2020. 10. 12. 15:39

이번 프로젝트에서 kafka 를 사용해보며 알게된 kafka 기본 개념을 정리하고자 한다.

 

 

kafka 는 Apache 에서 개발한 Message Broker 이며 개발언어는 스칼라를 사용했다.

 

Message Broker(혹은 Message Queue 라고 부른다) 의 기본개념을 알아보자.

 

메세지 큐의 장점

 - 비동기(Asynchronous): Queue에 넣기 때문에 나중에 처리할 수 있습니다.

 - 비동조(Decoupling): 어플리케이션과 분리할 수 있습니다.

 - 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않습니다.

 - 과잉(Redundancy): 실패할 경우 재실행 가능합니다.

 - 보증(Guarantees): 작업이 처리된걸 확인할 수 있습니다.

 - 확장성(Scalable): 다수의 프로세스들이 큐에 메세지를 보낼 수 있습니다.

 

메세지 큐 사용처

 - 다른 곳의 API로 부터 데이터 송수신이 가능합니다.

 - 다양한 어플리케이션에서 비동기 통신을 할 수 있습니다.

 - 이메일 발송 및 문서 업로드가 가능합니다.

 - 많은 양의 프로세스들을 처리할 수 있습니다.


출처: https://12bme.tistory.com/176 [길은 가면, 뒤에 있다.]

 

Kafka 동작방식

1. 메세지 생산자(Producer) 가 Message Broker 에 메세지를 보낸다.

2. 메세지 소비자(Consumer) 가 Message Broker 에 쌓인 메세지를 읽는다.

 

 

Kafka Keywords

 

  • Topic
    topic 은 메세지를 분류하는 기준이며 producer 와 consumer 는 topic 을 특정하여 메세지를 보내고 읽는다.

  • Partition
    하나의 topic 에 많은 양의 메세지가 순간적으로 몰릴 때 병렬처리를 해준다.
    partition 은 기본적으로 Round-robin 방식으로 분산처리를 한다.
    운영중에 partiton 을 늘릴 수 있지만 줄일 수 없으므로 설계 시 유의해야함.
    순차적 처리가 엄청 중요한 모델일 경우 위험함 (ex. 증권시스템)

  • Producer
    Producer 는 메세지 생산의 주체이다.
    메세지를 전달할 때 특정 파티션에 지정해서 적재할 수 있다.

  • Consumer
    Consumer 는 메세지 소비의 주체이다.
    Producer 와 완전히 분리되어 자신의 성능에 맞게 처리량을 조절할 수 있음.
    메세지를 소비하면 Message Broker 에 offset 위치를 업데이트해서 마지막 처리지점을 저장.
    Consumer 가 죽었다 살아나도 offset 을 통해 재처리가 가능함 (fail-over 에 대한 신뢰)
  • Consumer Group
    topic 의 partiton 은 consumer group 과 1:n 매칭을 해야한다.
    partition 과 consumer 의 개수는 1:1 을 권장하나 처리속도에 따라 조절해야한다.
    consumer 가 down 되는 상황을 고려해서 consumer group 을 사용하는 것을 권장한다.

  • Broker
    Broker 는 카프카의 서버이다.
    Broker 에 id 를 설정하여 여러 개의 broker 서버를 띄울 수 있다.
    여러 broker 를 cluster 로 구성할 시 message segment 를 복제한다.
    Zookeeper 에 의해 선정된 컨트롤러는 leader broker 가 되며 메세지를 받고 복제하는 역할을 한다.

  • Zookeeper
    Zookeeper 는 분산 메세지 큐의 정보를 관리한다. (분산 코디네이터)
    Broker 들의 상태를 기록 및 추적하여 컨트롤러를 선정한다.
    Kafka 를 동작하기 위해 반드시 zookeeper 가 동작되어야 한다. (추후 제거 가능할지도..?)

cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum

 

KIP-500: Replace ZooKeeper with a Self-Managed Metadata Quorum - Apache Kafka - Apache Software Foundation

Current state: Accepted Discussion thread: here JIRA:  KAFKA-9119 - 이슈 세부사항 가져오는 중... 상태 Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast). Currently, Kafka us

cwiki.apache.org

 

  • Replication
    Broker 를 여러 대 띄울경우 복제가 된다.
    leader 와 follewer 로 나뉘며 follower 들은 leader 와 싱크를 맞춘다.
    leader 가 죽을 경우 follower 중 하나가 leader 가 된다.
    producer config 에서 ack 설정을 -1 로 하면 leader 가 follower 들에게 메세지를 복사한 뒤 ack 를 보낸다.
    default(ack=1) 옵션은 leader 가 메세지를 읽으면 ack 를 보낸 뒤 follower 들에게 메세지를 복사한다.
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기