Apache Kafka 아키텍처: 초보자를 위한 종합 가이드 [2022]

게시 됨: 2021-12-23

Apache Kafka 아키텍처의 세부 사항을 살펴보기 전에 Kafka가 처음에 헤드라인을 장식하는 이유에 대해 설명하는 것이 적절합니다. 우선 Apache Kafka는 실시간 분석을 제공하기 위해 실시간 스트리밍 데이터 아키텍처에서 주로 사용합니다. 견고하고 빠르며 확장 가능하고 내결함성이 있는 Kafka의 게시-구독 메시징 시스템에는 IoT 센서 데이터 추적 또는 서비스 호출 추적과 같은 사용 사례가 있습니다.

LinkedIn, Netflix, Microsoft, Uber, Spotify, Goldman Sachs, Cisco, PayPal 및 기타 여러 회사에서 실시간 스트리밍 데이터 처리를 위해 Apache Kafka를 사용합니다. 예를 들어 Kafka가 시작된 LinkedIn은 이를 사용하여 운영 메트릭 및 활동 데이터를 추적합니다. 마찬가지로 Netflix의 경우 Apache Kafka는 메시징, 이벤트 및 스트림 처리 요구 사항에 대한 사실상의 표준입니다.

세계 최고의 대학에서 온라인 소프트웨어 개발 교육배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.

Apache Kafka의 유틸리티는 Apache Kafka 아키텍처와 기본 구성 요소를 이해하면 더 잘 이해할 수 있습니다. 그럼 카프카 아키텍처의 세부사항을 살펴보자.

목차

기본 Kafka 아키텍처 개념

다음 개념은 Apache Kafka 아키텍처를 이해하는 데 기본이 됩니다.

1. 주제

Kafka 주제는 데이터가 스트리밍되는 채널을 정의합니다. 따라서 생산자는 주제에 메시지를 게시하고 소비자는 구독하는 주제에서 메시지를 읽습니다. Kafka 클러스터 내에서 생성되는 토픽의 수에는 제한이 없으며 고유한 이름으로 각 토픽을 식별합니다.

2. 브로커

브로커는 컨테이너로 작동하고 별개의 파티션으로 여러 주제를 보유하는 Kafka 클러스터의 서버입니다. 고유한 정수 ID는 Kafka 클러스터의 브로커를 식별하며 이러한 브로커 중 하나와 연결하면 전체 클러스터와 연결됨을 의미합니다.

3. 파티션

Kafka 주제는 파티션으로 알려진 많은 부분으로 나뉩니다. 파티션은 순서대로 분리되어 여러 소비자가 특정 주제의 데이터를 병렬로 읽을 수 있도록 합니다. 토픽의 파티션은 Kafka 클러스터의 여러 서버에 분산되어 있으며 각 서버는 파티션의 로트에 대한 데이터와 요청을 관리합니다. 메시지는 브로커와 키에 도달하고 키는 특정 메시지가 이동할 파티션을 결정합니다. 따라서 동일한 키를 가진 메시지는 동일한 파티션으로 이동합니다. 키가 지정되지 않은 경우 라운드 로빈 방식에 따라 파티션이 결정됩니다.

4. 복제본

Kafka에서 복제본은 계획된 종료 또는 오류 발생 시 데이터 손실을 방지하기 위한 파티션 백업과 같습니다. 즉, 복제본은 파티션의 복사본입니다.

5. 파티션 오프셋

Kafka의 메시지 또는 레코드는 파티션에 할당되므로 각 레코드에는 파티션 내 위치를 지정하기 위한 오프셋이 제공됩니다. 따라서 레코드와 연결된 오프셋 값은 파티션 내에서 쉽게 식별하는 데 도움이 됩니다. 파티션 오프셋은 해당 특정 파티션 내에서만 의미를 가지며 레코드가 파티션 끝에 추가되기 때문에 오래된 레코드는 더 낮은 오프셋 값을 갖습니다.

6. 프로듀서

Kafka 생산자는 하나 이상의 주제에 메시지를 게시하고 Kafka 클러스터에 데이터를 보냅니다. 생산자가 Kafka 주제에 메시지를 게시하는 즉시 브로커는 메시지를 수신하여 특정 파티션에 추가합니다. 그런 다음 생산자는 메시지를 게시할 파티션을 선택할 수 있습니다.

7. 소비자 및 소비자 그룹

소비자는 Kafka 클러스터에서 메시지를 읽습니다. 소비자가 메시지를 받을 준비가 되면 브로커에서 데이터를 가져옵니다. 소비자는 소비자 그룹에 속하며 특정 그룹 내의 각 소비자는 구독하는 모든 주제의 파티션 하위 집합을 읽을 책임이 있습니다.

8. 리더와 팔로워

모든 Kafka 파티션에는 리더 역할을 하는 하나의 서버가 있습니다. 리더는 특정 파티션에 대한 모든 읽기 및 쓰기 작업을 수행합니다. 반면에 팔로워의 역할은 리더의 데이터를 복제하는 것입니다. 특정 파티션의 리더가 실패하면 팔로어 노드 중 하나가 리더의 역할을 맡습니다. 파티션에는 팔로워가 없거나 많을 수 있습니다.

다음 다이어그램은 위에서 논의한 Apache Kafka 아키텍처 구성 요소 간의 상호 관계를 간략하게 나타낸 것입니다.

원천

Apache Kafka 클러스터 아키텍처

다음은 주요 Kafka 아키텍처 구성 요소에 대한 자세한 내용입니다.

1. 카프카 브로커

Kafka 클러스터는 일반적으로 브로커라고 하는 여러 노드를 포함합니다. 브로커는 로드 균형을 유지합니다. 각 Kafka 브로커는 초당 수백 수천 개의 읽기 및 쓰기를 처리할 수 있습니다. 브로커는 특정 파티션의 리더 역할을 합니다. 리더에는 특정 파티션의 팔로워 간에 복제된 리더의 데이터와 함께 하나 이상의 팔로워가 있습니다.

팔로워는 리더의 데이터를 최신 상태로 유지해야 합니다. 리더는 차례로 자신과 동기화된 추종자를 추적합니다. 팔로어가 리더를 따라잡지 못하거나 더 이상 활성 상태가 아닌 경우 특정 리더와 연결된 동기화된 복제본 목록에서 제거됩니다. 리더가 사망하면 추종자 중에서 새로운 리더가 선출되고 ZooKeeper가 선거를 감독합니다. 브로커는 상태 비저장이므로 ZooKeeper는 클러스터 상태를 유지합니다. 클러스터의 노드는 ZooKeeper에 하트비트 메시지를 보내서 ZooKeeper에 살아 있음을 알립니다.

2. 카프카 프로듀서

Kafka 생산자는 특정 파티션의 리더 역할을 하는 브로커에게 직접 데이터를 보냅니다. Kafka 클러스터의 브로커 또는 노드는 생산자가 직접 메시지를 보내는 데 도움이 됩니다. 서버가 활성 상태인 메타데이터에 대한 요청과 주제의 파티션 리더의 실시간 상태에 응답하여 이를 수행하므로 생산자가 그에 따라 요청을 지시할 수 있습니다. 생산자는 메시지를 게시할 파티션을 결정합니다. Kafka의 메시지는 레코드 일괄 처리라고 하는 일괄 처리로 전송됩니다. 생산자는 메모리에 메시지를 수집하고 일정 기간이 경과하거나 일정 수의 메시지가 누적된 후 일괄적으로 보냅니다.

3. 카프카 소비자

Kafka 소비자는 사용하려는 파티션을 나타내는 요청을 브로커에 발행합니다. 소비자는 요청에 파티션 오프셋을 지정하고 브로커로부터 로그 조각(오프셋 위치에서 시작)을 받습니다. 로그에는 보존 기간이라고 하는 구성 가능한 기간에 대한 기록이 포함됩니다.

소비자는 로그에 데이터가 포함되어 있는 한 데이터를 다시 사용할 수도 있습니다. Kafka 소비자는 중개인이 소비자에게 데이터를 즉시 푸시하지 않는 풀 기반 접근 방식을 사용합니다. 대신, 먼저 소비자가 데이터를 사용할 준비가 되었음을 알리는 요청을 브로커에 보냅니다. 따라서 풀 기반 시스템은 소비자가 메시지에 압도되지 않도록 하고 뒤처져도 따라잡을 수 있습니다.

다음은 단순화된 Apache Kafka 아키텍처 다이어그램입니다.

원천

Apache Kafka에 대해 자세히 알아보세요.

Apache Kafka API 아키텍처

Apache Kafka에는 Streams API, Connector API, Producer API 및 Consumer API의 네 가지 주요 API가 있습니다. Apache Kafka의 기능을 향상시키는 데 각각이 어떤 역할을 하는지 살펴보겠습니다.

1. 스트림 API

Kafka의 Streams API를 사용하면 애플리케이션에서 스트림 처리 알고리즘을 사용하여 데이터를 처리할 수 있습니다. Streams API를 사용하여 애플리케이션은 하나 이상의 주제에서 입력 스트림을 사용하고 스트림 작업으로 처리하고 출력 스트림을 생성하고 결국 하나 이상의 주제로 보낼 수 있습니다. 따라서 Streams API는 입력 스트림을 출력 스트림으로 쉽게 변환할 수 있습니다.

2. 커넥터 API

Kafka의 Connector API는 Kafka 주제를 기존 데이터 시스템 또는 애플리케이션에 연결하는 재사용 가능한 생산자 및 소비자를 구축, 실행 및 관리하는 데 유용합니다. 예를 들어 관계형 데이터베이스에 대한 커넥터는 모든 업데이트를 캡처하고 Kafka 주제 내에서 변경 사항을 사용할 수 있는지 확인할 수 있습니다.

3. 생산자 API

Kafka의 Producer API를 사용하면 애플리케이션에서 Kafka 주제에 대한 레코드 스트림을 게시할 수 있습니다.

4. 소비자 API

Kafka의 소비자 API 애플리케이션이 Kafka 주제를 구독할 수 있도록 합니다. 또한 애플리케이션에서 해당 Kafka 주제에 대해 생성된 레코드 스트림을 처리할 수 있습니다.

앞으로의 길

Apache Kafka 아키텍처는 소프트웨어 개발자가 다루는 방대한 도구 및 언어 레퍼토리 중 극히 일부일 뿐입니다. 당신이 빅 데이터에 대한 성향을 가진 신진 소프트웨어 개발자라고 가정해 봅시다. 이 경우 upGrad의 소프트웨어 개발 PG 프로그램 – 빅 데이터 전문화 를 통해 목표를 향한 첫 번째 단계를 밟을 수 있습니다 .

다음은 몇 가지 주요 하이라이트가 포함된 프로그램 개요입니다.

  • 데이터 과학 및 클라우드 인프라 인증을 받은 IIT Bangalore의 경영진 PGP
  • 400시간 이상의 콘텐츠가 포함된 온라인 세션 및 라이브 강의
  • 7개 이상의 사례 연구 및 프로젝트
  • 14개 이상의 프로그래밍 언어 및 도구
  • 360도 경력 지원
  • 동료 및 업계 네트워킹

자세한 내용은 가입 코스에 대해!

Kafka는 무엇에 사용됩니까?

Apache Kafka는 주로 실시간 스트리밍 데이터 파이프라인 및 이러한 데이터 스트림에 적응하는 애플리케이션을 구축하는 데 사용됩니다. 메시징, 저장 및 스트림 처리의 조합을 통해 실시간 및 기록 데이터의 저장 및 분석을 모두 허용합니다.

Kafka는 프레임워크입니까?

Apache Kafka는 스트리밍 데이터를 저장, 읽기 및 분석하기 위한 프레임워크를 제공하는 오픈 소스 소프트웨어입니다. 오픈 소스이기 때문에 Kafka는 새로운 기능, 업데이트 및 신규 사용자 지원에 기여하는 많은 개발자 및 사용자와 함께 무료로 사용할 수 있습니다.

Kafka 스트림이 필요한 이유는 무엇입니까?

Kafka Streams는 입력 데이터와 출력 데이터가 Apache Kafka 클러스터에 저장되는 마이크로서비스 및 스트리밍 애플리케이션을 구축하기 위한 클라이언트 라이브러리입니다. 한편으로는 Apache Kafka의 서버 측 클러스터 기술의 이점을 제공합니다. 다른 한편으로는 클라이언트 측에서 표준 Scala 및 Java 애플리케이션의 작성 및 배포를 단순화합니다.