Partitionnement d'un flux
Pour tirer pleinement parti de la capacité du service de flux à fonctionner à grande échelle, configurez le nombre de partitions dans le flux.
Avant de créer un flux, tenez compte du débit de flux attendu, de la stratégie de clé de partition et de la façon dont votre flux sera consommé. La plupart des valeurs de configuration ne peuvent pas être modifiées après la création du flux. Par exemple, après la création d'un flux, 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, vous devez spécifier le nombre de partitions dont dispose le flux. Le débit attendu de votre application peut vous aider à déterminer le nombre de partitions de votre flux.
Multipliez la taille moyenne des messages par le nombre maximal de messages écrits par seconde pour estimer le débit attendu. Comme une seule partition est limitée à un taux d'écriture de données de 1 Mo par seconde et à 5 demandes GET par seconde par groupe de consommateurs, un débit supérieur nécessite plus de partitions pour éviter la limitation. Gardez à l'esprit les limites supplémentaires du service de flux lors de la décision de conception.
Pour vous aider à gérer les pics de l'application, nous vous recommandons d'affecter un nombre de partitions légèrement supérieur à votre débit maximal.
Publication dans des partitions
Le contenu des messages que vous avez l'intention de publier dans un flux peut également vous aider à déterminer le nombre de partitions que votre flux doit avoir.
Un message est publié dans une partition du flux. S'il y a plus d'une partition, la partition dans laquelle le message est publié est calculée à l'aide de la clé du message.
Pour plus d'informations, voir Publication de messages.
Mappage clé-partition
Les messages ayant la même clé vont dans la même partition. Les messages avec des clés différentes peuvent aller dans des partitions différentes ou dans la même partition. Si vous ne spécifiez pas de clé, le service de flux reconnaît la clé nulle et génère une clé aléatoire au nom de l'utilisateur. Si un utilisateur publie le même message deux fois, celui-ci peut aller dans différentes partitions, car une nouvelle clé est générée. Ne vous attendez pas à ce que tous les messages avec une clé nulle aillent dans la même partition.
Par défaut, le service de flux fournit une distribution uniforme et prévisible des messages aux partitions d'un flux. Les API de diffusion en continu ne vous permettent pas de spécifier exactement vers quelle partition les données sont publiées, car cela peut introduire un risque de hotspotting d'une seule partition si un utilisateur ne connaît pas les nuances du service de diffusion en continu. Toutefois, si vous utilisez des API Kafka pour interagir avec le service de flux, vous pouvez effectuer un partitionnement personnalisé et mapper explicitement des messages aux partitions, bien que cela ne soit pas recommandé.
Clés de partitionnement en vigueur
Pour assurer une distribution uniforme des messages, vous devez disposer de valeurs efficaces pour vos clés de message. Pour créer une valeur efficace, prenez en compte la sélectivité et la cardinalité de vos données de diffusion en continu.
Cardinalité : Considérez le nombre total de clés uniques qui pourraient être générées en fonction d'un cas d'utilisation particulier. Une cardinalité de clé plus élevée signifie généralement une meilleure distribution.
Sélectivité : Considérez le nombre de messages avec chaque clé. Une plus grande sélectivité signifie davantage de messages par clé, ce qui peut entraîner des zones cliquables.
Cherchez toujours à obtenir une cardinalité élevée et une sélectivité faible.
Ordre
Les messages ayant la même clé sont stockés dans l'ordre dans lequel ils sont publiés et livrés aux consommateurs dans le même ordre que celui dans lequel ils ont été produits. Comme les messages avec la même clé vont à la même partition, cette garantie ne s'applique qu'au niveau de la partition.
Partitions et groupes de consommateurs
Si votre flux sera consommé par un ou plusieurs groupes de consommateurs, tenez compte de ce facteur dans votre décision concernant le nombre de ses partitions. Les lectures de partition sont équilibrées entre les instances d'un groupe de consommateurs.
Les groupes de consommateurs ne peuvent utiliser qu'une seule instance à la fois si le flux ne comporte qu'une partition. Si votre flux comporte plusieurs partitions, vous pouvez ajuster le nombre d'instances en fonction du nombre maximal de partitions et avoir une instance dans le groupe lisant à partir d'une partition du flux.
Pour plus d'informations, voir Utilisation de groupes de consommateurs .