Exportar (0) Imprimir
Expandir todo

Planeación de la capacidad para Colas y Temas de Service Bus

Autores: Valery Mizonov y Ralph Squillace

En este tema se describe lo siguiente:

  • La diferencia, que suele ser importante, en los límites de tamaño de cola entre las colas de Windows Azure y las colas y los temas de Service Bus de Windows Azure

  • Cómo aproximarse a la capacidad correcta de cola de Service Bus si desea aprovechar las características de cola y tema de Service Bus

  • Una ejecución de prueba con mensajes de distintos tamaños para tener alguna idea del número de mensajes de ese tamaño que se pueden poner en una cola o un tema de Service Bus

Limitaciones de tamaño de las colas y los temas de Service Bus de Windows Azure

Tanto colas de Windows Azure como las colas de Service Bus son implementaciones de almacenamiento con acceso en cola, pero cada una de ellas tiene un conjunto de características ligeramente diferente, lo que significa que puede elegir una u otra según las necesidades de su aplicación concreta. Por ejemplo, Service Bus tiene temas y suscripciones, una implementación de publicación y suscripción que suele ser importante en los escenarios de notificaciones empresariales, mientras que las colas de Windows Azure pueden almacenar hasta 100 terabytes de datos cuando las colas de Service Bus están limitadas actualmente a 5 gigabytes.

A continuación se muestran las dos áreas principales de diferencias: tamaño máximo de mensaje y tamaño máximo de cola:

 

Comparación Colas de Windows Azure Colas de Service Bus

Tamaño máximo de mensaje

64 kB

Nota: esto incluye la sobrecarga aproximada del 25 % debido a la codificación base64.

256 kB

Nota: esto incluye tanto los encabezados como el cuerpo, donde el tamaño máximo del encabezado es 64 kB.

Tamaño máximo de cola

100 TB

Nota: el tamaño máximo está limitado por el nivel de la cuenta de almacenamiento.

1, 2, 3, 4 o 5 GB

El tamaño se define durante la creación de una cola o un tema.

Esta última diferencia (el límite de tamaño de 5 GB para las colas y los temas de Service Bus, en comparación con el límite de 100 TB de las colas de Windows Azure) puede ser muy importante, ya que significa que si desea usar características de Service Bus como colas de mensajes fallidos, temas y suscripciones, reglas, o acciones, debe evaluar cuánta capacidad de cola o tema de Service Bus necesitará para la aplicación antes de compilar la aplicación sólida que desea. Es fácil que una aplicación muy activa cree una cola o un tema con 5 GB de datos en función del tamaño de mensaje, el tamaño de los encabezados de mensaje y el tamaño de las propiedades personalizadas de mensaje, y de la rapidez con que esos mensajes se ponen en cola o se envían a un tema.

Por último, con las colas de Service Bus, establece el tamaño de la cola cuando crea la cola. No puede cambiar el tamaño de una cola una vez creada, mientras que las colas de Windows Azure tienen acceso a tanto almacenamiento que casi no es necesario pensar en aumentar el tamaño de la cola de Windows Azure.

Cuando una cola o un tema supera su capacidad configurada, las solicitudes subsiguientes para poner en cola un mensaje producen una excepción Microsoft.ServiceBus.Messaging.QuotaExceededException. La aplicación debe proporcionar el control suficiente para este tipo de excepción concreta. Por ejemplo, un enfoque sería suspender temporalmente la entrega de mensajes a una cola o un tema y dejar a los consumidores tiempo suficiente para procesar el trabajo pendiente antes de que se pueda reanudar la publicación de mensajes.

También es importante recordar que los mensajes de las colas de Service Bus constan de dos partes: un encabezado y un cuerpo. El tamaño total del mensaje completo (encabezado + cuerpo) no puede superar los 256 kB. La API de mensajería negociada de Service Bus usa serialización de XML binario (no XML de texto), lo que reduce el tamaño de salida de la carga serializada y, si bien esto a su vez permite almacenar mensajes ligeramente mayores de 256 kB, debe probar la reducción del tamaño que vea para su propia aplicación.

Calcular la capacidad de Colas y Temas de Service Bus

Examinemos el algoritmo básico para calcular el tamaño de los mensajes y, por tanto, el tipo de colas o temas de Service Bus que puede necesitar para su aplicación.

Un mensaje vacío tiene un tamaño de cuerpo de 1024 bytes y un tamaño predeterminado del encabezado de 156 bytes; incluyendo otros elementos, se redondea hasta un total de 1635 bytes en un mensaje sin encabezados o propiedades personalizados y un cuerpo del mensaje vacío.

Se puede usar la fórmula siguiente para calcular los requisitos de tamaño que el número de mensajes especificado puede presentar:

Número de mensajes * (tamaño del cuerpo del mensaje + tamaño del encabezado del mensaje)

Para determinar el tamaño del cuerpo, use la propiedad BrokeredMessage.Size. El tamaño del encabezado puede resultar más difícil, por lo que depende del grado de precisión que necesite. El método más preciso consiste en enviar el mensaje (o un mensaje de prueba si necesita conocer la información antes de enviar varios mensajes) y, a continuación, consultar los metadatos de la cola mediante el método NamespaceManager.GetQueue (o NamespaceManager.GetTopic) y usar la propiedad SizeInBytes (de los objetos QueueDescription o TopicDescription) para determinar cuánto encabezado se agregó.

El tamaño del tema necesita un algoritmo ligeramente diferente. La fórmula para determinar cuánto espacio del tema consume un número especificado de mensajes es la siguiente:

Número de mensajes * (tamaño del cuerpo del mensaje + (tamaño del encabezado del mensaje * número de suscripciones))

Tenga en cuenta que el tamaño del encabezado se multiplica por el número de suscripciones al tema, lo que significa que si se agrega algún encabezado personalizado a los mensajes del tema, el tamaño del tema aumentará en proporción al número de suscripciones.

Por ejemplo, si tuviera un mensaje predeterminado con 200 suscripciones, se obtendría un tamaño del tema de 32 kB. Sin embargo, si aumenta el tamaño del encabezado a 600 bytes, el tamaño del tema ahora será 120 kB. Por último, si agrega los mensajes de confirmación que fluyen desde cada receptor de la suscripción, está agregando bastante. Un solo mensaje con un encabezado de 600 bytes que coincide con 200 suscripciones agrega 200 mensajes de confirmación (uno para cada suscripción) y está examinando 568.635 bytes. Es importante tener esto en cuenta por adelantado.

Validar los cálculos aproximados de capacidad

Puede tener en cuenta los datos siguientes a la hora de calcular aproximadamente cuántos mensajes puede almacenar en una sola cola de Service Bus. Estos datos los ha capturado una utilidad personalizada para determinar la capacidad de la cola con distintas opciones de tamaño de mensaje.

 

Tamaño de mensaje de ejemplo Cola de 1 GB Cola de 2 GB Cola de 3 GB Cola de 4 GB Cola de 5 GB

1 kB

1,041,790

2,059,920

3,128,550

4,186,400

5,238,750

10 kB

102,996

208,358

312,537

416,716

520,895

50 kB

20,857

41,792

62,507

83,343

104,179

100 kB

10,466

20,836

31,254

41,672

52,090

250 kB

4,191

8,334

12,501

16,669

20,836

Para descartar el posible impacto de la serialización de XML binario en los resultados de la prueba, todos los mensajes de ejemplo se inicializaron con una matriz de bytes del tamaño respectivo relleno con valores aleatorios.

Vea también


Fecha de compilación:

2013-10-23

Adiciones de comunidad

Mostrar:
© 2014 Microsoft