문제

미들웨어 또는 EAI 시스템을 통해 엄청난 양의 데이터 (mbytes? gbytes?)를 다루는 메시지 또는 요청/응답을 처리하기위한 모범 사례가 있습니까?

  • 일관성을 유지하기 위해 메시지로 데이터를 전송하지만 아마도 시스템간에 막대한 양의 데이터를 복사 할 수 있습니다.

  • 데이터를 스토어 또는 데이터 저장소 (파일 시스템, 데이터베이스, ...)에 보관하고 데이터에 대한 참조를 전송하지만 메시지와 데이터 사이의 밀접한 커플 링을 잃어 버립니다.

이 문제에 대한 일반적인 해결책은 무엇입니까? 이것은 EAI 또는 미들웨어 제품에서 어떻게 지원됩니까?

도움이 되었습니까?

해결책

내 경험상 메시지의 크기를 제한하는 것이 좋습니다. 내가 아는 환경에서 (WebSphere MQ, SonicMQ) 5-10MB는 대부분의 메시지에 좋은 값을 발견했습니다. 대부분의 경우 최대 100MB의 크기를 가진 메시지가 거의 없으면 아프지 않을 것입니다. 그러나 메모리 소비에 대해 생각해야합니다. 메모리에서 한 번, 병렬 처리를 시작할 때 약간의 두통이 발생할 수 있습니다.

해결 방법으로 사용하는 두 가지가 있습니다.

  • 사용 메시지 시퀀스 패턴 일부 추가 기능 : 대부분 우리는 완전성을 보장하기 위해 모든 시퀀스 번호의 참조를 포함하는 트리거를 보냅니다.
  • 데이터에 "링크"를 보내십시오

일반적으로 메시지에 구조화 된 데이터가 포함될 때마다 첫 번째 솔루션을 사용하며 두 번째는 미디어 배포의 경우 사용됩니다.

첫 번째 솔루션의 경우 사용하지 않는 경향이 있지만 특정 솔루션을 제공하지만 사용자 정의 구현 에서이 논리를 구현하여 특정 메시징 시스템에 묶이지 않습니다.

다른 팁

소스와 대상 시스템을 직접 연결하는 것이 실용적이라면 전송을 시작하기 위해 메시지를 통해 참조 만 보내면 작동하지만 느슨한 커플 링을 잃게됩니다.

Book Enterprise Integration Patterns에 따르면 메시지 시퀀스 패턴.

TIBCO와 같은 EAI 시스템에 대한 경험에서. 임의로 많은 양의 데이터를 처리하는 방법을 알아내는 것은 거의 당신에게 달려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top