내보내기(0) 인쇄
모두 확장

서비스 버스 큐 및 항목에 대한 용량 계획

만든 이: Valery Mizonov, Ralph Squillace

이 항목에서는 다음에 대해 설명합니다.

  • Windows Azure 큐와 Windows Azure 서비스 버스 큐 및 항목 간의 큐 크기 제한에 따른 주요 차이점

  • 서비스 버스 큐 및 항목 기능을 사용하려고 할 때 정확한 서비스 버스 큐 용량을 어림잡아 계산하는 방법

  • 서비스 버스 큐 또는 항목에 적용할 수 있는 크기에 따라 달리지는 메시지 수에 대한 정보를 제공하기 위해 다양한 크기의 메시지를 사용하여 테스트 실행

Windows Azure 서비스 버스의 큐와 항목 크기 제한

Windows Azure 큐와 서비스 버스 큐는 둘 다 큐 액세스 저장소를 구현하지만 서로 크게 다른 기능 집합을 가지고 있습니다. 즉, 특정 응용 프로그램의 요구 사항에 따라 둘 중 하나를 선택할 수 있습니다. 예를 들어 서비스 버스에는 비즈니스 알림 시나리오에서 종종 중요한 역할을 하는 구독-게시 구현과 함께 항목과 구독이 포함됩니다. 반면에 서비스 버스 큐가 현재 5GB로 제한되어 있을 때 Windows Azure 큐는 100TB의 데이터를 저장할 수 있습니다.

아래에 두 가지 중요한 차이점인 최대 메시지 크기와 최대 큐 크기가 나와 있습니다.

 

비교 Windows Azure 큐 서비스 버스 큐

최대 메시지 크기

64KB

참고: 여기에는 base64 인코딩의 약 25% 오버헤드가 포함됩니다.

256KB

참고: 여기에는 머리글과 본문이 포함됩니다. 최대 머리글 크기는 64KB입니다.

최대 큐 크기

100TB

참고: 최대 크기는 저장소 계정 수준으로 제한됩니다.

1, 2, 3, 4 또는 5GB

크기는 큐 또는 항목이 생성될 때 정의됩니다.

큐 및 항목의 크기 제한이 서비스 버스는 5GB이고 Windows Azure 큐는 100TB라는 이 마지막 차이점은 배달 못 한 편지, 항목 및 구독, 규칙 또는 작업과 같은 서비스 버스 기능을 사용하려는 경우 솔리드 응용 프로그램을 빌드하기 전에 응용 프로그램에 필요한 서비스 버스 큐 또는 항목 용량을 평가해야 하므로 매우 중요할 수 있습니다. 활성 응용 프로그램에서는 메시지 크기, 메시지 머리글의 크기, 사용자 지정 메시지 속성의 크기, 이러한 메시지가 큐에 대기 또는 전송되는 속도 등에 따라 5GB의 데이터가 포함된 큐 또는 항목을 손쉽게 만들 수 있습니다.

마지막으로 서비스 버스 큐를 사용할 경우 큐를 만들 때 큐 크기를 설정할 수 있습니다. 큐를 생성한 후에는 큐의 크기를 조정할 수 없습니다. 반면에 Windows Azure 큐는 Windows Azure 큐의 크기를 늘릴 필요가 거의 없다고 간주되는 많은 저장소에 액세스할 수 있습니다.

큐 또는 항목이 구성된 용량을 초과할 경우 메시지를 큐에 넣으라는 후속 요청을 실행하면 Microsoft.ServiceBus.Messaging.QuotaExceededException 예외가 발생합니다. 응용 프로그램에서는 이러한 예외 유형을 적절하게 처리해야 합니다. 예를 들어 큐 또는 항목으로의 메시지 배달을 일시적으로 중단하고 메시지 게시가 다시 시작되기 전에 백로그를 처리할 수 있는 충분한 시간을 사용자에게 제공할 수 있습니다.

또한 서비스 버스 큐에 있는 메시지는 머리글과 본문이라는 두 부분으로 이루어져 있다는 것을 아는 것도 중요합니다. 전체 메시지(머리글 + 본문)의 총 크기는 256KB를 초과할 수 없습니다. 서비스 버스 브로커 메시징 API는 이진 XML 직렬화(텍스트 XML이 아님)를 사용하므로 직렬화된 페이로드의 출력 크기가 줄어듭니다. 그 결과 256KB보다 약간 더 큰 메시지를 저장할 수는 있지만 응용 프로그램에서 이러한 크기 감소를 테스트해야 합니다.

서비스 버스 큐 및 항목의 용량 계산

이제 메시지 크기를 계산하는 기본 알고리즘을 살펴보고 응용 프로그램에 필요한 메시지 버스 큐 또는 항목의 유형을 확인합니다.

빈 메시지에 1024바이트의 본문과 156바이트의 기본 머리글이 포함되어 있습니다. 기타 요소까지 포함한 메시지의 총 크기는 1635바이트입니다. 여기에는 사용자 지정 머리글이나 속성이 포함되어 있지 않으며 빈 메시지 본문만 포함되어 있습니다.

다음 수식을 사용하여 지정된 수의 메시지를 포함하는 데 필요한 크기를 어림잡아 계산할 수 있습니다.

메시지 수 * (메시지 본문 크기 + 메시지 머리글 크기)

본문 크기를 확인하려면 BrokeredMessage.Size 속성을 사용합니다. 머리글 크기는 필요한 정확성 수준에 따라 더 세밀할 수 있습니다. 가장 정확한 방법은 메시지(또는 테스트 메시지, 여러 메시지를 보내기 전에 머리글 크기를 알아야 하는 경우)를 보낸 다음 NamespaceManager.GetQueue(또는 NamespaceManager.GetTopic) 메서드를 사용하여 큐 메타데이터를 쿼리하고 SizeInBytes 속성(QueueDescription 또는 TopicDescription 개체 중 하나)을 사용하여 추가된 머리글 크기를 확인하는 것입니다.

항목 크기는 약간 다른 알고리즘을 필요로 합니다. 항목에서 지정된 수의 메시지가 사용하는 공간 크기를 확인하는 수식은 다음과 같습니다.

메시지 수 * (메시지 본문 크기 + (메시지 머리글 크기 * 구독 수))

머리글 크기를 항목에 대한 구독 수로 곱했으므로 항목 메시지에 사용자 지정 머리글을 추가하면 총 크기도 구독 수에 따라 증가합니다.

예를 들어 이 메시지가 200개의 구독이 있는 기본 메시지라고 가정하면 항목 크기는 32KB입니다. 그러나 머리글 크기를 600바이트로 늘리면 항목 크기는 120KB로 증가합니다. 결국 각 구독 수신자가 보내는 ACK 메시지를 추가하면 상당히 많은 양의 바이트가 추가됩니다. 200개의 구독과 일치하는 600바이트의 머리글이 있는 단일 메시지와 200개의 ACK 메시지(각 구독에 대해 하나씩)를 더하면 568,635바이트가 됩니다. 따라서 이러한 사항을 미리 생각하는 것이 중요합니다.

용량 근사값 유효성 검사

단일 서비스 버스 큐에 보관할 수 있는 메시지 수를 어림잡아 계산할 때 다음과 같은 데이터를 고려할 수 있습니다. 이 데이터는 다양한 메시지 크기 옵션으로 큐 용량을 확인하기 위해 사용자 지정 유틸리티를 사용하여 캡처한 것입니다.

 

샘플 메시지 크기 1GB 큐 2GB 큐 3GB 큐 4GB 큐 5GB 큐

1KB

1,041,790

2,059,920

3,128,550

4,186,400

5,238,750

10KB

102,996

208,358

312,537

416,716

520,895

50KB

20,857

41,792

62,507

83,343

104,179

100KB

10,466

20,836

31,254

41,672

52,090

250KB

4,191

8,334

12,501

16,669

20,836

이진 XML 직렬화가 테스트 결과에 영향을 주지 않도록 하기 위해 모든 샘플 메시지는 임의의 값으로 채워진 각 크기의 바이트 배열로 초기화되었습니다.

참고 항목


빌드 날짜:

2013-10-23

커뮤니티 추가 항목

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft