Tout d'abord, il n'y a pas de différence entre un seul gros sujet et beaucoup de partitions et plusieurs sujets qui contiennent quelques partitions. Le sujet est juste une distinction logique entre les événements. Kafka ne se soucie que du nombre de partitions.
Deuxièmement, le fait d'avoir beaucoup de partitions peut entraîner certains problèmes :
- Trop de dossiers ouverts :
Chaque partition correspond à un répertoire dans le système de fichiers du courtier. Dans ce répertoire de journal, il y aura deux fichiers (un pour l'indice et un autre pour les données réelles) par segment de journal.
- Plus de partitions nécessitent plus de mémoire tant du côté du courtier que du consommateur. côtés :
Les courtiers allouent une mémoire tampon de la taille de replica.fetch.max.bytes pour chaque partition qu'ils répliquent. Si replica.fetch.max.bytes est défini à 1 MiB, et que vous avez 1000 partitions, environ 1 GiB de RAM est nécessaire.
- Plus de partitions peuvent augmenter l'indisponibilité :
Si un broker qui est contrôleur est défaillant, alors zookeeper élit un autre broker comme contrôleur. À ce moment-là, le courtier nouvellement élu doit lire les métadonnées pour chaque partition de Zookeeper pendant l'initialisation.
Par exemple, s'il existe 10 000 partitions dans le cluster Kafka et que l'initialisation des métadonnées depuis ZooKeeper prend 2 ms par partition, cela peut ajouter 20 secondes supplémentaires à la fenêtre d'indisponibilité.
Vous pouvez obtenir plus d'informations à partir de ces liens :
https://www.confluent.io/blog/how-choose-number-topics-partitions-kafka-cluster/ https://docs.cloudera.com/documentation/kafka/latest/topics/kafka_performance.html