2013-03-29 6 views
2

LMAX Disruptor을 이해하면 올바르게 작동하는 경우 초당 2,000 만 개의 메시지 처리량을 허용하는 무서운 속도의 무서운 동시 Java 코드로 가득 찬 JAR이라는 점입니다.LMAX Disruptor는 일반적인 메시지 브로커 문제를 어떻게 해결합니까?

우리는 현재 우리가 필요로하는 것보다 느린 ActiveMQ 인스턴스를 초당 400 개의 메시지로 가지고 있습니다.

  • 어떻게 한 출판사를 가지고 여러 (경쟁) 소비자
  • 어떻게이 LMAX 매장/집의 메시지 : 우리가 LMAX를 사용하는 우리의 코드를 리팩토링에서 혜택을하지만, 다음과 같은 문제가있는 것인지 궁금하네요 ? 기억에?
  • 장애 조치 - LMAX에 장애 조치 프로토콜/메커니즘이 있습니다.
  • 디스크 I/O - LMAX는 사용되지 않은 메시지를 디스크에 저장하고 나중에 복구 할 수 있습니까?

그리고이 모든 것들을 완전히 기반으로하고 LMAX Disruptors의 사용을 완전히 오해 한 것처럼 보이면 누군가가 사용시기에 대한 구체적인 예를 제공 할 수 있습니까? 미리 감사드립니다!

답변

7

Disruptor는 프로세스 간 또는 서버 간 메시징 시스템을 직접 대체하지 않습니다. 내부 프로세스 간 스레드 메시징 시스템으로 설계되었습니다. 일반적으로 대기열 사이에있는 스레드 처리 사이의 종속성 그래프를 바꾸는 것이 유용하다고 생각하십시오. 따라서 스레드간에 파이프 라인이나 멀티 캐스트 패턴을 사용하는 디자인에 유용합니다. ActiveMQ는 다른 용도로 사용됩니다.

Disruptor 기반 시스템 내의 스레드는 Disruptor를 통해 이벤트를 전달하여 통신하는 오래 살아있는 액터와 같습니다.

좋은 예제는 소스 코드에서 제공되는 성능 테스트를 참조하십시오.

+0

감사합니다. @ Martins Thompson (+1). 각 스레드가 고유 한 EIP (Enterprise Integration Pattern)처럼 작동하도록하는 아이디어가 있으며 Disruptor는 각 EIP 스레드 간의 초고속 메시징 시스템입니다. –

+1

Disruptor는 스마트 배치 작업을 적용 할 수 있도록 IO 앞에 배치하는 데 유용하므로 lock-free 방식으로 값 비싼 IO 작업 비용을 상환합니다. 나는 거의 가치가없는 추가 비용 때문에 대부분의 "엔터프라이즈"소프트웨어에 대한 팬이 아닙니다. 개별 스레드는 IO를 처리 할 수 ​​있지만 비즈니스 논리를 수행 할 수도 있습니다. Mike와 저는 QCon에서 몇 년 전에 이것을 이야기했습니다. http://www.infoq.com/presentations/LMAX –

관련 문제