Apache Storm 분산 메시징 시스템


Apache Storm은 실시간 데이터를 처리하며 입력은 일반적으로 메시지 대기열 시스템에서 나옵니다. 외부 분산 메시징 시스템은 실시간 계산에 필요한 입력을 제공합니다. Spout는 메시징 시스템에서 데이터를 읽고 이를 튜플로 변환한 후 Apache Storm에 공급합니다. 흥미롭게도 Apache Storm은 Nimbus와 감독자 간의 통신을 위해 내부적으로 자체 분산 메시징 시스템을 사용합니다.

분산 메시징 시스템이란 무엇인가요?

분산 메시징은 안정적인 메시지 대기열 개념을 기반으로 합니다. 메시지는 클라이언트 애플리케이션과 메시징 시스템 간에 비동기적으로 대기열에 추가됩니다. 분산 메시징 시스템은 안정성, 확장성 및 내구성이라는 이점을 제공합니다.

대부분의 메시징 패턴은 메시지 발신자를 호출하는 게시-구독 모델 (publish-subscribe 이라고 함)을 따릅니다. #🎜🎜 #Publishers, 메시지를 받고 싶은 분을 Subscribers이라고 합니다.

보낸 사람이 메시지를 게시하면 구독자는 필터링 옵션을 통해 선택한 메시지를 받을 수 있습니다. 일반적으로 필터링에는 두 가지 유형이 있습니다. 하나는

주제 기반 필터링이고 다른 하나는 콘텐츠 기반 필터링입니다.

pub-sub 모델은 메시지로만 소통할 수 있다는 점에 유의하세요. 이는 매우 느슨하게 결합된 아키텍처입니다. 발신자도 가입자가 누구인지 모릅니다. 많은 메시징 패턴을 통해 메시지 브로커는 게시된 메시지를 교환하여 많은 구독자가 적시에 액세스할 수 있습니다. 실제 예는 스포츠, 영화, 음악 등과 같은 다양한 채널을 게시하는 Dish TV입니다. 누구나 자신의 채널 세트를 구독하고 가능한 경우 구독하는 채널을 얻을 수 있습니다.

messaging_system.jpg다음 표에서는 널리 사용되는 처리량이 많은 메시징 시스템 중 일부를 설명합니다.


분산 메시징 시스템 Description Apache KafkaKafka는 LinkedIn에서 개발되었으며 나중에 하위 프로젝트가 되었습니다. 아파치의. Apache Kafka는 브로커가 활성화되고 내구성이 뛰어난 분산 게시-구독 모델을 기반으로 합니다. Kafka는 빠르고 확장 가능하며 효율적입니다. RabbitMQRabbitMQ는 강력한 오픈 소스 분산 메시징 애플리케이션입니다. 사용하기 쉽고 모든 플랫폼에서 실행됩니다. JMS(Java Message Service)JMS는 한 애플리케이션에서 다른 애플리케이션으로 메시지 생성, 읽기 및 전송을 지원하는 오픈 소스 API입니다. 프로그램이 메시지를 보냅니다. 보장된 메시징을 제공하고 게시-구독 모델을 따릅니다. ActiveMQActiveMQ 메시징 시스템은 JMS용 오픈 소스 API입니다. ZeroMQZeroMQ는 에이전트 없는 피어 메시지 처리입니다. 푸시풀, 라우터-리셀러 메시징 모드를 제공합니다. KestrelKestrel은 빠르고 안정적이며 간단한 분산 메시지 대기열입니다.

Thrift 프로토콜

Thrift는 다국어 서비스 개발 및 RPC(원격 절차 호출)를 위해 Facebook을 기반으로 구축되었습니다. 나중에 오픈 소스 Apache 프로젝트가 되었습니다. Apache Thrift는 정의된 데이터 유형 위에 새로운 데이터 유형과 서비스 구현을 쉽게 정의할 수 있는 인터페이스 정의 언어입니다.

Apache Thrift는 임베디드 시스템, 모바일 애플리케이션, 웹 애플리케이션 및 기타 여러 프로그래밍 언어를 지원하는 통신 프레임워크이기도 합니다. Apache Thrift와 관련된 주요 기능 중 일부는 모듈성, 유연성 및 고성능입니다. 또한 분산 애플리케이션에서 스트리밍, 메시징 및 RPC를 수행할 수 있습니다.

Storm은 내부 통신 및 데이터 정의를 위해 Thrift 프로토콜을 광범위하게 사용합니다. Storm 토폴로지는 Thrift Structs에 불과합니다. Storm Nimbus는 Apache Storm에서 토폴로지를 실행하는 Thrift 서비스입니다.