Archive

Kafka 특징 개요 본문

------- DE -------/Kafka

Kafka 특징 개요

enent 2020. 9. 8. 02:17
반응형

TOC

  1. What is Kafka

  2. Kafka의 특징

What is Kafka

 

여러대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템.
링크드인에서 만든 대량의 데이터를 높은 처리량실시간으로 취급하기 위한 프레임워크

 

  • 확장성 : 여러 서버로 쉽게 Scale out 할 수 있음 -> 데이터 양에 따른 손쉬운 처리

    • Broker를 여러대 구성할 수 있고, Broker수를 증가시킴으로서 Kafka Cluster 전체의 처리량을 증가시킬 수 있다.

  • 영속성 : 파일 기반으로 수신한 데이터를 디스크에 저장 -> 필요할 때 읽을 수 있음

    • 디스크의 용량에 따라 기간/크기를 기준으로 저장 및 제거 가능

  • 유연성 : 연결 할 수 있는 프레임워크들이 많음

    • Producer/Consumer 구현을 위한 API가 제공되어 이를 구현한 OSS가 다수 존재

  • 신뢰성 : 메시지 전달 보증을 통해 데이터 분실의 위험을 막음

    • Ack와 Offset Commit 방식으로 메시지가 제대로 송수신되었음을 확인, 실패 시 재시도를 허용.

Kafka의 특징

  • 각 구성요소와 특징에 대해 자세하게 짚고넘어가는 글을 작성할 예정이니 가볍게 적어보겠다.

1. Pub / Sub 메시징 모델

  • 일반적으로 메시징 모델은 Producer, Broker, Consumer로 구성되어있다.

    • Producer (Writer) : 메시지 생산자

    • Broker (Server) : 메시지 수집/전달

    • Consumer (Reader) : 메시지 소비자

Kafka 구성

  • Producer는 메시지를 Consumer에게 메시지를 직접 전달하는 것이 아니라 Broker를 통해 전달.

    • Broker 내의 Topic에 메시지를 등록(Publish) 하는 형태로 이루어진다.

  • Consumer는 여러개 존재하는 Topic중 하나를 선택하여 메세지를 받는다.

    • 같은 토픽을 구독(Subscribe)하면 같은 메시지를, 다른 토픽을 구독하면 다른메시지를 받는다.

  • Consumer Group을 두어 여러 Consumer가 한 개의 Topic에 대해 분산처리할 수 있다.

  • 즉 메시지 전달과정은 각각이 독립적으로 이루어지며, 따라서 Producer, Broker, Consumer 각각 본인들 역할에만 충실하면 메시지전달이 이루어지므로 매우 효율적이고 안정적으로 데이터 처리를 할 수 있다.

  • 그림상 화살표는 일방향이지만 Producer -> Broker (Push), Consumer -> Broker (Pull) 이루어져 있다.

    • Broker가 Consumer의 상태를 체크할 필요가 없고, Consumer 주체적으로 데이터 수신, 진행 을 관리하게 됨

2. 디스크기반

  • 디스크에 데이터를 저장하므로서 영속성을 보장한다.

3. Connect API

  • Broker와 Consumer, Producer 사이의 Connect API를 통해 다른 프레임워크들을 쉽게 Producer, Consumer로서 연결시킬 수 있다.

4. 전달보증

  • 세가지 수준의 전달보증을 제공한다

    • At Most Once

      • 1회 전달 시도해본다. 메시지는 중복되지 않으나 상실될 수도 있다 ( 재전송 X,)

    • At Least Once

      • 적어도 1회는 전달한다. 메시지가 중복될 가능성은 있지만 상실되지는 않는다

    • Exactly Once

      • 1회만 전달한다. 중복되거나 상실되지도 않고 확실하게 메세지가 도달한다

      • Producer - Broker, Broker - Consumer 사이 모두에서 보증이 되어야함.

        • Producer - Broker : 시퀀스 번호를 관리하여 중복되는 실행을 제거하므로서 보증

        • Broker - Consumer : 트랜젝션 중단시 중단하기 까지의 처리를 제거하므로서 보증

      • Broker 뿐만 아니라 Producer 시스템, Consumer시스템 모두 상태관리가 필요함.

        • 따라서 Kafka 단독으로는 실현하기 힘드나, Kafka는 이미 해당 기능이 있으므로 Producer 시스템, Consumer시스템에서의 필요 조건이 만족하면 전달 보증.

  • 주로 Exactly Once를 목적으로 하나 초기에는 처리량을 위해 At Least Once 수준으로 전송했다.

  • 작성기준 현 버전인 2.6.0에서는 exactly once 실패시의 에러 핸들링을 하는 기능까지 추가되었다.

반응형

'------- DE ------- > Kafka' 카테고리의 다른 글

Kafka 구성 및 Send/Receive  (0) 2020.09.15
Comments