2010-08-13 4 views
0

.NET 플랫폼을 MSMQ에서 ActiveMQ로 이동하는 중입니다. 하루에 3 천만 개 이상의 영구 메시지를 처리하므로 처리량과 용량이 매우 중요합니다. MSMQ 종속 응용 프로그램이 구성된 방식은 먼저 로컬/개인 큐에 쓰는 것입니다. 그런 다음 처리를 위해 해당 메시지를 각각의 원격 대기열로 라우팅하는 로컬 서비스가 있습니다. 이렇게하면 초기 대기열에 넣기/쓰기 쓰기가 빠릅니다 (예, 비동기 대기열에 넣기도 가능함). 원격 서버를 사용할 수 없으면 메시지가 손실되지 않습니다.NAS를 사용하여 VM을 사용하여 ActiveMQ를 구현하는 방법

우리는 ActiveMQ에 동일한 패러다임을 사용할 예정 이었지만 이제는 대부분의 응용 프로그램 서버에 대해 VM 저장소와 함께 VM을 사용하기로 결정했습니다. 이것은 NAS에 갈 것이기 때문에 각 메시지의 쓰기 성능을 크게 떨어 뜨립니다. 큐잉에 대한 우리의 접근 방식을 재고 할 필요가 있다고 느낍니다. 지속적이고 높은 처리량을 요구하는 ActiveMQ를 사용하는 데 가장 좋은 방법이 무엇인지 알고 싶습니다. 전용 큐 서버 (VM이 아닌)를 사용해야합니까? 하지만 이는 애플리케이션의 모든 쓰기가 네트워크를 통해 직접 진행된다는 것을 의미합니다. 고 가용성 요구 사항을 어떻게 처리합니까?

모든 의견을 환영합니다.

답변

1

ActiveMQ 인스턴스를 network of brokers에 배포 할 수 있으며 토폴로지에는 로컬 인스턴스와 원격 인스턴스가 포함될 수 있습니다. ActiveMQ의 로컬 인스턴스를 포함하는 토폴로지를 배포하여 메시지가 가능한 보낸 사람에게 가깝게 유지 된 다음 메시지가 필요에 따라 원격 ActiveMQ 인스턴스로 전달됩니다. 이 토폴로지 스타일로 모든 대상의 메시지 전달을 허용하지 않도록 네트워크 커넥터를 구성하는 것이 좋습니다. 즉, 모든 대상에 대해 메시지 전달을 공개적으로 허용하는 대신 excludedDestinations 속성을 사용하여 전달 된 메시지 수를 줄이는 것이 좋습니다.

ActiveMQ의 고 가용성에 관한 한, master/slave 구성이 정확하게 설계되었습니다. 그것은 당신의 필요에 따라 세 가지 맛이 있습니다.

희망이 있습니다.

브루스