2010-12-03 3 views
5

저는 미들웨어로 jms 및 일부 메시징 소프트웨어 (ActiveMQ쪽으로 기울어 져 있습니다)를 사용할 시스템을 설계하고 있습니다. 100 명 미만의 상담원이 있으며, 각 상담원은 대기열을 통해 매일 최대 5,000 개의 메시지를 전송합니다.MoM 및 대용량 메시지에 대한 조언

메시지 당 페이로드는 약 100 바이트입니다. 나는 메시지의 대략 반 (2500)이 자정 무렵에 클러스터 될 것으로 예상하고 나머지 절반은 하루 동안 어느 정도 균등하게 분배 될 것으로 예상한다. 위의 수치는 모두 내가 예상 한 것의 최고급에 있습니다. (예, 아마도 저 성명서를 가까운 장래에 먹을 것입니다).

페이로드가 상당히 커지는 한 가지 유형의 메시지가 있습니다 (예 : 5-50MB 범위). 이 메시지는 각 상담원으로부터 하루에 몇 번씩 만 전송됩니다.

내 질문은 : 이 나에게 어떤 방식으로 문제를 일으킬 수 또는 메시지 큐를 통해 더 많은 양의 데이터를 전송하는 완벽하게 정상입니까?

예를 들어, 큰 메시지를 처리하는 동안 처리량이 줄어들지 만 (작은 메시지가 대기열에 올라) 있습니까?

또는 메시지 대기열이 더 큰 메시지를 막을 수 있습니까?

아니면 다른 방법으로 접근해야합니까? 예를 들어 jms를 통해 데이터의 위치를 ​​보내고 최종 수신자가 다른 곳에서 데이터를 가져 오도록할까요? (커플 링, 보안 문제 및 추가 구성으로 인해 특별한 경우가 없기를 바랬습니다).

저는 jms의 실질적인 세부 사항에 완전히 익숙하지 않으므로 자세한 내용을 제공해야하는지 알려주세요.

편집 됨 : 나는 Andres 정말 대단한 답변을 받았다. 조언과 의견을 계속 게시하면 모든 것을 유용하게 유지할 것입니다.

답변

2

크기가 큰 메시지는 분명히 영향을 미치지 만 여기에 언급 된 크기 (5-50MB)는 적절한 JMS 서버에서 관리 할 수 ​​있어야합니다.

그러나 다음을 고려하십시오. 특정 메시지를 처리하는 동안 전체 메시지가 메모리로 읽혀집니다. 따라서 100 명의 상담원이 각각 약 50MB 메시지를 다른 큐로 동시에 전송하거나 다른 시간에 전송하지만 메시지가 대기열에서 제외되는 데 시간이 오래 걸리는 경우 5000MB 상당의 메시지를 메모리에 저장하려고하는 상황이 발생할 수 있습니다. 과거에 ActiveMQ가있는 4MB 메시지에서 비슷한 문제가 발생했지만 여기서 언급 한 수치보다 많은 메시지가 전송되었습니다. 메시지가 모두 동일한 (영구적 인) 대기열로 보내지면 처리중인 메시지 만 메모리에 있어야하므로 문제가되지 않습니다.

그래서 설정에 따라 다릅니다. 이론적 인 5000MB의 상한선을 관리 할 수 ​​있다면 (그리고 2000MB의 32 비트 JVM 제한을 염두에 두라.) 그러나이 접근법은 명확하게 확장되지 않으므로 제안하지 않을 것입니다. 모든 것이 하나의 영속 대기열로 보내 진다면, 아마도 괜찮을 것입니다.하지만 먼저로드 아래에 프로토 타입을 놓는 것이 좋습니다. 처리 속도는 느릴 수 있지만 다른 메커니즘으로 가져 오는 경우보다 느릴 필요는 없습니다. 어느 쪽이든, 더 작은 메시지를 더 큰 메시지와 병렬로 처리 할 수있는 대상을 구분하여 보내는 것이 좋습니다.

+0

굉장한 답변! 더 큰 메시지는 모두 동일한 "유형"이며 동일한 영구 대기열로 보내 지므로 그 메시지를 잘 처리해야합니다. – Ronnis

0

메시지 크기가 처리량 (msgs/초)에 영향을줍니다. 메시지가 클수록 처리량은 적습니다.

1

우리는 더 많은 양의 메시지로 비슷한 시나리오를 실행하고 있습니다. 우리는 Andres 제안과 비슷하게 많은 양의 작은 메시지 (여전히 시나리오에서 3-5MB 정도)와 50-150MB 정도의 큰 메시지를 위해 다른 대기열을 사용했습니다.

이미 언급 한 메모리 문제 외에도 많은 수의 지속적 대형 메시지를 처리 ​​할 때 메시지 브로커에 일반적인 성능 문제가 발생했습니다. 이것은 어떻게 든 파일 시스템에 이러한 메시지를 유지할 필요가 있기 때문에 발생하며, 우리는이 측면에서 병목 현상을 경험했습니다.

+0

흥미 롭습니다. 당신은 어떻게 그것을 해결하게 되었습니까? – Ronnis

+0

우리는 파일 시스템의 물리학에 대한 최적화를 수행했으며 추가적으로 특정 공급자 클러스터 시나리오를 사용하여 4 개의 호스트에 메시지 브로커를 배포했습니다. – roundrobin