4학년 공부 과정/분산 데이터베이스

하둡(Hadoop) - Apache Kafka

환성 2023. 6. 6. 18:01
728x90

Apache Kafka의 등장 배경

💡 정의
Apache Kafka는 고성능 데이터 파이프 라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 수천 개의 회사에서 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다..

Kafka 이전
Kafka 이후

  • 아파치 카프카는 링크드인에서 발생하는 이슈를 해결하고자 개발된 기술이다.
  • 링크드인에서 사용하던 기존 아키텍쳐에서는 데이터 처리의 복잡도가 증가했고, 데이터 파이프라인의 관리가 어려웠다는 문제점이 있었다
  • 시간이 갈수록 애플리케이션 개수가 늘어나고 데이터 전송 파이프라인이 늘어나기 시작하면서 아키텍처가 점차 복잡해졌다.
  • 카프카는 이 문제점들을 해결하고 기업의 대용량 데이터를 수집하고 사용자들이 이를 실시간 스트림을 할 수 있게 해줬다.

 

 

LinkedIn의 사례(Before Kafka)

Kafka 이전
Kafka 이후

 

 

 

 

Apache Kafka Architecture

  • 프로듀서(Producer)
    • 메시지를 생산하여 브로커의 토픽으로 전달하는 역할

 

  • 브로커(Broker)
    • 카프카 애플리케이션이 설치되어 있는 서버 또는 노드를 지칭

 

  • 컨슈머(Consumer)
    • 브로커의 토픽으로부터 저장된 메시지를 전달받는 역할

 

  • 주키퍼(Zookeeper)
     
    • 분산 애플리케이션 관리를 위한 코디네이션 시스템
    • 분산된 노드의 정보를 중앙에 집중하고 구성관리, 그룹 네이밍, 동기화 동의 서비스 수행

Apache Kafka Architecture
Apache Kafka Architecture - 2

 

 

Apache Kafka 동작 원리

  • Topic & Partition
    • 메시지 분류 단위이다
    • n개의 파티션 할당 가능하다
    • 각 파티션마다 고유한 오프셋(offset)을 가진다
    • 메시지 처리순서는 파티션 별로 유지 관리된다

Kafka 동작 원리 - 1

  • Producer & Consumer
    • 프로듀서는 레코드를 생성하여 브로커로 전송한다
    • 전송된 레코드는 파티션에 신규 오프셋과 함께 기록된다
    • 컨슈머는 브로커로 부터 레코드를 요청하여 가져간다(polling)

Kafka 동작 원리 - 2

 

Kafka 동작 원리 - 3
Kafka 동작 원리 - 4

 

 

 

Apache Kafka 고 가용성

  • 고가용성을 위한 파티션 복제기능으로 데이터 유실 방지를 할 수 있다
  • 기본 설정은 replicator factor는 3

Apache Kafka 고가용성

  • 리더 파티션, 팔로워 파티션
  • 리더 파티션 : Kafka 클라이언트와 데이터를 주고 받는 역할
  • 팔로워 파티션 : 리더 파티션으로 부터 레코드를 지속 복제(복제하는데 시간이 걸림). 리더 파티션의 동작이 불가능할 경우 나머지 팔로워1개가 리더로 선출된다

리더 파티션, 팔로워 파티션

  • Kafka rack-awareness
    • 1개의 Rack에 다수의 브로커를 집중 하는 것은 위험하다
    • 다수의 Rack에 분산하여 브로커 옵션(broker.rack) 설정 및 배치한다
    • 파티션 할당 및 레플리케이션 동작시 특정 브로커에 몰리는 현상을 방지한다

Kafka rack-awareness