Apache Kafka: 아키텍처, 개념, 기능 및 애플리케이션
게시 됨: 2021-03-09Kafka는 LinkedIn 덕분에 2011년에 출시되었습니다. 그 이후로 Fortune 500에 나열된 대부분의 회사가 현재 사용하고 있을 정도로 놀라운 성장을 목격했습니다. 대용량 스트리밍 데이터를 처리할 수 있는 확장성, 내구성 및 처리량이 높은 제품입니다. 그러나 그것이 엄청난 인기의 유일한 이유입니까? 음 ... 아니. 우리는 그것의 기능, 그것이 만들어내는 품질, 사용자에게 제공하는 용이성에 대해 시작조차 하지 않았습니다.
나중에 자세히 살펴보겠습니다. 먼저 Kafka가 무엇이며 어디에 사용되는지 이해합시다.
목차
아파치 카프카란?
Apache Kafka는 실시간 데이터를 관리하면서 높은 처리량과 짧은 대기 시간을 제공하는 것을 목표로 하는 오픈 소스 스트림 처리 소프트웨어입니다. Java 및 Scala로 작성된 Kafka는 메모리 내 마이크로서비스를 통해 내구성을 제공하고 CEP 또는 자동화 시스템이라고도 하는 복합 이벤트 스트리밍 서비스에 대한 공급 이벤트를 유지 관리하는 데 필수적인 역할을 합니다.
Uber와 같은 회사가 승객과 운전자 매칭을 관리할 수 있도록 하는 매우 다재다능하고 결함이 없는 분산 시스템입니다. 또한 LinkedIn에서 여러 실시간 서비스를 추적하는 데 도움이 되는 것 외에도 British Gas의 스마트 홈 제품에 대한 실시간 데이터 및 사전 예방적 유지 관리를 제공합니다.
실시간 분석을 제공하기 위해 실시간 스트리밍 데이터 아키텍처에 자주 사용되는 Kafka는 빠르고 견고하며 확장 가능한 게시-구독 메시징 시스템입니다. Apache Kafka는 서비스 호출이나 IoT 센서 데이터를 추적할 수 있는 뛰어난 호환성과 유연한 아키텍처로 인해 기존 MOM을 대체할 수 있습니다.
Kafka는 스트리밍 데이터의 실시간 수집, 연구, 분석 및 처리를 위해 Apache Flume/Flafka, Apache Spark Streaming, Apache Storm, HBase, Apache Flink 및 Apache Spark와 훌륭하게 작동합니다. Kafka 중개자는 또한 Hadoop 또는 Spark에서 지연 시간이 짧은 후속 보고서를 용이하게 합니다. Kafka에는 실시간 분석을 위한 효과적인 도구로 작동하는 Kafka Stream이라는 하위 프로젝트도 있습니다.
Kafka 아키텍처 및 구성 요소
Kafka는 실시간 데이터를 여러 수신자 시스템으로 스트리밍하는 데 사용됩니다. Kafka는 실시간 데이터 파이프라인을 분리하기 위한 중앙 계층으로 작동합니다. 직접 계산에서는 많이 사용되지 않습니다. 배치 데이터 분석을 위해 상당한 양의 데이터를 스트리밍하기 위해 실시간 또는 운영 데이터 기반의 고속 차선 공급 시스템과 가장 호환됩니다.
Storm, Flink, Spark 및 CEP 프레임워크는 Kafka가 실시간 분석을 수행하고 백업, 감사 등을 생성하기 위해 사용하는 몇 가지 데이터 시스템입니다. 또한 데이터 과학 크런칭, 보고 등을 위해 RDBMS 및 Cassandra, Spark 등과 같은 빅 데이터 플랫폼 또는 데이터베이스 시스템과 통합할 수 있습니다.
아래 다이어그램은 Kafka 생태계를 보여줍니다.
원천
다음은 Kafka 아키텍처 다이어그램에 표시된 Kafka 생태계의 다양한 구성 요소입니다.
1. 카프카 브로커
Kafka는 각각 "브로커"로 알려진 여러 서버로 구성된 클러스터를 에뮬레이트합니다. 클라이언트와 서버 간의 모든 통신은 고성능 TCP 프로토콜을 따릅니다. 과부하를 처리하기 위해 하나 이상의 상태 비저장 브로커로 구성됩니다. 단일 Kafka 브로커는 성능 저하 없이 매초 몇 번의 읽기 및 쓰기 작업을 관리할 수 있습니다. 그들은 ZooKeeper를 사용하여 클러스터를 유지 관리하고 브로커 리더를 선택합니다.
2. 카프카 주키퍼
위에서 언급했듯이 ZooKeeper는 Kafka 브로커 관리를 담당합니다. Kafka 생태계에서 브로커가 새로 추가되거나 실패하면 ZooKeeper를 통해 생산자 또는 소비자에게 통지됩니다.
3. 카프카 프로듀서
그들은 브로커에게 데이터를 보낼 책임이 있습니다. 생산자는 메시지 수신을 확인하기 위해 브로커에 의존하지 않습니다. 대신 브로커가 그에 따라 메시지를 처리하고 보낼 수 있는 정도를 결정합니다.
4. 카프카 소비자
파티션 오프셋에 의해 소비된 메시지 수의 기록을 유지하는 것은 Kafka 소비자의 책임입니다. 메시지 확인은 메시지가 소비되기 전에 전송되었음을 나타냅니다. 브로커에 소비자에게 보낼 준비가 된 바이트 버퍼가 있는지 확인하기 위해 소비자는 비동기 풀 요청을 시작합니다. ZooKeeper는 메시지 건너뛰기 또는 되감기의 오프셋 값을 유지하는 역할을 합니다.
Kafka의 메커니즘은 분산 시스템의 응용 프로그램 간에 메시지를 보내는 것과 관련됩니다. Kafka는 구독 시 다양한 스트리밍 애플리케이션에 존재하는 데이터를 게시하는 커밋 로그를 사용합니다. 발신자는 Kafka에 메시지를 보내고 수신자는 Kafka가 배포한 스트림에서 메시지를 받습니다.
메시지는 주제로 조합됩니다. Kafka의 효과적인 심의입니다. 주어진 주제는 특정 유형 또는 분류를 기반으로 조직화된 데이터 증기를 나타냅니다. 생산자는 주제를 기반으로 소비자가 읽을 수 있는 메시지를 작성합니다.
모든 주제에는 고유한 이름이 지정됩니다. 보낸 사람이 보낸 특정 주제의 모든 메시지는 해당 주제에 동조하는 모든 사용자가 받습니다. 게시된 주제의 데이터는 업데이트하거나 수정할 수 없습니다.
카프카의 특징
- Kafka는 구독할 수 있는 영구 커밋 로그로 구성되어 있으며 이후에 여러 시스템이나 실시간 애플리케이션에 데이터를 게시할 수 있습니다.
- 애플리케이션이 데이터가 수신될 때 이를 제어할 수 있는 기능을 제공합니다. Apache Kafka의 Streams API는 즉석 배치 데이터 처리를 용이하게 하는 강력하고 가벼운 라이브러리입니다.
- 워크플로를 규제하고 유지 관리 요구 사항을 크게 줄이는 Java 응용 프로그램입니다.
- Kafka는 여러 데이터 시스템을 통해 데이터 배포를 가능하게 하여 데이터를 여러 노드에 배포하는 "진실 저장소"의 기능을 합니다.
- Kafka의 커밋 로그는 안정적인 스토리지 시스템이 됩니다. Kafka는 데이터 손실을 방지하는 데 도움이 되는 파티션의 복제본/백업을 생성합니다(올바른 구성은 데이터 손실을 0으로 만들 수 있음). 이것은 또한 서버 장애를 방지하고 Kafka의 내구성을 향상시킵니다.
- Kafka의 주제에는 수천 개의 파티션이 있어 임의의 양의 데이터와 과부하를 처리할 수 있습니다.
- Kafka는 OS 커널에 의존하여 빠른 속도로 데이터를 이동합니다. 이러한 정보 클러스터는 종단 간 암호화되어 생산자에서 파일 시스템에서 최종 소비자로 이어집니다.
- Kafka의 일괄 처리는 데이터 압축 효율성을 높이고 I/O 대기 시간을 줄입니다.
카프카의 응용
매일 많은 양의 데이터를 처리하는 많은 회사에서 Kafka를 사용합니다.
- LinkedIn은 Kafka를 사용하여 사용자 활동 및 성과 지표를 추적합니다. Twitter는 이를 Storm과 결합하여 스트림 처리 프레임워크를 활성화합니다.
- Square는 Kafka를 사용하여 모든 시스템 이벤트를 다른 Square 데이터 센터로 쉽게 이동할 수 있습니다. 여기에는 로그, 사용자 지정 이벤트 및 측정항목이 포함됩니다.
- Kafka의 이점을 활용하는 다른 인기 있는 회사에는 Netflix, Spotify, Uber, Tumblr, CloudFlare 및 PayPal이 있습니다.
Apache Kafka를 배워야 하는 이유
Kafka는 실시간 데이터를 효율적으로 처리, 추적 및 모니터링할 수 있는 우수한 이벤트 스트리밍 플랫폼 입니다. 내결함성 및 확장 가능한 아키텍처를 통해 지연 시간이 짧은 데이터 통합을 통해 스트리밍 이벤트의 높은 처리량을 얻을 수 있습니다 . Kafka는 데이터의 "가치 창출 시간"을 크게 단축합니다.
데이터 주변의 "로그"를 제거하여 조직에 정보를 생성하는 기본 시스템으로 작동합니다. 이를 통해 데이터 과학자와 전문가는 언제든지 정보에 쉽게 액세스할 수 있습니다.
이러한 이유로 많은 상위 기업이 선택하는 최고의 스트리밍 플랫폼이므로 Apache Kafka 자격을 갖춘 후보자가 많이 찾는 것입니다.
Kafka, 빅 데이터에 대해 더 자세히 알고 싶다면 7개 이상의 사례 연구 및 프로젝트와 세계적 수준의 교수진 및 업계 전문가의 멘토링을 제공 하는 upGrad의 빅 데이터 소프트웨어 개발 전문 PG 디플로마를 확인하십시오. 13개월 프로그램은 14개 프로그래밍 언어를 다루며 데이터 처리, 맵리듀스, 데이터 웨어하우징, 실시간 처리, 클라우드에서 빅 데이터 처리 등의 기술을 가르칩니다.
upGrad에서 다른 소프트웨어 엔지니어링 과정을 확인하십시오.