Pourquoi Kafka? Quelles sont vos impressions globales? Quelle est la composition des clusters? Under the cut - une douzaine de courtes questions pour Levon Avakyan, qui est responsable de la fiabilité, de l'architecture des applications, de l'infrastructure et de la production chez Wargaming.
- Comment avez-vous choisi Kafka? Qu'est-ce qui était utilisé auparavant? Quelles alternatives ont été envisagées?Pas une question très correcte en ce qui concerne le développement du réservoir. Apache Kafka était déjà utilisé dans l'entreprise pour les besoins de notre entrepôt de données, et initialement il y avait une tâche d'intégration, et c'est seulement à ce moment-là que nous avons vu que Kafka pouvait être utilisé pour différentes tâches.
- Combien d'événements sont générés par votre cluster de jeux?Un cluster de réservoirs est un cluster de clusters, le système est distribué et génère des événements dans différents Kafka. Tous les clusters génèrent en moyenne 12 000 messages, aux pointes environ 30 000 messages par seconde.
- Et combien de clusters avez-vous et quelle est leur composition?Le plus grand cluster central se compose de cinq nœuds de fer. Les clusters plus petits qui ne servent que des périphériques de réservoir sont environ trois nœuds chacun plus des machines virtuelles. Nous avons quatre clusters locaux pour la région de la CEI.
- Combien de producteurs et de consommateurs êtes-vous? Quels sont les taux de lecture / écriture?Bonne question. Pour la périphérie locale de Kafka, le producteur est un - un groupe de réservoirs et il y a des dizaines de consommateurs. Par taux: jusqu'à 75 000 messages par seconde sont écrits sur le cluster central, en moyenne 12 000, sur les locaux jusqu'à 7 000 et en moyenne 3 000.
- Combien de grands événements écrivez-vous à Kafka? Y a-t-il des délais de livraison?Limite de 1 Mo - personne d'autre n'a demandé. Il existe des restrictions sur le délai de livraison pour certains consommateurs, pour certains non. Certains lisent une fois par semaine.
- Avez-vous rencontré des fonctionnalités et des bugs intéressants lors du partage ou de la réplication?Face à la perte de données lors de la réélection en raison des paramètres du sujet. Une réélection sale a été autorisée et le mauvais ISR a été choisi.
- Et est-il arrivé de reposer contre un disque ou un réseau?Ils ne reposaient pas sur le réseau, nous avons des interfaces réseau de 10 Go. Ils ne se sont pas appuyés non plus sur le disque. Reposait sur les descripteurs de fichiers finis. La stabilité est venue après une mise à niveau de java-1.7.0-openjdk-1.7.0.55-2.4.7.1.el6_5.x86_64 vers jdk1.8.0_66-1.8.0_66-fcs.x86_64.
- Quels frais généraux la JVM apporte-t-elle avec Kafka? Une configuration spéciale de GC est-elle requise? Combien de mémoire une instance consomme-t-elle dans votre cas?12 Go de mémoire sont alloués, tout le reste est standard.
- Avez-vous dû utiliser des fonctionnalités spéciales de Kafka? Compaction du journal?Log Compaction utilisé pour certains sujets, mais pas pour le projet World of Tanks. Inclus sur des sujets spécifiques, mais le résultat n'est pas clair, personne n'a donné de feedback. Offsets.retention.minutes a également été augmenté jusqu'à sept jours, de sorte que les concierges qui lisent une fois par semaine continuent de lire là où ils se sont arrêtés.
- Quelles bibliothèques Python ont été utilisées pour travailler avec Kafka? Qu'avez-vous aimé?Un seul de
mes rapports sur Moscou Python Conf ++ portera sur l'expérience de l'utilisation de diverses bibliothèques Python pour Kafka dans WoT. Notre actif est Kafka-python, confluent-kafka-python, aiokafka. Chacune de ces bibliothèques a ses avantages et ses inconvénients.
- Que diriez-vous des avantages et des inconvénients du stockage basé sur fichiers par rapport à la mémoire en mémoire? Pour quels types de tâches pourriez-vous recommander l'un ou l'autre?Ici, le principe est simple. Sur le système de fichiers, il est plus fiable, mais plus lent. La mémoire est plus rapide, mais la fiabilité est plus faible. De plus, une limitation de volume importante: vous pouvez stocker des téraoctets dans le système de fichiers, mais nous utilisons toujours des gigaoctets en mémoire. De là, vous pouvez fantasmer beaucoup, à partir d'une implémentation spécifique.
Sur la base de ce qui précède: si vous en avez besoin rapidement, le volume est petit et la sécurité n'est pas importante, alors en mémoire, sinon nous regardons les fichiers.
- Des impressions générales de Kafka? Si vous deviez faire la même tâche maintenant, quitteriez-vous Kafka ou envisagez-vous d'autres solutions?Kafka est un outil simple et efficace pour fournir un accès de l'extérieur à de grandes quantités de données, qui peuvent ensuite être traitées lentement à des fins différentes, par différentes équipes à différents endroits. Dans WoT, nous avons de nombreux outils différents pour résoudre nos problèmes, donc là où il convient de choisir Kafka, nous choisissons Kafka, sinon, nous regardons d'autres outils.
Encore une fois, si vous êtes intéressé par les détails de notre expérience avec Kafka, venez à mon discours à
Moscow Python Conf ++ . J'espère que beaucoup le trouveront intéressant et utile.