[infra] kafka 의 기초 개념

orca·2024년 10월 11일

CS

목록 보기
32/46
post-thumbnail

카프카는 분산형 이벤트 스트리밍 플랫폼 입니다. 핵심 개념 중 하나는 파티션으로, 토픽을 여러 파티션으로 나누어 메시지 병렬 처리를 가능하게 합니다. 또한 클러스터 내 부하를 효율적으로 분산시킵니다. 카프카는 높은 throughput과 낮은 latency를 제공하며, scalability와 durability 가 높은 분산 시스템에 가장 적합한 이벤트 스트리밍 플랫폼입니다.

kafka

producer

  • kafka 로 메세지를 보내는 역할을 하는 클라이언트

consumer

  • kafka 에서 메세지를 꺼내가는 역할을 하는 클라이언트
  • ex) fastAPI 애플리케이션

topic

  • 데이터를 구분하는 카테고리 또는 채널
  • ex) 프로듀서가 데이터를 보낼 때 토픽에 데이터를 게시함. 컨슈머는 관심 있는 토픽의 데이터를 읽음

partition

  • 토픽을 나누는 논리적 단위. 토픽은 여러 파티션으로 나뉨
  • 나뉜 파티션 수만큼 컨슈머를 연결할 수 있음
  • 파티션은 토픽을 병렬로 처리할 수 있게 해주며, 클러스터의 부하를 분산시킴
  • ex) 토픽이 3개의 파티션으로 구성되면, 각 파티션에 프로듀서가 데이터를 순차적으로 기록함. 컨슈머는 각 파티션의 데이터를 병렬로 처리할 수 있음

offset

  • 각 파티션에 저장된 메시지는 고유한 오프셋을 부여받음
  • 오프셋은 파티션 단위로 관리되며, 다른 파티션의 오프셋과는 무관함
  • ex) 파티션 0의 첫 번째 메시지는 오프셋 0, 두 번째 메시지는 오프셋 1, 세 번째 메시지는 오프셋 2

broker

  • kafka 애플리케이션이 설치된 노드
  • kafka 클러스터에 속함

cluster

  • 여러 kafka broker 의 집합
  • kafka 는 일반적으로 다수의 브로커로 구성된 클러스터에서 실행됨

kafka 의 주요 특징

High Throughput, Low Latency

  • 분산 시스템에서의 상황을 가정하기 위해 Kafka와 유사하게 복제 동작하는 RabbitMQ의 미러링 사용

  • RabbitMQ (미러링 적용)

    • RabbitMQ는 미러링으로 데이터를 여러 노드에 복제함
    • Throughput : 약 38 MB/s로, 가장 낮은 처리량
    • Latency : 전체적으로 가장 낮은 지연 시간을 기록하며, p99.9에서도 약 1 ms 내외로 매우 짧은 지연 시간을 유지함
  • Kafka

    • Throughput : 약 600 MB/s로 가장 높은 처리량
    • Latency : 지연 시간이 낮고, p99.9에서도 약 10 ms 이하를 유지함
  • 처리량과 응답 속도를 함께 비교했을 때 Kafka 가 독보적임

    • Kafka는 분산 시스템을 위해 설계되어 더 높은 처리량과 복제 효율성을 제공함
    • RabbitMQ는 기본적인 메시지 브로커로서 설계되어 미러링을 사용 시 성능 저하가 발생함

scalability

  • kafka 는 쉽게 확장 가능하도록 설계됨
  • 브로커를 쉽게 추가하거나 (scale out) 쉽게 제거할 수 있음 (scale in)
  • kafka-reassign-partitions.sh : 전체 브로커에 토픽의 파티션을 고르게 부하 분산하기 위해, 모든 브로커에 균등하게 파티션을 재분배할 수 있음

Durability

  • 로그 파일 디스크 I/O
    • kafka 에서는 각 파티션에 대해 별도의 로그 파일을 생성하고, 그 안에 메시지를 저장함
    • 모든 메시지는 순차적으로 로그 파일에 기록됨
  • replication
    • 각 파티션은 리더 브로커와 팔로워 브로커를 가짐
    • 리더 브로커가 데이터를 받아들이면, 해당 데이터는 팔로워 브로커로 복제됨
      ➡️ 데이터의 복제본이 여러 브로커에 저장되어 장애 시 데이터 손실을 방지

참고

kafka-fastest-messaging-system
cluster-elasticity

0개의 댓글