Kafka bei Wargaming: Ein Blitz

    Warum Kafka? Was sind Ihre Gesamteindrücke? Wie setzen sich die Cluster zusammen? Unter dem Strich - ein Dutzend kurze Fragen an Levon Avakyan, der bei Wargaming für Zuverlässigkeit, Anwendungsarchitektur, Infrastruktur und Produktion verantwortlich ist.



    - Wie hast du dich für Kafka entschieden? Was wurde vorher verwendet? Welche Alternativen wurden in Betracht gezogen?

    Keine sehr richtige Frage in Bezug auf die Panzerentwicklung. Apache Kafka wurde bereits im Unternehmen für die Anforderungen unseres Data Warehouse verwendet, und anfangs gab es eine Integrationsaufgabe, und erst dann sahen wir, dass Kafka für verschiedene Aufgaben verwendet werden kann.

    - Wie viele Ereignisse werden von Ihrem Spielecluster generiert?

    Ein Panzercluster ist ein Cluster von Clustern, das System ist verteilt und generiert Ereignisse in verschiedenen Kafka. Alle Cluster generieren durchschnittlich 12.000 Nachrichten, bei den Spitzenwerten etwa 30.000 Nachrichten pro Sekunde.

    - Und wie viele Cluster hast du und wie ist ihre Zusammensetzung?

    Der größte zentrale Cluster besteht aus fünf Eisenknoten. Kleinere Cluster, die nur die Tankperipherie bedienen, bestehen aus jeweils drei Knoten plus virtuellen Maschinen. Wir haben vier lokale Cluster für die GUS-Region.

    - Wie viele Produzenten und Konsumenten sind Sie? Was sind die Lese- / Schreibraten?

    Gute Frage. Für die lokale Peripherie von Kafka ist der Produzent einer - ein Panzercluster, und es gibt Dutzende von Verbrauchern. Nach Raten: Bis zu 75.000 Nachrichten pro Sekunde werden im zentralen Cluster geschrieben, im Durchschnitt 12.000, in lokalen bis zu 7.000 und im Durchschnitt 3.000.

    - Wie groß sind deine Ereignisse in Kafka? Gibt es Lieferfristen?

    Limit 1 MB - sonst niemand gefragt. Für einige Verbraucher gelten Lieferfristbeschränkungen, für andere gelten keine Lieferfristbeschränkungen. Einige lesen einmal pro Woche.

    - Sind Sie beim Sharding oder Replizieren auf interessante Funktionen und Fehler gestoßen?

    Datenverlust während der Wiederwahl aufgrund von Themeneinstellungen. Eine schmutzige Wiederwahl war erlaubt und der falsche ISR wurde gewählt.

    - Sind Sie jemals auf eine Festplatte oder ein Netzwerk gestoßen?

    Sie waren nicht im Netzwerk, wir haben 10-Gbit-Netzwerkschnittstellen. Sie ruhten auch nicht an der Scheibe. Ruhte auf den fertigen Dateideskriptoren. Die Stabilität trat nach einem Upgrade von java-1.7.0-openjdk-1.7.0.55-2.4.7.1.el6_5.x86_64 auf jdk1.8.0_66-1.8.0_66-fcs.x86_64 auf.

    - Welchen Overhead bringt die JVM mit Kafka? Muss gc speziell konfiguriert werden? Wie viel Speicher verbraucht eine Instanz in Ihrem Fall?

    12 GB Speicher sind reserviert, alles andere ist Standard.

    - Mussten Sie irgendwelche Besonderheiten von Kafka nutzen? Verdichtung protokollieren?
    Verwendete Protokollkomprimierung für einige Themen, jedoch nicht für das World of Tanks-Projekt. Eingeschlossen zu bestimmten Themen, aber das Ergebnis ist nicht klar, gab niemand Feedback. Offsets.retention.minutes wurde ebenfalls auf sieben Tage erhöht, so dass Concierges, die einmal in der Woche lesen, weiterhin dort lesen konnten, wo sie aufgehört hatten.

    - Welche Python-Bibliotheken wurden für die Arbeit mit Kafka verwendet? Was hat dir gefallen

    In einem meiner Berichte über Moscow Python Conf ++ geht es um die Erfahrung mit der Verwendung verschiedener Python-Bibliotheken für Kafka in WoT. Unser Kapital ist Kafka-Python, Confluent-Kafka-Python, Aiokafka. Jede dieser Bibliotheken hat ihre Vor- und Nachteile.

    - Was sagen Sie zu den Vor- und Nachteilen der dateibasierten Speicherung im Vergleich zur speicherinternen Speicherung? Für welche Art von Aufgaben könnten Sie die eine oder andere empfehlen?

    Hier ist das Prinzip einfach. Auf dem Dateisystem ist es zuverlässiger, aber langsamer. Der Speicher ist schneller, aber die Zuverlässigkeit ist geringer. Eine wichtige Einschränkung des Volumens: Sie können Terabyte im Dateisystem speichern, aber wir verwenden immer noch Gigabyte im Speicher. Ab hier kann man ab einer konkreten Umsetzung viel fantasieren.

    Basierend auf dem oben Gesagten: Wenn es schnell gehen muss, ist das Volumen klein und die Sicherheit nicht wichtig, dann im Arbeitsspeicher, ansonsten sehen wir dateibasiert aus.

    - Allgemeine Eindrücke von Kafka? Wenn Sie jetzt die gleiche Aufgabe erledigen würden, würden Sie Kafka verlassen oder in Richtung anderer Lösungen schauen?

    Kafka ist ein gutes und einfaches Werkzeug, um von außen auf große Datenmengen zuzugreifen, die dann langsam von verschiedenen Teams an verschiedenen Orten für verschiedene Zwecke verarbeitet werden können. In WoT haben wir viele verschiedene Tools, um unsere Probleme zu lösen. Wo es also angebracht ist, sich für Kafka zu entscheiden, entscheiden wir uns für Kafka. Wo nicht, schauen wir uns andere Tools an.

    Wenn die Details unserer Erfahrung mit Kafka interessant sind, kommen Sie zu meinem Vortrag bei Moscow Python Conf ++ . Ich hoffe, viele finden es interessant und nützlich.

    Jetzt auch beliebt: