Kafka 기본개념 정리

post-thumbnail

앞으로 회사에서 Kafka를 활용하여 개발해야할 상황이 생길 것 같아, 기본 개념을 정리하고 기록하고자 작성합니다.

아파치 카프카(Apache Kafka)는 고성능, 내구성, 확장성을 갖춘 분산 스트리밍 플랫폼입니다. 카프카는 실시간 데이터 파이프라인과 스트리밍 애플리케이션을 구축하기 위해 사용됩니다. 다음 표는 카프카의 주요 개념과 각 개념의 설명을 제공합니다.

개념설명
브로커 (Broker)Kafka 클러스터의 각 서버를 브로커라고 합니다. 각 브로커는 특정 개수의 파티션을 관리하며, 브로커들이 협력하여 전체 Kafka 클러스터를 구성합니다.
토픽 (Topic)Kafka에서 데이터를 분류하는 카테고리 또는 스트림입니다. 프로듀서가 데이터를 게시하고, 컨슈머가 구독하여 데이터를 소비하는 논리적 채널입니다.
파티션 (Partition)토픽은 파티션으로 나누어집니다. 각 파티션은 순서가 있는 불변 로그의 단일 부분으로, 각 메시지는 고유한 오프셋을 가집니다. 파티션을 통해 병렬 처리와 데이터 복제를 할 수 있습니다.
오프셋 (Offset)파티션 내의 각 메시지는 고유한 식별자인 오프셋을 가집니다. 오프셋은 파티션 내에서 메시지의 순서를 나타냅니다. 컨슈머는 오프셋을 기반으로 메시지를 읽습니다.
프로듀서 (Producer)데이터를 토픽에 게시하는 역할을 합니다. 프로듀서는 데이터를 특정 토픽에 보내며, 각 메시지는 특정 파티션에 기록됩니다.
컨슈머 (Consumer)토픽으로부터 데이터를 읽는 역할을 합니다. 컨슈머는 특정 오프셋부터 메시지를 읽기 시작하며, 컨슈머 그룹을 구성하여 병렬로 데이터를 처리할 수 있습니다.
컨슈머 그룹 (Consumer Group)여러 컨슈머가 협력하여 메시지를 병렬로 처리하기 위한 그룹입니다. 각 컨슈머는 그룹 내에서 고유한 파티션을 할당받아 메시지를 처리합니다.
리더 (Leader)각 파티션은 리더와 여러 팔로워 복제본을 가집니다. 리더는 모든 읽기 및 쓰기 요청을 처리하며, 팔로워는 리더의 데이터를 복제하여 데이터 내구성을 보장합니다.
팔로워 (Follower)리더 파티션의 데이터를 복제하여 데이터의 내구성을 보장합니다. 리더가 실패할 경우, 팔로워 중 하나가 새로운 리더로 승격됩니다.
주키퍼 (Zookeeper)Kafka 클러스터의 메타데이터를 관리하고 브로커를 조정하는 데 사용됩니다. Zookeeper는 클러스터 구성, 리더 선출, 컨슈머 오프셋 저장 등의 역할을 수행합니다.
복제 (Replication)각 파티션은 여러 브로커에 복제되어 저장됩니다. 복제는 데이터의 내구성과 고가용성을 보장합니다.
스트림 (Stream)Kafka 스트림 API를 사용하여 실시간 데이터 처리 애플리케이션을 구축할 수 있습니다. 스트림은 Kafka 토픽에서 데이터를 읽고, 실시간으로 변환, 처리, 출력할 수 있는 기능을 제공합니다.

카프카의 주요 개념에 대한 설명

  1. 브로커 (Broker):

    • Kafka 클러스터의 각 서버를 말합니다.
    • 브로커들은 클러스터를 구성하고 데이터를 저장하며, 클라이언트 요청을 처리합니다.
  2. 토픽 (Topic):

    • 메시지를 분류하는 논리적인 개념입니다.
    • 프로듀서가 데이터를 게시하고 컨슈머가 데이터를 읽는 단위입니다.
  3. 파티션 (Partition):

    • 토픽은 여러 파티션으로 분할됩니다.
    • 각 파티션은 순서가 있는 불변의 메시지 시퀀스로, 병렬 처리와 데이터 분산을 가능하게 합니다.
  4. 오프셋 (Offset):

    • 파티션 내에서 각 메시지의 고유한 식별자입니다.
    • 메시지의 순서를 나타내며, 컨슈머는 이를 사용하여 메시지를 읽습니다.
  5. 프로듀서 (Producer):

    • 데이터를 Kafka 토픽에 게시하는 역할을 합니다.
    • 메시지를 특정 토픽에 보내며, 각 메시지는 특정 파티션에 기록됩니다.
  6. 컨슈머 (Consumer):

    • Kafka 토픽으로부터 데이터를 읽는 역할을 합니다.
    • 컨슈머는 오프셋을 기반으로 메시지를 읽으며, 데이터를 처리합니다.
  7. 컨슈머 그룹 (Consumer Group):

    • 여러 컨슈머가 협력하여 메시지를 병렬로 처리하는 그룹입니다.
    • 각 컨슈머는 그룹 내에서 고유한 파티션을 할당받아 메시지를 처리합니다.
  8. 리더 (Leader):

    • 각 파티션의 리더는 모든 읽기 및 쓰기 요청을 처리합니다.
    • 리더의 데이터는 팔로워에 의해 복제됩니다.
  9. 팔로워 (Follower):

    • 리더 파티션의 데이터를 복제하여 데이터 내구성을 보장합니다.
    • 리더가 실패하면 팔로워 중 하나가 새로운 리더로 승격됩니다.
  10. 주키퍼 (Zookeeper):

    • Kafka 클러스터의 메타데이터를 관리하고 브로커를 조정합니다.
    • 클러스터 구성, 리더 선출, 컨슈머 오프셋 저장 등의 역할을 수행합니다.
  11. 복제 (Replication):

    • 각 파티션은 여러 브로커에 복제됩니다.
    • 복제는 데이터의 내구성과 고가용성을 보장합니다.
  12. 스트림 (Stream):

    • Kafka 스트림 API를 사용하여 실시간 데이터 처리 애플리케이션을 구축할 수 있습니다.
    • 스트림은 Kafka 토픽에서 데이터를 읽고 실시간으로 변환, 처리, 출력할 수 있는 기능을 제공합니다.

이와 같은 개념들을 이해하고 활용하면 Kafka를 통해 대규모 실시간 데이터 스트리밍과 처리 시스템을 효율적으로 구축할 수 있습니다.

profile
개발자와 커뮤니케이션 안되서 개발자가 되었습니다.

0개의 댓글