의 성장 LMAX 아키텍처 description from Martin Fowler에서 다음 시나리오를 고려하십시오LMAX 아키텍처 - 데이터
이내가 설명하기 위해 간단한 비 LMAX 예제를 사용하는 것입니다. 신용 카드로 젤리 콩 주문을한다고 상상해보십시오. < ...>
LMAX 아키텍처에서는이 작업을 두 개로 나눕니다. 첫 번째 작업은 주문 정보를 캡처하여 이벤트 (신용 카드 유효성 확인 요청)를 신용 카드 카드 회사에 출력함으로써 완료됩니다. 비즈니스 로직 프로세서는 입력 이벤트 스트림에 신용 카드 유효성이 검증 된 이벤트를 수신 할 때까지 다른 고객을위한 이벤트를 계속 처리합니다. 해당 이벤트 을 처리하면 해당 주문에 대한 확인 작업이 수행됩니다.
그래서 지불 처리 결과가 수신 될 때까지 주문이 메모리에 보관됩니다.
이제 신용 카드 처리 단계 대신에 더 많은 시간이 걸리는 단계가 있다고 가정 해 보겠습니다. 예를 들어 인벤토리 확인을 수행해야합니다. 누군가가 물리적으로 젤리 빈의 특정 향이 있는지 확인해야합니다. 주문되었습니다. 시간이 소요될 수 있습니다.
많은 경우에 주문이 재고 상태 업데이트 이벤트를 기다리고 있기 때문에 메모리에 보유 된 데이터의 증가로 이어지지는 않을까요?
아마도 이러한 시나리오에서는 메모리에서 주문을 제거하고 출력 이벤트의 일부로 포함해야 할 수 있습니다. 외부 시스템 (인벤토리)은 주문 세부 정보가 포함 된 다른 입력 이벤트를 생성해야합니다.
이 접근법에서 볼 수있는 문제는 비즈니스 로직 프로세서의 일부로 인벤토리를 포함 할 수 없다는 것입니다.
어떻게 해결할 것인가?