아파치 카프카(Apache Kafka)

  • 아파치 소프트웨어 재단이 슼라라로 개발하나 오픈 소스 메시지 브로커 프로젝트
  • 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표
  • 분산 트랜잭션 로그로 구성된, 확장 가능한 pub/sub 메시지 큐로 정의 가능
  • 스트리밍 데이터를 처리하기 위한 기업 인프라를 위해 적절하다.

 

pub/sub 모델(발신자/수신자)

  • 발신자 : 카프카에게 토픽(Topic)이라는 주소로 전송하는 역할
  • 수신자 : 카프카에게 원하는 토픽을 구독

 

개발 배경

  • 기존 링크드인 데이터 처리 시스템은 각각의 파이프라인 별 dependency가 높았고, 확장하기 어려운 상황이였다.
  • 카프카 개발 전 링크드인 데이터 처리 시스템

  • 카프카 적용
    • 프로듀서와 컨슈머의 분리
    • 영구 메시지 데이터를 여러 컨슈머에게 적용
    • 높은 처리량을 위한 메시지 최적화
    • 트래픽 증가에 따른 스케일 아웃이 가능한 시스템

 

 

카프카 구성 요소

  • 프로듀서(Producer) : 메시지를 생산하고, 브로커의 토픽으로 전달하는 역할
  • 컨슈머(Consumer) : 브로커의 토픽으로부터 저장된 메시지를 가져오는 역할
  • 브로커(Broker) : 카프카 내의 서버 또는 노드를 지칭한다. -> 실행된 카프카 서버. 메시지를 저장하고 관리한다.
  • 주키퍼(Zookeper) : 분산 어플리케이션 관리를 위한 코디네이션 시스템
    • 분산된 노드 정보(메시지 큐의 메타 정보) 중앙 처리 및 구성 관리, 동기화 등을 수행한다.

 

 

카프카 동작 방식

  • 프로듀서는 메시지를 카프카에 전달한다.
  • 전달된 메시지는 브로커의 토픽(Topic)이라는 구분에 의해 저장된다.
  • 컨슈머는 구독한 토픽에 접근하여 pull 방식으로 가져온다.

 

 

카프카의 특징과 장단점

  • 특징과 장점
    • 디스크에 메시지를 저장해서 영속성(persistency) 보장
    • 프로듀서와 컨슈머 분리로 멀티 프로듀서와 멀티 컨슈머 지원 -> pub/sub 구조의 확장성
    • 메시지 배치 처리가 가능해서 네트워크 오버헤드 감소
    • 높은 성능과 고가용성, 확장성 : 일부 노드가 죽어도 다른 노드가 일을 지속
    • 메시지 보장 여부 선택 가능
  • 단점
    • 직접 통신이 아니기 때문에 잘 전달됬는지 파악 X
    • 중간 메시징 플랫폼을 거쳐서 전달 속도가 상대적으로 느리다.

 

+ Recent posts