Exporter (0) Imprimer
Développer tout

Planification de la capacité des files d'attente et rubriques de Service Bus

Auteurs : Valery Mizonov et Ralph Squillace

Cette rubrique décrit .

  • la différence souvent importante dans les limites de taille de file d'attente entre les files d'attentes Windows Azure et les files d'attente Windows Azure Service Bus ;

  • comment se rapprocher de la capacité de file d'attente du Service Bus appropriée lorsque vous souhaitez tirer parti des fonctionnalités de file d'attente et rubrique du Service Bus ;

  • une série de tests avec des messages de différentes tailles pour donner une idée du nombre de messages de cette taille qui peuvent être placés dans une file d'attente ou une rubrique du Service Bus.

Limitations de la taille des files d'attente et des rubriques dans Windows Azure Service Bus

Les files d'attente Windows Azure et du Service Bus sont des implémentations du stockage de l'accès en file d'attente, mais elles disposent d'un jeu de fonctionnalités légèrement différent, ce qui signifie que vous pouvez choisir l'unes l'autre selon les besoins de votre application spécifique. Par exemple, le Service Bus contient des rubriques et des abonnements, une implémentation de pub-sub qui est souvent importante dans les scénarios de notification d'entreprise ; alors que les files d'attente Windows Azure ont une capacité de stockage maximale de 100 téraoctets de données lorsque les files d'attente du Service Bus sont limitées à 5 gigaoctets.

Les deux principales différences, la taille maximale des messages et la taille maximale des files d'attente, sont illustrées ci-après :

 

Comparaison Files d'attente Windows Azure Files d'attente du Service Bus

Taille de message maximale

64 Ko

Remarque : cela inclut la surcharge d'environ 25 % de l'encodage base64.

256 Ko

Remarque : cela inclut les en-têtes et le corps, où la taille d'en-tête maximale est 64 Ko.

Taille de file d'attente maximale

100 To

Remarque : la taille maximale est limitée au niveau du compte de stockage.

1, 2, 3, 4 ou 5 Go

La taille est définie lors de la création d'une file d'attente ou d'une rubrique.

Cette dernière différence, la taille des files d'attente et des rubriques limitée à 5 Go pour le Service Bus, par rapport à la limite de 100 To pour les files d'attente Windows Azure, peut être assez importante. Ainsi, si vous souhaitez utiliser les fonctionnalités du Service Bus, telles que les lettres mortes, les rubriques et les abonnements, les règles ou les actions, vous devez évaluer au préalable la capacité des files d'attente ou des rubriques du Service Bus dont vous avez besoin pour votre application afin de concevoir l'application robuste de votre choix. Une application très active peut facilement créer une file d'attente ou une rubrique contenant 5 Go de données en fonction de la taille des messages, de la taille des en-têtes de messages et de la taille des propriétés personnalisées de messages , ainsi que de la rapidité à laquelle ces messages sont empilés ou envoyés à une rubrique.

Enfin, les files d'attente du Service Bus vous permettent d'établir la taille de la file d'attente lorsque vous créez la file d'attente. Vous ne pouvez pas redimensionner la file d'attente après qu'elle a été créée ; les files d'attente Windows Azure étant dotées d'une telle capacité de stockage, penser à augmenter la taille de file d'attente Windows Azure n'est presque pas nécessaire.

Lorsqu'une file d'attente ou une rubrique dépasse la capacité configurée, les requêtes suivantes pour empiler un message génèrent une exception Microsoft.ServiceBus.Messaging.QuotaExceededException. Votre application doit fournir la gestion adéquate pour ce type d'exception spécifique. Par exemple, une approche consiste à suspendre temporairement la remise des messages dans une file d'attente ou une rubrique et à donner aux consommateurs suffisamment de temps pour traiter le journal des travaux en souffrance avant la reprise de la publication des messages.

Il est également important de ne pas oublier que les messages dans les files d'attente du Service Bus sont composés de deux parties : un en-tête et un corps. La taille totale du message entier (en-tête et corps) ne peut pas dépasser 256 Ko. L'API de messagerie répartie du Service Bus utilise la sérialisation XML binaire (et non pas XML texte), ce qui réduit la taille de sortie de la charge utile sérialisée, et pendant que cette opération permet ensuite de stocker des messages de taille légèrement supérieure à 256 Ko, vous devez tester la réduction de taille que vous voyez pour votre propre application.

Calcul de la capacité des files d'attente et rubriques du Service Bus

Examinons l'algorithme de base pour calculer la taille des messages, et par conséquent le type de files d'attente ou rubriques du Service Bus dont vous pouvez avoir besoin pour votre application.

Un message vide a une taille de corps de 1 024 octets et une taille par défaut d'en-tête de 156 octets ; en incluant les autres éléments, la taille totale s'élève à 1 635 octets dans un message sans en-tête personnalisé ou propriété et un corps de message vide.

La formule suivante permet d'estimer la taille requise que le nombre de messages spécifié peut introduire :

Nombre de messages * (taille du corps du message + taille d'en-tête du message)

Pour déterminer la taille du corps, utilisez la propriété BrokeredMessage.Size. La taille d'en-tête peut être plus délicate à déterminer ; elle dépend du niveau de précision dont vous avez besoin. La méthode la plus précise consiste à envoyer le message (ou un message test si vous devez avoir connaissance de ces informations avant d'envoyer plusieurs messages), puis interroger les métadonnées de file d'attente à l'aide de la méthode NamespaceManager.GetQueue (ou NamespaceManager.GetTopic) et utiliser la propriété SizeInBytes (de l'objet QueueDescription ou TopicDescription) pour déterminer la quantité d'en-tête ajoutée.

La taille de rubrique requiert un algorithme légèrement différent. La formule pour déterminer la quantité d'espace consommée par un nombre de messages donné dans la rubrique est la suivante :

Nombre de messages * (Taille du corps du message + (Taille d'en-tête du message * Nombre d'abonnements)

Notez que la taille de l'en-tête est multipliée par le nombre d'abonnements à la rubrique, ce qui signifie que si des en-têtes personnalisés sont ajoutés aux messages de rubrique, la taille des rubriques augmentera proportionnellement au nombre d'abonnements.

Par exemple, si vous aviez un message par défaut avec 200 abonnements, la taille de rubrique est de 32 Ko. Toutefois, si vous augmentez la taille d'en-tête à 600 octets, la taille de rubrique sera de 120 Ko. Enfin, si vous ajoutez des messages d'accusé de réception qui découlent de chaque destinataire d'abonnement, vous ajoutez presque un bit. Un seul message avec un en-tête de 600 octets correspondant à 200 abonnements, ajouté dans 200 messages d'accusé de réception (un pour chaque abonnement) et vous obtenez 568 635 octets. Il est important d'anticiper cela.

Validation des approximations de capacité

Prenez en compte les données suivantes lors de l'estimation du nombre de messages que vous pouvez conserver dans une seule file d'attente du Service Bus. Ces données ont été capturées par un utilitaire personnalisé afin de déterminer la capacité de la file d'attente avec différentes options de taille de message.

 

Taille de l'exemple de message File d'attente de 1 Go File d'attente de 2 Go File d'attente de 3 Go File d'attente de 4 Go File d'attente de 5 Go

1 Ko

1,041,790

2,059,920

3,128,550

4,186,400

5,238,750

10 Ko

102,996

208,358

312,537

416,716

520,895

50 Ko

20,857

41,792

62,507

83,343

104,179

100 Ko

10,466

20,836

31,254

41,672

52,090

250 Ko

4,191

8,334

12,501

16,669

20,836

Pour réduire l'impact potentiel de la sérialisation XML binaire sur les résultats des tests, tous les exemples de messages qui ont été initialisés avec un tableau d'octets de la taille correspondante sont remplis avec des valeurs aléatoires.

Voir aussi


Date de génération :

2013-10-23

Ajouts de la communauté

Afficher:
© 2014 Microsoft