고성능 스레드 간 메시징 라이브러리.
URL: https://lmax-exchange.github.io/disruptor/
고성능 스레드 간 메시징 라이브러리
version 4.0.0-SNAPSHOT
Disruptor가 해결하려는 문제가 무엇인지 이해하고, 이 동시성 프레임워크가 왜 이렇게 빠른지 감을 잡으려면 기술 문서(Technical Paper)를 읽어보세요. 자세한 성능 결과도 포함되어 있습니다.
그리고 이제 스폰서의 한마디…
LMAX가 다시 채용 중입니다. 훌륭한 팀과 놀라운 기술과 함께 일하는 데 관심이 있고, 여기에 무언가를 더할 수 있다고 생각한다면 채용 페이지를 확인해 주세요.
LMAX의 목표는 세계에서 가장 빠른 거래 플랫폼이 되는 것입니다. 이를 달성하기 위해서는 Java 플랫폼에서 초저지연(low-latency)과 고처리량(high-throughput)을 실현할 수 있는 특별한 무언가가 필요했습니다. 성능 테스트 결과, 시스템의 단계(stage) 사이에서 데이터를 전달하는 데 큐(queues)를 사용하면 지연이 추가되는 것으로 나타났고, 우리는 이 영역을 최적화하는 데 집중했습니다.
Disruptor는 우리의 연구와 테스트의 결과물입니다. CPU 수준의 캐시 미스(cache misses)와 커널 중재(kernel arbitration)를 필요로 하는 락(locks)이 모두 매우 큰 비용을 초래한다는 것을 발견했고, 그래서 실행되는 하드웨어에 대해 “기계적 공감(mechanical sympathy)”을 갖고, 락 프리(lock-free)인 프레임워크를 만들었습니다.
이것은 특수 목적의 솔루션이 아니며, 금융 애플리케이션에서만 동작하도록 설계된 것도 아닙니다. Disruptor는 동시성 프로그래밍에서 어려운 문제를 해결하기 위한 범용 메커니즘입니다.
Disruptor는 더 전통적인 접근 방식과는 다른 방식으로 동작하므로, 익숙한 방식과는 조금 다르게 사용하게 됩니다. 예를 들어, 시스템에 이 패턴을 적용하는 것이 모든 큐를 마법의 링 버퍼(magic ring buffer)로 단순히 교체하는 것만큼 간단하지는 않습니다. 우리는 다음을 제공하고 있습니다:
안내를 위한 사용자 가이드(User Guide),
동작 방식의 개요를 제공하는 점점 늘어나는 블로그와 글,
예상하듯 더 자세한 내용을 다루는 기술 문서(technical paper),
그리고 Disruptor를 어떻게 사용하는지 예시를 보여주는 성능 테스트.
건조한 문서나 내용이 빽빽한 웹사이트 대신, 실제 사람이 직접 설명해 주는 것을 선호한다면 QCon San Francisco에서 Mike와 Martin이 진행한 발표를 볼 수 있습니다. 관련된 사람들과 가볍게 이야기하고 싶다면 토론 그룹(Discussion Group)으로 오세요. Martin Thompson은 자신의 Mechanical Sympathy 블로그에서 성능에 대해 가끔 수다를 떨기도 합니다. Martin Fowler도 LMAX에서 Disruptor를 적용한 사례에 대해 훌륭한 리뷰를 작성했습니다.
빠릅니다. 아주 빠릅니다.

그림 1. Disruptor와 ArrayBlockingQueue를 비교한 지연 시간 히스토그램
참고로, 이는 선형(linear) 스케일이 아니라 로그-로그(log-log) 스케일입니다. 비교를 선형 스케일로 그리려고 했다면, 금세 공간이 부족했을 겁니다. 이 결과를 만든 테스트의 성능 결과와, 그 외 처리량(throughput) 테스트 결과도 보유하고 있습니다.
사용자 가이드(User Guide)를 읽어보세요.
API 문서를 읽어보세요.
자주 묻는 질문(FAQ)을 확인해 보세요.
Disruptor 개발에 참여하고 싶나요? 개발자 가이드(Developer Guide)를 읽어보세요.
Mechanical Sympathy (Martin Thompson)
Bad Concurrency (Michael Barker)
변경 이력은 여기에서 확인할 수 있습니다.
Version 4.0.0-SNAPSHOT
마지막 업데이트 2025-04-02 13:02:59 UTC