Description de l'utilisation du disque réservé
Découvrez comment le stockage utilisable d'une instance Event Streams est utilisé par les rubriques et les partitions créées et les paramètres de configuration que vous appliquez.
Tout d'abord, il est important de noter que le stockage défini d'une instance Event Streams est un stockage utilisable. Cela signifie que vous n'avez pas à vous soucier du stockage utilisé par les répliques (car le facteur de réplication de toutes les rubriques est égal à 3) qui n'est pas pris dans le stockage utilisable. Cela simplifie les choses et vous permet de planifier le mappage de la conservation de ces messages à l'utilisation du stockage.
Description de la façon dont Kafka stocke les données
Kafka permet aux utilisateurs de configurer des limites de conservation pour les rubriques.
La configuration retention.bytes correspond au nombre total d'octets attribués pour les messages de chaque partition de la rubrique. S'il est dépassé, Kafka supprime les messages les plus anciens. Par exemple, si vous envoyez généralement 200 Mo par jour de messages à une seule rubrique de partition et que vous souhaitez les conserver pendant 5 jours, définissez retention.bytes sur 1 Go (200 Mo x 5 jours).
S'il s'agit de plus de 10 partitions, vous devez définir retention.bytes = 100 Mo (1 Go / 10 partitions).
En interne, Kafka divise chaque partition en segments de journal. Il s'agit là encore d'une propriété que vous pouvez définir, log.segment.size, la valeur par défaut est 512 Mo. Lorsque nous avons mentionné que Kafka supprime les messages les plus anciens, il supprime en réalité le segment de journal le plus ancien. Pour cette raison, Kafka doit conserver de l'espace pour un segment de journal supplémentaire, en plus du nombre de segments de journal requis pour satisfaire la configuration retention.bytes.
Voir les exemples suivants.
retention.bytes = 1 GB
log.segment.size = 512 MB
Kafka needs approximately 1.5 GB per partition for the topic storage.
retention.bytes = 100 MB
log.segment.size = 512 MB
Kafka needs approximately 1 GB per partition for the topic storage.
Un espace de stockage supplémentaire est nécessaire par partition pour les index. Pour chaque segment de journal, Kafka stocke également deux index. Leurs tailles sont définies par segment.index.size, qui est également configurable et dont la valeur par défaut est de 10 Mo. A titre de référence, le stockage utilisé par les index est calculé comme suit:
2 x number.of.log.segments x segment.index.size
où
number.of.log.segments = floor(retention.bytes/log.segment.size) + 1
Gestion du stockage avec Event Streams
Lorsque vous effectuez des opérations d'administration de rubrique, telles que la création de rubriques, la création de partitions ou la modification de configurations de rubrique, Event Streams garantit que l'espace de stockage disponible est suffisant pour répondre aux besoins de l'opération. Pour ce faire, pour chaque rubrique, Event Streams calcule la "taille réservée" pour chaque rubrique à l'aide de la méthode suivante.
Pour les rubriques dont le paramètre cleanup.policy est compact, la taille réservée consommée pour chaque partition est toujours de 1 Go. Lorsque le paramètre cleanup.policy d'une rubrique est défini sur
compact, toutes les valeurs utilisées pour les paramètres de rubrique retention.bytes ou retention.ms sont ignorées.
Pour les rubriques dont le paramètre cleanup.policy est delete ou compact, delete, la taille réservée consommée pour chaque partition est calculée comme suit:
Reserved size = retention.bytes + log.segment.size + (2 x segment.index.size x number.of.log.segments)
où
number.of.log.segments = floor(retention.bytes/log.segment.size) + 1
Le pourcentage total de stockage réservé est également affiché dans IBM Cloud Monitoring par la métrique ibm_eventstreams_instance_reserved_disk_space_percent.
Les demandes de création d'une rubrique ou d'ajout de partitions à une rubrique existante sont rejetées si elles entraînent une quantité totale de stockage réservé supérieure à 90% [1] du stockage configuré pour l'instance Event Streams. Les demandes rejetées reçoivent une erreur PolicyViolation expliquant que la limite de stockage réservé pour l'instance a été atteinte. Si la limite de stockage réservé est atteinte, vous devez supprimer des rubriques ou augmenter la quantité de stockage configurée pour l'instance pour que d'autres rubriques puissent être créées.
Le calcul de la taille réservée peut changer à l'avenir si les exigences de stockage Kafka sont mises à jour.
Exemples
Un effet non évident est que Kafka peut réserver plus de stockage que prévu en fonction de vos configurations de rubrique. Voir les exemples suivants.
-
Rubrique avec un paramètre retention.bytes de 1 Go et une taille de segment de journal de 512 Mo :
Avec une partition, il réserverait environ 1,5 Go de stockage.
Dans ce cas, la taille réservée est beaucoup plus importante que la taille de conservation. -
Rubrique avec un paramètre retention.bytes de 50 Go et une taille de segment de journal de 512 Mo :
Avec une partition, il réserverait environ 50,5 Go de stockage.
Dans ce cas, la taille réservée est très proche de la taille de conservation.
-
Rubrique avec un paramètre retention.bytes de 1 Go et une taille de segment de journal de 128 Mo :
Avec une partition, il réserverait environ 1,1 Go de stockage.
Dans ce cas, la taille réservée est très proche de la taille de conservation.
-
Event Streams utilise une partie du stockage affecté à une instance pour les deux fonctions de gestion interne et comme réserve opérationnelle pour les segments de journal pouvant être supprimés. ↩︎