5

는 난 관심 분야 :Corosync, ZeroMQ 및 Spread의 CPG는 메시징과 어떻게 비교됩니까?

  • 성능
    • 대기 시간
    • 처리량
    • 자원 사용 (CPU, 메모리, ...)
  • 고 가용성
    • 단일 poi 없음 실패
  • 의 NT는 적극적인 개발을
    • 전송 옵션
    • 라우팅 옵션
  • 안정성을
  • 널리을
  • 커뮤니티
    • 특징
    • 도움이 메일 링리스트, 포럼, IRC 채널, ... 내 현재 코드베이스
    • 둘점과의 통합
  • 용이성 사용 어쩌면
  • 당신은 내가

을 생략 생각 다른 것 나는 그들에 관해 읽었지 만 나는 좋은 비교를 찾을 수 없었다. 특히 성능 벤치 마크를 비교하는 데 관심이 있습니다. (어쩌면 내가 혼자서해야한다!)

답변

6

글쎄, 나는 다른 두 가지를 사용하지 않았지만 내 경험을 ZeroMQ과 공유 할 수있다. 내 의견으로는, 그것은 당신 모두에 탁월합니다.

속도 및 그것은 TCP만큼 빨리

는 CPU 나 많은 메모리를 사용하지 않습니다. 그것은 땀없이 아주 빨리 많은 메시지를 보낼 수 있습니다. 메모리가 부족하기 전에 네트워크 채널을 포화시킬 것입니다 (CPU를 최대로 늘릴 수 있을지는 의심 스럽습니다). 어딘가에 RabbitMQ과의 비교가 있었고 ZMQ는 2의 요소보다 뛰어났습니다. 웹에서 읽은 것에서는 고속 거래에 사용 중입니다.

RabbitMQ도 매우 좋은 도구입니다. 그것에서보세요 - 당신이 다음 단일 장애 지점이 없다, 제대로 응용 프로그램을 설계 할 경우

SPOF

을 찾고있는 것에 대해 잘 맞는 수 있습니다. 2 개의 소켓을 다른 소켓에 연결하는 것은 매우 쉽습니다. 그래서 그들 중 하나가 실패하면 - 다른 하나는 작업을 처리 할 수 ​​있습니다. 길을 따라 도울 수있는 최고점과 같은 것들이 있습니다. SPOF없이 앱을 디자인하는 방법을 알아 보려면 ZeroMQ Guide을 읽어보세요.

수송선과 (내가 올바르게 이해 해요 경우) 전송 옵션에 대해서는

라우팅 - 당신의 프로토콜을 정의 할 몫이다. ZeroMQ는 기본적으로이 데이터 블록을 다른 쪽 끝으로 전달할 것이라고 약속합니다. JSON, 프로토콜 버퍼, 모스 코드를 원하는대로 사용하십시오.

AMQP와 같은 기본 제공 라우팅이 없습니다. 다시 말하지만 ZeroMQ 소켓이 어느 소켓에 연결되는지는 사용자가 지정하는 것이지만 매우 쉽습니다.

내가 몇 달 (Python을 사용)을 위해 함께 개발했습니다과 안정성을 가진 하나의 문제를 발견하지 않았습니다

안정성. 비록 내가 잘못된 방법을 사용하려고 할 때에도, 그렇게하지 말라고 말하는 멋진 오류가 발생합니다. 일부 서비스를 다시 시작/종료하고 다시 가져 오더라도 문제가 발생하지 않습니다. 나는 매우 안정적인 소프트웨어라고 말할 수있다.

메모 : 항상 최신 버전을 사용하십시오. 2.1 버전은 안정성이 매우 중요하므로 많은 안정성 문제가 해결됩니다.. 20 개 이상의 언어, 활성 메일 링리스트, 아주 좋은 문서, 자주 릴리스에 대한

커뮤니티

바인딩. 다른 건 없니?

통합

그것은 (프레임 워크의 경우와는 달리) 당신이 응용 프로그램을 설계하는 당신에게 달려 라이브러리로 설계 되었기 때문에 방해가되지 않는 것이 거의 의미합니다. 그것은 훨씬 더 강력하고 사용하기 쉬운 일반 TCP 소켓과 같은 느낌입니다. 메시지는 첫 번째 128 바이트뿐만 아니라 나중에 정규 소켓의 경우처럼 전체적으로 전달됩니다.

둘점

이 몇 가지 있지만, 그들은 모두 가이드에 설명되어 있습니다. (예를 들어, (SUB)를 연결할 때 PUB 소켓의 처음 몇 개의 메시지가 누락 될 수 있습니다. 이에 대한 설명과이를 처리하는 방법에 대한 설명이 나와 있습니다). 잘 문서화 내 방식으로 서 있지 않는, 잘 쓰여진, 안정 -

전체

나는 소프트웨어의 최적 설계 조각이 하나 찾을 수 있습니다.

나는 the guide 종단 간을 읽는 것이 좋습니다. 그것은 많은 언어 (C++ 포함)에서 잘 작성된 예제이며, 많은 경우와 문제점을 설명합니다.

+0

전송 옵션을 사용하면 TCP, UDP 등의 하위 프로토콜 옵션을 사용할 수 있습니다. 그리고 철저한 답변을 주셔서 감사합니다 :) – Ebrahim

관련 문제