Concepts dans le service de diffusion en continu avec Apache Kafka
Pour mieux comprendre le service de diffusion en continu pour OCI avec Apache Kafka, consultez certains termes et concepts.
Conditions
- Apache Kafka
- Apache Kafka est une plate-forme de diffusion d'événements à code source libre. Il fonctionne comme un système distribué composé de serveurs et de clients. Le service de diffusion en continu pour OCI avec Apache Kafka vous permet d'exécuter des grappes Kafka entièrement gérées dans une location avec une compatibilité à 100 % avec Apache Kafka.
Vous utilisez la console, l'API ou l'interface de ligne de commande OCI pour créer et mettre à jour la grappe et le courtier.
- Grappe
- Système réparti de serveurs ou de courtiers Apache Kafka qui stocke et gère les données en continu. Dans le service de diffusion en continu pour OCI avec Apache Kafka, vous pouvez créer deux types de grappes : grappe de démarrage ou grappe à haute disponibilité.
- Courtier
- Serveur Kafka qui stocke les données et traite les demandes des clients. Selon la charge de travail, vous pouvez créer de 1 à 30 courtiers dans chaque grappe. Chaque courtier d'une grappe est un noeud de calcul utilisé pour stocker des sujets.
Vous utilisez l'API ou l'interface de ligne de commande Apache Kafka pour créer et mettre à jour des sujets, des partitions, des enregistrements et des opérations de fournisseur et de consommateur.
- Sujet
- Catégories définies par l'utilisateur dans un courtier où les données sont stockées. Chaque sujet peut comporter de nombreuses partitions pour la répartition des données et le traitement en parallèle.
- Partitions
- Les sujets sont divisés en un nombre spécifié de partitions qui stockent des enregistrements. Les enregistrements sont ordonnés dans chaque partition et chaque enregistrement est affecté à un décalage unique qui augmente de façon séquentielle.
- Records
- Paires de données de valeur de clé écrites dans des rubriques et lues à partir de celles-ci.
- Fournisseur
- Application qui écrit des enregistrements sur des sujets.
- Grand public
- Application qui lit les enregistrements à partir de sujets.
- Groupe de coordonnateurs
- Instance de coordinateur interne au sein de chaque cluster qui assure le suivi des activités d'un cluster, telles que les partitions. Une grappe avec 2 courtiers ou moins obtient une grappe de coordinateurs de noeud unique. Les grappes de taille supérieure bénéficient d'une grappe de coordonnateurs à 3 noeuds. Vous ne pouvez pas voir les détails de la grappe de coordonnateurs.
Limites de service
| Limite | Valeur |
|---|---|
| Grappes par location | 5 |
| Courtiers par grappe | 30 |
| Courtiers par location | 150 |
| Stockage |
50 Go minimum à 5 To maximum par courtier 150 To maximum par grappe |
| Configuration de grappe | 100 |
|
Versions de configuration (Nombre de versions pour chaque configuration de grappe) |
10 |
| Trafic entrant par grappe | aucune limite |
| Trafic sortant par grappe | aucune limite |
| Trafic entrant par partition | aucune limite |
| Trafic sortant par partition | aucune limite |
| Partitions | aucune limite |
| Nombre maximal de connexions client | aucune limite |
| Nombre maximal de tentatives de connexion | aucune limite |
| Nombre maximal de demandes (par seconde) | aucune limite |
| Taille maximale des messages (Mo) | aucune limite |
| Taille maximale de la demande (Mo) | aucune limite |
| Nombre maximal d'octets extraits (Mo) | aucune limite |
| Clés d'API | Non applicable |
| Liste de contrôle d'accès | aucune limite |
| Configurations | 100 par location |
| Mises à jour de configuration | aucune limite |
Limites de fonctions
| Fonction | Soutien technique |
|---|---|
| Une seule sémantique | Oui |
| Stockage compacté basé sur les clés | Oui |
| Connecteurs personnalisés | Nombre |
| Prise en charge native de ksqlDB | Nombre |
| Réseau public | Nombre |
| Réseau privé | Oui |
| OAuth | Nombre |
| Journaux de vérification | Oui |
| Clés de chiffrement autogérées | Nombre |
| Mise à l'échelle élastique automatique | Nombre |
| Partage de flux | Nombre |
| Quotas du client | Oui |
Types de grappe
Dans le service de diffusion en continu pour OCI avec Apache Kafka, vous pouvez créer deux types de grappe.
- Grappe de démarrage
- Conçu à des fins de test et de développement lorsque la haute disponibilité n'est pas une exigence critique. Une grappe de démarrage offre une configuration flexible où les grappes peuvent avoir entre 1 et 30 courtiers.
- Grappe hautement disponible
- Conçu pour les environnements de production où la haute disponibilité est essentielle. Ces grappes sont configurées avec un minimum de 3 courtiers répartis dans plusieurs domaines de disponibilité ou d'erreur afin d'assurer la redondance et la tolérance aux pannes. La grappe peut évoluer jusqu'à un maximum de 30 courtiers, offrant fiabilité et résilience pour les charges de travail critiques.
Options par défaut de la grappe
Vérifiez les options par défaut suivantes pour une grappe Kafka.
- Connectivité
- Par défaut, toutes les grappes Kafka sont créées avec une connectivité privée et sont accessibles depuis le VCN et le sous-réseau spécifiés lors de la création de la grappe. If more VCNs need access to the Kafka cluster, configure VCN peering.
- Quotas de disque du courtier
- Par défaut, les quotas de disque du broker sont appliqués afin d'assurer la stabilité et d'éviter une utilisation excessive des ressources de disque. Lorsqu'un disque de courtier atteint une capacité de 97 %, l'exploitation du producteur est limitée par le débit, tandis que les opérations du consommateur ne sont pas affectées et continuent de fonctionner comme prévu. Lorsqu'un disque de courtier atteint une capacité de 98 %, toutes les opérations de producteur sont bloquées tandis que les opérations de consommateur peuvent continuer à consommer des événements et à valider des décalages sans interruption. Vous pouvez modifier ce comportement par défaut et définir des quotas de stockage personnalisés dans un fichier de configuration de grappe.
- Fichier de configuration de grappe
- Lorsque vous créez une grappe Kafka, le fichier de configuration de grappe est créé avec les propriétés par défaut en fonction du type de grappe. Les paramètres de propriété sont conçus pour équilibrer la fiabilité, la durabilité et la facilité d'utilisation. Vous pouvez utiliser le fichier par défaut ou en créer un personnalisé. Pour obtenir la liste des propriétés configurables et non configurables, voir Gestion des configurations de grappe.
Grappe hautement disponible
allow.everyone.if.no.acl.found=true auto.create.topics.enable=false leader.imbalance.per.broker.percentage=1 default.replication.factor=3 offsets.topic.replication.factor=3 min.insync.replicas=2 transaction.state.log.min.isr=2 transaction.state.log.replication.factor=3Propriété Par défaut Fonction allow.everyone.if.no.acl.foundvraie Si aucune liste de contrôle d'accès n'est trouvée pour une ressource, tous les utilisateurs sont autorisés à accéder à la grappe. auto.create.topics.enablefausse Les sujets ne sont pas créés automatiquement, ils doivent être créés explicitement pour un meilleur contrôle. leader.imbalance.per.broker.percentage1 Contrôle le seuil de déséquilibre des dirigeants par courtier pour le rééquilibrage. default.replication.factor3 De nouveaux sujets sont créés avec 3 répliques pour une durabilité élevée. offsets.topic.replication.factor3 Le sujet des décalages internes est répliqué 3 fois pour la résilience. min.insync.replicas2 Au moins 2 répliques doivent reconnaître une écriture pour la durabilité. transaction.state.log.min.isr2 Nombre minimal de répliques synchronisées pour le journal d'état des transactions. transaction.state.log.replication.factor3 Facteur de réplication pour le journal d'état des transactions. Grappe de démarrage
allow.everyone.if.no.acl.found=true auto.create.topics.enable=false leader.imbalance.per.broker.percentage=1 default.replication.factor=1 offsets.topic.replication.factor=1 min.insync.replicas=1 transaction.state.log.min.isr=1 transaction.state.log.replication.factor=1Propriété Par défaut Fonction allow.everyone.if.no.acl.foundvraie Si aucune liste de contrôle d'accès n'est trouvée pour une ressource, tous les utilisateurs sont autorisés à accéder à la grappe. auto.create.topics.enablefausse Les sujets ne sont pas créés automatiquement, ils doivent être créés explicitement pour un meilleur contrôle. leader.imbalance.per.broker.percentage1 Contrôle le seuil de déséquilibre des dirigeants par courtier pour le rééquilibrage. default.replication.factor1 De nouvelles rubriques sont créées avec 1 réplique (aucune redondance). offsets.topic.replication.factor1 Le sujet des décalages internes a une seule réplique. min.insync.replicas1 Seulement 1 réplique doit accuser réception d'une écriture. transaction.state.log.min.isr1 Nombre minimal de répliques synchronisées pour le journal d'état des transactions. transaction.state.log.replication.factor1 Facteur de réplication pour le journal d'état des transactions.
Planifier la taille de la grappe et le stockage
Consultez les directives de dimensionnement des grappes pour optimiser et tirer le meilleur parti du service de diffusion en continu pour OCI avec une grappe Apache Kafka.
Directives générales
- Augmenter le nombre de courtiers dans la grappe
- Augmenter le nombre de partitions dans le cluster
- Augmenter le nombre d'OCPU par courtier
- Utiliser des courtiers plus grands avec une mémoire plus élevée
- Utiliser des lots plus petits, des
linger.msplus courts et optimiser le chemin d'accès au réseau
Si la durabilité est plus importante que la latence, envisagez de régler le paramètre de configuration du fournisseur de portlets acks à all.
Le fait de ne pas planifier et configurer la grappe a une incidence sur les performances de la grappe.
- La configuration de moins de courtiers entraîne un faible débit, une latence élevée et une surcharge de courtier.
- La configuration de moins de partitions entraîne un parallélisme médiocre et une faible utilisation par les consommateurs.
- La configuration de courtiers sous-alimentés entraîne une latence d'extraction ou de production élevée, des problèmes de récupération de mémoire et des courtiers instables.
- La configuration d'un trop grand nombre de partitions sur de plus petits courtiers entraîne une utilisation élevée de la mémoire, un gonflement des métadonnées et un rééquilibrage instable.
Valeurs de référence de la performance
Vérifiez les mesures de performance sur les grappes Kafka avec les processeurs basés sur ARM, le facteur de réplication réglé à 3 et le paramètre de configuration de fournisseur acks réglé à 1.
| Configuration du courtier | Partitions | Débit maximal du fournisseur | Débit maximal de consommateur | Latence |
|---|---|---|---|---|
3 courtiers, chacun avec la configuration suivante :
|
1,000 | 161.21 Mo par seconde | 394.38 Mo par seconde | 50.70 ms |
3 courtiers, chacun avec la configuration suivante :
|
2,000 | 368.76 Mo par seconde | 678.39 Mo par seconde | 27.79 ms |
3 courtiers, chacun avec la configuration suivante :
|
2,000 | 505.13 Mo par seconde | 710.82 Mo par seconde | 21.11 ms |
18 courtiers, chacun avec la configuration suivante :
|
2,000 | 379.39 Mo par seconde | 690.27 Mo par seconde | 80.18 ms |
18 courtiers, chacun avec la configuration suivante :
|
4,000 | 788.73 Mo par seconde | 998.11 Mo par seconde | 74.53 ms |
18 courtiers, chacun avec la configuration suivante :
|
4,000 | 1.08 Go par seconde | 1.15 Go par seconde | 71.29 ms |
30 courtiers, chacun ayant la configuration suivante :
|
4,000 | 617.60 Mo par seconde | 1.02 Go par seconde | 98.27 ms |
30 courtiers, chacun ayant la configuration suivante :
|
6,000 | 1.65 Go par seconde | 1.34 Go par seconde | 65.81 ms |
30 courtiers, chacun ayant la configuration suivante :
|
6,000 | 2.41 Go par seconde | 2.009 Go par seconde | 56.82 ms |
Les mesures de performance dépendent de plusieurs facteurs et les améliorations d'une configuration pourraient entraîner des compromis dans d'autres.
Par exemple, les nombres de débit varient en fonction de facteurs tels que la taille du message, le type de compression, la taille du lot et linger.ms. Une taille de lot plus élevée peut augmenter le débit, mais peut également entraîner une latence plus élevée.
L'augmentation du nombre de partitions améliore généralement le débit et améliore les performances des producteurs. Cependant, il augmente également l'utilisation des ressources des producteurs et des consommateurs et introduit davantage de frais généraux liés aux métadonnées. Cela peut ralentir l'élection des dirigeants et la gestion des répliques synchronisées (ISR), augmentant potentiellement la latence des demandes de production et d'extraction.
Vous devez régler les paramètres en fonction des besoins.
- Pour une latence plus faible, réduisez
batch.sizeetlinger.mset évitez une compression importante. - Pour optimiser le débit, augmentez
batch.size, activez la compression et utilisez plus de partitions et de courtiers pour une mise à l'échelle horizontale.
Surveillez toujours de près les mesures de latence et de débit et réglez la grappe de manière itérative en fonction de modèles de charge de travail réels.
Migrer
Vous pouvez migrer des données d'une grappe Apache Kafka autogérée vers un service de diffusion en continu pour OCI avec une grappe Apache Kafka.
La solution recommandée pour ce cas d'utilisation de migration consiste à créer un connecteur MirrorMaker 2.0 dans une grappe de connexion.
client.properties :security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
ssl.truststore.location=</path/to/truststore.jks>
ssl.truststore.password=<truststore-password>
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<username>" password="<password>";