Partager via


Mise à l’échelle avec Event Hubs

Deux facteurs influencent la mise à l’échelle avec Event Hubs.

  • Unités de débit (niveau standard) ou unités de traitement (niveau premium)
  • Partitions

Unités de débit

La capacité de débit des hubs d’événements est contrôlée par les unités de débit. Les unités de débit sont des unités de capacité achetées à l’avance. Une unité de débit unique vous permet de disposer des capacités suivantes :

  • Entrée : jusqu’à 1 Mo par seconde ou 1 000 événements par seconde, selon ce qui se produit en premier.
  • Sortie : jusqu’à 2 Mo par seconde ou 4 096 événements par seconde.

Au-delà de la capacité des unités de débit achetées, l’entrée est limitée, et Event Hubs lève un EventHubsException (avec une valeur Raison de ServiceBusy). La sortie ne produit aucune exception de limitation, mais elle reste limitée à la capacité des unités de débit achetées. Si vous recevez des exceptions de vitesse de publication ou si vous attendez une sortie plus élevée, vérifiez le nombre d’unités de débit achetées pour l’espace de noms. Vous pouvez gérer les unités de débit dans la page Mettre à l’échelle des espaces de noms, dans le Portail Azure. Vous pouvez également gérer les unités de débit par programmation à l’aide des API Event Hubs.

Les unités de débit sont achetées à l’avance et facturées à l’heure. Une fois achetées, les unités de débit sont facturées au moins une heure. Vous pouvez acheter jusqu’à 40 unités de débit par espace de noms Event Hubs. Ces unités sont partagées entre tous les hubs d’événements de l’espace de noms en question.

La fonctionnalité Majoration automatique d’Event Hubs augmente automatiquement la taille des instances en augmentant le nombre d’unités de débit pour répondre aux besoins d’utilisation. Cette opération permet d’éviter les situations de limitation, dans lesquelles :

  • Les taux d’entrée de données sont supérieurs aux unités de débit définies.
  • Les taux de demande de sortie de données sont supérieurs aux unités de débit définies.

Le service Event Hubs augmente le débit quand la charge dépasse le seuil minimal, sans qu’aucune demande échoue avec des erreurs ServerBusy.

Pour plus d’informations sur la fonctionnalité de majoration automatique, consultez Mettre à l’échelle automatiquement les unités de débit.

Unités de traitement

Event Hubs Premium offre des performances supérieures et une meilleure isolation dans un environnement PaaS multilocataire géré. Les ressources d’un niveau Premium sont isolées au niveau de l’UC et de la mémoire afin que chaque charge de travail locataire s’exécute de manière isolée. Ce conteneur de ressources est appelé Unité de traitement. Vous pouvez acheter 1, 2, 4, 6, 8, 10, 12 ou 16 unités de traitement pour chaque espace de noms Event Hubs Premium.

La quantité de données qu’il est possible d’ingérer et de diffuser avec une unité de traitement dépend de nombreux facteurs, parmi lesquels vos producteurs, les consommateurs, la vitesse d’ingestion et de transformation, etc.

Par exemple, l’espace de noms Event Hubs Premium avec une unité de traitement et un hub d’événements (100 partitions) peut offrir approximativement une capacité principale de 5 à 10 Mo/s en entrée et de 10 à 20 Mo/s en sortie pour les charges de travail AMQP ou Kafka.

Pour en savoir plus sur la configuration des unités de traitement pour un espace de noms de niveau premium, consultez Configurer des unités de traitement.

Notes

Pour en savoir plus sur les quotas et les limites, consultez Azure Event Hubs - quotas et limites.

Partitions

Event Hubs organise les séquences d’événements envoyés à un hub d’événements dans une ou plusieurs partitions. Les événements les plus récents sont ajoutés à la fin de cette séquence.

Image montrant un hub d’événements avec quelques partitions.

Une partition peut être considérée comme un « journal de validation ». Les partitions contiennent des données d’événement qui comprennent les informations suivantes :

  • Corps de l’événement
  • Jeu de propriétés défini par l’utilisateur décrivant l’événement
  • Métadonnées telles que son décalage dans la partition, son numéro dans la séquence de flux
  • Horodatage côté service indiquant quand il a été accepté

Diagramme qui affiche les séquences des événements des plus anciennes aux plus récentes.

Avantages de l’utilisation des partitions

Event Hubs est conçu pour faciliter le traitement de gros volumes d’événements, et le partitionnement aide à cela de deux manières :

  • Bien qu’Event Hubs soit un service PaaS, il y a une réalité physique sous-jacente. La gestion d’un journal qui conserve l’ordre des événements exige que ces événements soient conservés ensemble dans le stockage sous-jacent et ses réplicas, ce qui entraîne un plafond de débit pour ce type de journal. Le partitionnement permet d’utiliser plusieurs journaux parallèles pour le même hub d’événements et donc de multiplier la capacité de débit d’entrée/sortie (E/S) brute disponible.
  • Vos propres applications doivent être en mesure de traiter le volume d’événements envoyé dans un hub d’événements. Cela peut être complexe et nécessiter une capacité de traitement parallèle importante ayant fait l’objet d’un scale-out. La capacité d’un processus unique à gérer des événements étant limitée, vous avez besoin de plusieurs processus. C’est grâce aux partitions que votre solution alimente ces processus tout en garantissant que chaque événement a un propriétaire de traitement clair.

Nombre de partitions

Le nombre de partitions est spécifié au moment de la création d’un hub d’événements. Il doit être compris entre un et le nombre maximal de partitions autorisé pour chaque niveau tarifaire. Pour connaître la limite du nombre de partitions de chaque niveau, consultez cet article.

Nous vous recommandons de choisir au moins autant de partitions que nécessaire pendant le pic de charge de votre application pour ce hub d’événements particulier. Pour les niveaux autres que les niveaux premium et dédié, vous ne pouvez pas modifier le nombre de partitions d’un event hub après sa création. Pour un hub d’événements dans un niveau premium ou dédié, vous pouvez augmenter le nombre de partitions après sa création, mais vous ne pouvez pas le réduire. La distribution des flux entre les partitions changera à mesure que le mappage des clés de partition aux partitions changera. Vous devez donc tenter d’éviter de telles modifications si l’ordre relatif des événements est important dans votre application.

Il est tentant de définir le nombre de partitions sur la valeur maximale autorisée, mais gardez toujours à l’esprit que vos flux d’événements doivent être structurés de sorte que vous puissiez tirer parti de plusieurs partitions. Si vous avez impérativement besoin de préserver l’ordre parmi tous les événements ou seulement quelques sous-flux, vous ne pourrez peut-être pas tirer parti de nombreuses partitions. En outre, de nombreuses partitions rendent le côté traitement plus complexe.

Les tarifs ne tiennent pas compte du nombre de partitions présentes dans un hub d’événements. Cela dépend du nombre d’unités tarifaires (unités de débit pour le niveau Standard, unités de traitement pour le niveau Premium et unités de capacité pour le niveau dédié) de l’espace de noms ou du cluster dédié. Par exemple, un hub d’événements de niveau standard avec 32 partitions ou une seule occasionne exactement le même coût quand l’espace de noms a une capacité d’une unité de débit. De plus, vous pouvez mettre à l’échelle les unités de débit ou les unités de traitement de votre espace de noms, ou les unités de capacité de votre cluster dédié, indépendamment du nombre de partitions.

Une partition est un mécanisme d’organisation des données qui vous permet de publier et de consommer des données en parallèle. Nous vous recommandons d’équilibrer les unités de mise à l’échelle (unités de débit pour le niveau standard, unités de traitement pour le niveau premium ou unités de capacité pour le niveau dédié) et les partitions afin d’obtenir une mise à l’échelle optimale. En général, nous recommandons un débit maximal de 1 Mo/s par partition. Par conséquent, pour calculer le nombre de partitions, il est conseillé de diviser le débit maximal attendu par 1 Mo/s. Par exemple, si votre cas d’usage nécessite 20 Mo/s, nous vous recommandons de choisir au moins 20 partitions pour obtenir le débit optimal.

Toutefois, si vous disposez d’un modèle dans lequel votre application a une affinité avec une partition particulière, l’augmentation du nombre de partitions n’offre aucun avantage. Pour plus d’informations, consultez Disponibilité et cohérence.

Mappage d’événements à des partitions

Vous pouvez utiliser une clé de partition pour mapper des données d’événement entrant dans des partitions spécifiques dans le cadre de l’organisation des données. La clé de partition est une valeur fournie par l’expéditeur transmise dans un concentrateur d’événements. Elle est traitée par le biais d’une fonction de hachage statique qui crée l’affectation de la partition. Si vous ne spécifiez aucune clé de partition lors de la publication d’un événement, une affectation de type tourniquet (round robin) est utilisée.

L’éditeur d’événements est uniquement informé de sa clé de partition, et non de la partition sur laquelle les événements sont publiés. Grâce à cette dissociation de la clé et de la partition, l’expéditeur n’a pas besoin de connaître trop d’informations sur le traitement en aval. Une identité par appareil ou unique à l'utilisateur constitue une bonne clé de partition, mais d'autres attributs tels que la géographie, peuvent également être utilisés pour regrouper des événements liés dans une seule partition.

Le fait de spécifier une clé de partition permet de conserver les événements associés dans la même partition et dans l’ordre exact de leur arrivée. La clé de partition est une chaîne qui est dérivée de votre contexte d’application et qui identifie les relations entre les événements. Une séquence d’événements identifiée par une clé de partition est un flux. Une partition est un magasin de journaux multiplexé pour de nombreux flux de ce type.

Notes

Bien que vous puissiez envoyer des événements directement à des partitions, ceci n’est pas recommandé, surtout si vous accordez de l’importance à la haute disponibilité. Cela rétrograde la disponibilité d’un hub d’événements au niveau de la partition. Pour plus d’informations, consultez Disponibilité et cohérence.

Vous pouvez en apprendre plus sur Event Hubs en consultant les liens suivants :