Storm-분산 메시징 시스템
Apache Storm은 실시간 데이터를 처리하고 입력은 일반적으로 메시지 대기열 시스템에서 제공됩니다. 외부 분산 메시징 시스템은 실시간 계산에 필요한 입력을 제공합니다. Spout는 메시징 시스템에서 데이터를 읽고이를 튜플로 변환하고 Apache Storm에 입력합니다. 흥미로운 사실은 Apache Storm이 nimbus와 감독자 간의 통신을 위해 내부적으로 자체 분산 메시징 시스템을 사용한다는 것입니다.
분산 메시징 시스템이란 무엇입니까?
분산 메시징은 신뢰할 수있는 메시지 대기열 개념을 기반으로합니다. 메시지는 클라이언트 응용 프로그램과 메시징 시스템간에 비동기식으로 대기합니다. 분산 메시징 시스템은 안정성, 확장 성 및 지속성의 이점을 제공합니다.
대부분의 메시징 패턴은 publish-subscribe 모델 (간단히 Pub-Sub) 메시지 발신자가 호출되는 위치 publishers 메시지를 받고 싶은 사람이 subscribers.
보낸 사람이 메시지를 게시하면 구독자는 필터링 옵션을 사용하여 선택한 메시지를받을 수 있습니다. 일반적으로 두 가지 유형의 필터링이 있습니다. 하나는topic-based filtering 그리고 또 하나는 content-based filtering.
pub-sub 모델은 메시지를 통해서만 통신 할 수 있습니다. 이것은 매우 느슨하게 결합 된 아키텍처입니다. 발신자조차도 구독자가 누구인지 모릅니다. 많은 메시지 패턴을 통해 메시지 브로커를 통해 많은 구독자가 적시에 액세스 할 수 있도록 게시 메시지를 교환 할 수 있습니다. 실제 예는 스포츠, 영화, 음악 등과 같은 다양한 채널을 게시하는 Dish TV이며 누구나 자신의 채널 세트를 구독하고 구독 한 채널을 사용할 수있을 때마다받을 수 있습니다.
다음 표는 인기있는 고 처리량 메시징 시스템 중 일부를 설명합니다.
분산 메시징 시스템 | 기술 |
---|---|
Apache Kafka | Kafka는 LinkedIn 회사에서 개발되었으며 나중에 Apache의 하위 프로젝트가되었습니다. Apache Kafka는 브로커 지원, 영구 분산 게시-구독 모델을 기반으로합니다. Kafka는 빠르고 확장 가능하며 매우 효율적입니다. |
RabbitMQ | RabbitMQ는 오픈 소스 분산 형 강력한 메시징 애플리케이션입니다. 사용하기 쉽고 모든 플랫폼에서 실행됩니다. |
JMS (Java Message Service) | JMS는 한 애플리케이션에서 다른 애플리케이션으로 메시지 작성, 읽기 및 전송을 지원하는 오픈 소스 API입니다. 보장 된 메시지 전달을 제공하고 게시-구독 모델을 따릅니다. |
ActiveMQ | ActiveMQ 메시징 시스템은 JMS의 오픈 소스 API입니다. |
ZeroMQ | ZeroMQ는 브로커가없는 피어-피어 메시지 처리입니다. 푸시-풀, 라우터-딜러 메시지 패턴을 제공합니다. |
황조롱이 | Kestrel은 빠르고 안정적이며 간단한 분산 메시지 대기열입니다. |
중고품 프로토콜
Thrift는 다국어 서비스 개발 및 RPC (원격 프로 시저 호출)를 위해 Facebook에서 구축되었습니다. 나중에 오픈 소스 Apache 프로젝트가되었습니다. Apache Thrift는Interface Definition Language 정의 된 데이터 유형 위에 새로운 데이터 유형 및 서비스 구현을 쉽게 정의 할 수 있습니다.
Apache Thrift는 또한 임베디드 시스템, 모바일 애플리케이션, 웹 애플리케이션 및 기타 여러 프로그래밍 언어를 지원하는 통신 프레임 워크입니다. Apache Thrift와 관련된 주요 기능 중 일부는 모듈성, 유연성 및 고성능입니다. 또한 분산 응용 프로그램에서 스트리밍, 메시징 및 RPC를 수행 할 수 있습니다.
Storm은 내부 통신 및 데이터 정의를 위해 Thrift 프로토콜을 광범위하게 사용합니다. Storm 토폴로지는 간단합니다.Thrift Structs. Apache Storm에서 토폴로지를 실행하는 Storm Nimbus는Thrift service.