Partitionnement d'un flux de données

Pour tirer pleinement parti de la capacité d'évolutivité du service Streaming, configurez le nombre de partitions du flux de données.

Avant la création d'un flux de données, tenez compte du débit de flux attendu, de la stratégie de clé de partitionnement et de la manière dont le flux sera utilisé. La plupart des valeurs de configuration ne peuvent pas être modifiées une fois le flux de données créé. Par exemple, après la création d'un flux de données, vous ne pouvez pas modifier la durée de conservation des messages ou le nombre de partitions.

Partitions et débit

Lorsque vous créez un flux de données, vous devez indiquer le nombre de partitions de ce dernier. Le débit attendu de votre application peut vous aider à déterminer le nombre de partitions du flux de données.

Multipliez la taille de message moyenne par le nombre maximal de messages écrits par seconde pour estimer le débit attendu. Etant donné qu'une partition est limitée à un taux d'écriture de données de 1 Mo par seconde et à 5 demandes GET par seconde et par groupe de destinataires, un débit plus élevé nécessite plus de partitions pour éviter tout ralentissement. Gardez à l'esprit les autres limites de Streaming lors de vos décisions de conception.

Conseil

Pour que vous puissiez mieux gérer les pics des applications, nous vous recommandons d'allouer des partitions dépassant légèrement le débit maximal.

Publication vers des partitions

Le contenu des messages que vous prévoyez de publier dans un flux de données peut également vous aider à déterminer le nombre de partitions de ce dernier.

Un message est publié dans une partition du flux. S'il existe plusieurs partitions, celle où est publié le message est déterminée à l'aide de la clé du message.

Pour plus d'informations, reportez-vous à Publication de messages.

Correspondance clé/partition

Les messages ayant la même clé accèdent à la même partition. Les messages avec des clés différentes peuvent accéder à des partitions différentes ou à la même partition. Si vous ne spécifiez pas de clé, Streaming reconnaît la clé NULL et génère une clé aléatoire au nom de l'utilisateur. Si un utilisateur publie le même message deux fois, il peut être dirigé vers différentes partitions, car une clé entièrement nouvelle est générée. Ne vous attendez pas à ce que tous les messages ayant une clé NULL soient dirigés vers la même partition.

Par défaut, Streaming assure une distribution uniforme et prévisible des messages dans les partitions du flux de données. Les API de streaming ne vous permettent pas de spécifier la partition exacte de publication des données, car cela peut entraîner un risque de point d'accès à une seule partition si un utilisateur ne connaît pas les nuances de Streaming. Toutefois, si vous utilisez des API Kafka pour interagir avec Streaming, vous pouvez effectuer un partitionnement personnalisé et mettre explicitement en correspondance des messages avec des partitions, bien que nous ne le recommandions pas.

Clés de partitionnement efficaces

Afin de garantir une distribution uniforme des messages, vous avez besoin de valeurs efficaces pour les clés de message. Pour créer une valeur efficace, prenez en compte la sélectivité et la cardinalité des données Streaming.

Cardinalité : tenez compte du nombre total de clés uniques susceptibles d'être générées en fonction du cas d'emploi considéré. Une cardinalité de clé plus élevée se traduit généralement par une meilleure distribution.

Sélectivité : tenez compte du nombre de messages pour chaque clé. Une sélectivité plus élevée signifie un plus grand nombre de messages par clé, ce qui peut entraîner des problèmes de point d'accès.

Visez toujours une cardinalité élevée et une faible sélectivité.

Ordre

Les messages ayant la même clé sont garantis d'être stockés dans l'ordre dans lequel ils sont publiés et d'être distribués aux destinataires dans l'ordre dans lequel ils ont été produits. Les messages ayant la même clé étant dirigés vers la même partition, cette garantie s'applique uniquement au niveau de la partition.

Partitions et groupes de destinataires

Si le flux est consommé par des groupes de destinataires, tenez compte de ce facteur dans votre décision concernant le nombre de partitions. Les lectures de partition sont réparties entre les instances d'un groupe de destinataires.

Les groupes de destinataires ne peuvent utiliser qu'une seule instance à la fois que le flux de données comporte une seule partition. Si votre flux de données comporte plusieurs partitions, vous pouvez augmenter le nombre d'instances jusqu'au nombre de partitions de sorte qu'une instance du groupe lise une partition du flux.

Pour plus d'informations, reportez-vous à Utilisation de groupes de destinataires.