Apache Kafka-소개

빅 데이터에서는 엄청난 양의 데이터가 사용됩니다. 데이터와 관련하여 두 가지 주요 과제가 있는데, 첫 번째 과제는 대량의 데이터를 수집하는 방법이고 두 번째 과제는 수집 된 데이터를 분석하는 것입니다. 이러한 문제를 극복하려면 메시징 시스템이 필요합니다.

Kafka는 분산 된 고 처리량 시스템을 위해 설계되었습니다. Kafka는보다 전통적인 메시지 브로커를 대체하는 역할을 매우 잘 수행하는 경향이 있습니다. 다른 메시징 시스템에 비해 Kafka는 더 나은 처리량, 기본 제공 파티셔닝, 복제 및 고유 한 내결함성을 제공하므로 대규모 메시지 처리 응용 프로그램에 적합합니다.

메시징 시스템이란?

메시징 시스템은 한 응용 프로그램에서 다른 응용 프로그램으로 데이터를 전송하는 역할을하므로 응용 프로그램이 데이터에 집중할 수 있지만 공유 방법에 대해서는 걱정하지 않아도됩니다. 분산 메시징은 신뢰할 수있는 메시지 대기열 개념을 기반으로합니다. 메시지는 클라이언트 응용 프로그램과 메시징 시스템간에 비동기 적으로 대기합니다. 두 가지 유형의 메시징 패턴을 사용할 수 있습니다. 하나는 포인트 투 포인트이고 다른 하나는 발행-구독 (pub-sub) 메시징 시스템입니다. 대부분의 메시징 패턴은 다음과 같습니다.pub-sub.

지점 간 메시징 시스템

지점 간 시스템에서 메시지는 대기열에 유지됩니다. 하나 이상의 소비자가 대기열의 메시지를 사용할 수 있지만 특정 메시지는 최대 한 명의 소비자 만 사용할 수 있습니다. 소비자가 큐에있는 메시지를 읽으면 해당 큐에서 사라집니다. 이 시스템의 일반적인 예는 주문 처리 시스템으로, 각 주문은 하나의 주문 프로세서에 의해 처리되지만 여러 주문 프로세서도 동시에 작동 할 수 있습니다. 다음 다이어그램은 구조를 보여줍니다.

발행-구독 메시징 시스템

발행-구독 시스템에서 메시지는 토픽에 지속됩니다. 지점 간 시스템과 달리 소비자는 하나 이상의 주제를 구독하고 해당 주제의 모든 메시지를 사용할 수 있습니다. Publish-Subscribe 시스템에서 메시지 생성자는 게시자라고하고 메시지 소비자는 구독자라고합니다. 실제 예는 스포츠, 영화, 음악 등과 같은 다양한 채널을 게시하는 Dish TV이며 누구나 자신의 채널 세트를 구독하고 구독 한 채널을 사용할 수있을 때마다받을 수 있습니다.

Kafka는 무엇입니까?

Apache Kafka는 분산 발행-구독 메시징 시스템이며 많은 양의 데이터를 처리 할 수 ​​있고 한 엔드 포인트에서 다른 엔드 포인트로 메시지를 전달할 수있는 강력한 큐입니다. Kafka는 오프라인 및 온라인 메시지 소비 모두에 적합합니다. Kafka 메시지는 디스크에 유지되며 데이터 손실을 방지하기 위해 클러스터 내에서 복제됩니다. Kafka는 ZooKeeper 동기화 서비스 위에 구축되었습니다. 실시간 스트리밍 데이터 분석을 위해 Apache Storm 및 Spark와 매우 잘 통합됩니다.

혜택

다음은 Kafka의 몇 가지 이점입니다.

  • Reliability − Kafka는 분산, 분할, 복제 및 내결함성입니다.

  • Scalability − Kafka 메시징 시스템은 다운 타임없이 쉽게 확장됩니다.

  • Durability− Kafka는 분산 커밋 로그 를 사용하므로 메시지가 가능한 한 빨리 디스크에 유지되므로 내구성이 있습니다.

  • Performance− Kafka는 메시지 게시 및 구독 모두에 대해 높은 처리량을 제공합니다. 많은 TB의 메시지가 저장 되어도 안정적인 성능을 유지합니다.

Kafka는 매우 빠르며 다운 타임이없고 데이터 손실이 전혀 없습니다.

사용 사례

Kafka는 많은 사용 사례에서 사용할 수 있습니다. 그들 중 일부는 아래에 나열되어 있습니다-

  • Metrics− Kafka는 운영 모니터링 데이터에 자주 사용됩니다. 여기에는 분산 응용 프로그램의 통계를 집계하여 운영 데이터의 중앙 집중식 피드를 생성하는 것이 포함됩니다.

  • Log Aggregation Solution − Kafka는 여러 서비스에서 로그를 수집하고 여러 소비자가 표준 형식으로 사용할 수 있도록 조직 전체에서 사용할 수 있습니다.

  • Stream Processing− Storm 및 Spark Streaming과 같은 인기있는 프레임 워크는 주제에서 데이터를 읽고, 처리하고, 처리 된 데이터를 사용자와 애플리케이션에서 사용할 수있는 새 주제에 기록합니다. Kafka의 강력한 내구성은 스트림 처리의 맥락에서도 매우 유용합니다.

Kafka 필요

Kafka는 모든 실시간 데이터 피드를 처리하기위한 통합 플랫폼입니다. Kafka는 짧은 대기 시간 메시지 전달을 지원하고 시스템 오류가있는 경우 내결함성을 보장합니다. 수많은 다양한 소비자를 처리 할 수있는 능력이 있습니다. Kafka는 매우 빠르며 초당 2 백만 번의 쓰기를 수행합니다. Kafka는 모든 데이터를 디스크에 유지하므로 기본적으로 모든 쓰기가 OS (RAM)의 페이지 캐시로 이동합니다. 이렇게하면 페이지 캐시에서 네트워크 소켓으로 데이터를 매우 효율적으로 전송할 수 있습니다.