우리는 ActiveMQ vs RabbitMQ vs ZeroMQ의 장단점에 대한 경험을 듣고 싶습니다. 다른 흥미로운 메시지 대기열에 대한 정보도 환영합니다.
우리는 ActiveMQ vs RabbitMQ vs ZeroMQ의 장단점에 대한 경험을 듣고 싶습니다. 다른 흥미로운 메시지 대기열에 대한 정보도 환영합니다.
답변:
편집 : 내 초기 답변은 AMQP에 중점을 두었습니다. 나는 주제에 대한 더 넓은 견해를 제공하기 위해 다시 작성하기로 결정했습니다.
이 3 가지 메시징 기술은 분산 시스템 구축에 대해 서로 다른 접근 방식을 가지고 있습니다
RabbitMQ 는 AMQP 프로토콜의 주요 구현 중 하나입니다 (Apache Qpid와 함께). 따라서 브로커 아키텍처를 구현합니다. 즉, 클라이언트로 메시지를 보내기 전에 중앙 노드에서 메시지가 대기됩니다. 라우팅,로드 밸런싱 또는 지속적인 메시지 큐잉과 같은 고급 시나리오가 단 몇 줄의 코드로 지원되므로이 접근 방식을 통해 RabbitMQ는 사용 및 배포가 매우 쉽습니다. 그러나 중앙 노드가 대기 시간을 추가하고 메시지 엔벨로프가 상당히 크기 때문에 확장 성과 속도가 느려집니다.
ZeroMq 는 금융 분야에서 볼 수있는 것과 같은 높은 처리량 / 낮은 대기 시간 시나리오를 위해 특별히 설계된 매우 가벼운 메시징 시스템입니다. Zmq는 많은 고급 메시징 시나리오를 지원하지만 RabbitMQ와 달리 다양한 프레임 워크 (예 : 소켓 및 장치)를 결합하여 직접 구현해야합니다. Zmq는 매우 유연하지만 메시지를 보내는 것보다 복잡한 작업을 수행하기 전에 80 페이지 정도의 안내서 (Zmq를 사용하지 않더라도 분산 시스템을 작성하는 사람이라면 누구나 읽을 것을 권장합니다)를 공부해야합니다. 2 명의 동료 사이.
ActiveMQ 는 중간에 있습니다. Zmq와 마찬가지로 브로커 및 P2P 토폴로지와 함께 배포 할 수 있습니다. RabbitMQ와 마찬가지로 고급 시나리오를 구현하는 것이 쉽지만 일반적으로 원시 성능을 희생합니다. 메시징의 스위스 군용 칼입니다 :-).
마지막으로 3 가지 제품 모두 :
왜 Sparrow , Starling , Kestrel , Amazon SQS , Beanstalkd , Kafka , IronMQ를 그리워 했습니까?
메시지 대기열 서버
메시지 대기열 서버는 Erlang (RabbitMQ), C (beanstalkd), Ruby (Starling 또는 Sparrow), Scala (Kestrel, Kafka) 또는 Java (ActiveMQ) 등 다양한 언어로 제공됩니다. 간단한 개요는 여기 에서 찾을 수 있습니다
참새
찌르레기
황조롱이
RabbitMQ
아파치 액티브 MQ
콩 줄기
아마존 SQS
카프카
ZMQ
EagleMQ
IronMQ
이것이 도움이 되길 바랍니다. 출처
알고 싶은 것보다 더 많은 정보 :
http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes
바울이 댓글에 추가 한 내용을 자세히 설명하면됩니다. 위에서 언급 한 문서는 2010 년 이후, 그래서 소금 한 스푼 읽을 죽었어요. 3 년 동안 많은 것들이 바뀌 었습니다.
실제로 사용 사례에 따라 다릅니다.
0MQ와 ActiveMQ 또는 RabbitMQ를 비교하는 것은 공평하지 않습니다. ActiveMQ 및 RabbitMQ는 설치 및 관리가 필요한 메시징 시스템입니다. 이들은 ZeroMQ보다 훨씬 많은 기능을 제공합니다. 그들은 실제 영구 대기열, 트랜잭션 지원 등을 가지고 있습니다.
ZeroMQ는 경량 메시지 지향 소켓 구현입니다. 또한 프로세스 내 비동기 프로그래밍에도 적합합니다. ZeroMQ를 통해 "엔터프라이즈 메시징 시스템"을 실행할 수는 있지만 스스로 구현해야합니다.
그래서:
ActiveMQ, RabbitMQ, Websphere MQ 및 MSMQ는 "Enterprise Message Queues"입니다
ZeroMQ는 메시지 지향 IPC 라이브러리입니다.
RabbitMQ와 ActiveMQ는 여기에 비교되어 있습니다 . 기본적으로 ActiveMQ는 메시지 전달을 보장하도록 구성되어 덜 안정적인 메시징 시스템에 비해 느리게 인상을 줄 수 있습니다. 다른 메시징 시스템과 같은 성능을 원할 경우 언제든지 성능 구성을 변경할 수 있습니다. 최소한 그 옵션이 있습니다. 확장 성, 성능 및 고 가용성 구성에 대한 포럼 및 ActiveMQ FAQ에 대한 많은 정보가 있습니다. 또한 STOMP와 같은 다른 와이어 형식과 함께 사양이 완성되면 ActiveMQ는 AMQP 1.0을 지원합니다.
ActiveMQ의 또 다른 장점은 Apache 프로젝트이므로 개발자 커뮤니티에는 다양성이 있으며 한 회사와 관련이 없습니다.
ActiveMQ 또는 RabbitMQ를 사용하지 않았지만 ZeroMQ를 사용했습니다. ZeroMQ와 ActiveMQ 등의 큰 차이점은 0MQ는 브로커가 없으며 메시지 전달에 대한 신뢰도가 없다는 것입니다. 많은 메시징 패턴, 스포츠, 플랫폼 및 언어 바인딩을 지원하는 사용하기 쉬운 메시징 API를 찾고 있다면 0MQ를 살펴볼 가치가 있습니다. 완전한 메시징 플랫폼을 찾고 있다면 0MQ가 청구서에 맞지 않을 수 있습니다.
0MQ 사용 방법에 대한 예는 www.zeromq.org/docs:cookbook 을 참조하십시오 .
전기 사용량 모니터링 애플리케이션에서 메시지 전달에 0MQ를 성공적으로 사용했습니다 ( http://rwscott.co.uk/2010/06/14/currentcost-envi-cc128-part-1/ 참조 ).
zeroMQ를 사용하고 있습니다. 간단한 메시지 전달 시스템을 원했고 브로커의 복잡성이 필요하지 않습니다. 또한 거대한 Java 지향 엔터프라이즈 시스템을 원하지 않습니다.
빠르고 간단한 시스템을 원하고 여러 언어를 지원해야하는 경우 (C 및 .net 사용) 0MQ를 참조하십시오.
ActiveMQ에 대해서는 2 센트 만 추가 할 수 있지만 이것이 가장 인기있는 것 중 하나이므로
쓰려는 언어가 중요 할 수 있습니다. ActiveMQ에는 대부분 클라이언트가 있지만 C # 구현은 Java 라이브러리와 비교할 때 완전하지 않습니다.
이것은 일부 기본 기능에 결함이 있음을 의미합니다 (일부 경우 실패, 재전송 지원 없음). .NET이 프로젝트에 중요한 것은 아니기 때문에 개발 속도가 느리고 릴리스 계획이없는 것 같습니다. 트렁크는 종종 고장이 나기 때문에 이것을 고려한다면, 계속 진행하고 싶다면 프로젝트에 기여하는 것을 고려할 수 있습니다.
그런 다음 ActiveMQ 자체에는 많은 멋진 기능이 있지만 매우 이상한 문제가 있습니다. 안정성을 위해 Fuse (Progress) 버전의 activemq를 사용하지만 몇 가지 이상한 "버그"가 있습니다.
당신이 그 문제와 함께 살 수 있다면 그것은 아주 좋은 제품입니다.
A) .NET을 사용할 때 적극적으로 참여하는 것을 두려워하지 않습니다
.B) java에서 개발 ;-)
http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/에 제공된 RabbitMQ ActiveMQ 및 QPID의 기능과 성능을 비교합니다.
개인적으로 위의 세 가지를 모두 시도했습니다. RabbitMQ는 나에게 가장 현명한 성능이지만 장애 조치 및 복구 옵션이 없습니다. ActiveMQ는 가장 많은 기능을 가지고 있지만 속도가 느립니다.
업데이트 : HornetQ 는 당신이 볼 수있는 옵션이며 JMS 기반 솔루션을 찾고 있다면 ActiveMQ보다 더 나은 옵션 인 JMS 불만입니다.
AMQP, Qpid 및 ZeroMQ에 대한 초기 경험에 대해 썼습니다 : http://ron.shoutboot.com/2010/09/25/is-ampq-for-you/
내 주관적인 의견은 AMQP가 지속적 메시징 기능이 정말로 필요하고 브로커가 병목 현상을 일으킬 염려가 없다면 괜찮다는 것입니다. 또한 C ++ 클라이언트는 현재 AMQP에 대해 누락되었지만 (Qpid는 내 지원을 얻지 못했지만 ActiveMQ 클라이언트에 대해서는 확실하지 않음) 진행중인 작업 일 수 있습니다. 그렇지 않으면 ZeroMQ가 될 수 있습니다.
ActiveMQ만큼 많은 튜닝 구성을 가진 응용 프로그램은 거의 없습니다. ActiveMQ를 두드러지게하는 일부 기능은 다음과 같습니다.
구성 가능한 프리 페치 크기. 구성 가능한 스레딩. 구성 가능한 장애 조치. 생산자에게 구성 가능한 관리 알림. ... 세부 사항 :
Abie, 모두 유스 케이스에 달려 있습니다. 사용 사례에 대한 다른 사람의 계정에 의존하기보다는 사용 사례를 rabbitmq-discuss 목록에 자유롭게 게시하십시오. 트위터에 물어 보면 응답도받을 수 있습니다. 소원, 알렉시스
이미 알고 있듯이 ZeroMQ, 즉 0MQ에 관해서는 초 당 가장 많은 메시지를 얻는 메시지입니다 (마지막으로 확인했을 때 참조 서버에서 초당 약 4 백만 명 이었지만). 문서가 존재하지 않습니다. 서버를 사용하는 방법은 물론 서버를 시작하는 방법을 찾는 데 어려움을 겪을 것입니다. 나는 이것이 아직 아무도 0MQ에 기여하지 않은 이유라고 생각합니다.
즐기세요!
상용 구현에 관심이 있다면 내 채널 에서 너바나를 살펴보십시오 .
너바나는 금융 서비스 산업에서 대규모의 저 지연 거래 및 가격 분배 플랫폼에 많이 사용됩니다.
기업, 웹 및 모바일 도메인에서 광범위한 클라이언트 프로그래밍 언어가 지원됩니다.
투명한 HA 또는로드 밸런싱이 중요한 경우 클러스터링 기능은 매우 발전되어 있습니다.
열반은 개발 목적으로 무료로 다운로드 할 수 있습니다.