T + Conf 2019: Tarantool bei Aeroflot oder MDM on the fly



Heute veröffentlichen wir eine Abschrift des Berichts von Nikolai Shevtsov und Rustam Kildiev mit T + Conf 2019 " Tarantool in Aeroflot oder MDM (Master Data Management) on the fly ". Aus dem Bericht erfahren Sie:

  • Warum wird MDM benötigt?
  • Warum brauche ich Echtzeit?
  • Data Science ist mehr als nur ein Jupyter-Notizbuch.
  • Vorteile von Tarantool.
  • Warum Lua gut verkaufen kann.

Die Informationstechnologie hilft unserem Unternehmen aktiv dabei, Kunden zu gewinnen. Heute führen wir aktiv eine Reihe von Big Data-Projekten ein. Dies sind Marketingprojekte, die uns bei der Datensegmentierung und der Bereitstellung von Informationen für Kunden, bei der Sozialforschung, bei der Bearbeitung von Beschwerden und Beschwerden und vielem mehr helfen. Darüber hinaus werden mehrere Projekte durchgeführt, die dazu beitragen, die Rentabilität und Rentabilität des Unternehmens zu steigern. Eines der Projekte ist beispielsweise die Analyse des verfügbaren Gepäcks an Bord, um Überschüsse rechtzeitig zu verkaufen oder den Ausfall einzelner Komponenten und Ersatzteile von Flugzeugen für eine rechtzeitige Wartung vorherzusagen.

In der Anrufbearbeitungsplattform verwenden wir Tarantool aktiv und ein wenig mehr darüber.

Der Hauptwert von Big Data ist für uns die Fähigkeit, Daten zu analysieren. Wir versuchen, alle neuen Informationsquellen in Bezug auf Aeroflot in einem einzigen Informationsfeld zur weiteren Verarbeitung zu sammeln.

Nikolay Shevtsov, Aeroflot. Projektleiter in der Abteilung Informationssysteme.

Wie kaufen Leute normalerweise ein Ticket? Es gibt eine Idee über die Reise, eine Person teilt sie mit Freunden und Verwandten in sozialen Netzwerken und Foren und kauft dann ein Ticket auf der Website. Es gibt viele Informationsquellen, und unsere Aufgabe ist es, alle zu sammeln und zu analysieren, um die Einstellung der Passagiere zum Service und zur gesamten Fluggesellschaft zu verstehen.

Eines unserer Projekte heißt Call Platform. Wir sammeln alle Bewertungen, Einsprüche und Beschwerden aus zahlreichen Quellen. "Plattform" ist unser einzelnes Erfassungsfenster auf der Website oder in der mobilen Anwendung, über das wir Informationen von Benutzern erhalten. Wir sammeln auch Aeroflot-bezogene Social-Media-Bewertungen.

Viele Aeroflot-Abteilungen sind an der Bearbeitung von Beschwerden und Beschwerden beteiligt: ​​Mitarbeiter, die an Bord Dienstleistungen erbringen, im Abflugbereich, im Ankunftsbereich usw. Die meisten Beschwerden, etwa 2,5 Tausend pro Tag, kommen von ankommenden Passagieren, die Probleme haben. Jede Beschwerde muss bearbeitet, klassifiziert und an die entsprechende Abteilung an einen bestimmten Mitarbeiter weitergeleitet werden, der das Problem des Passagiers lösen kann. Identische Beschwerden können gruppiert werden, um Zeit zu sparen, die Situation zu analysieren und eine Entscheidung zu treffen.

Ziel des Projekts ist es, die Bearbeitung von Anträgen zu optimieren und die Bearbeitungszeit zu verkürzen. Dazu musste ein System erstellt werden, das zum Zeitpunkt einer Beschwerde automatisch das Thema ermittelt und an die zuständige Abteilung an den zuständigen Mitarbeiter sendet. Bei der Bearbeitung einer Beschwerde muss das System alle verfügbaren Informationen über den Kunden bis zu seinem Profil, geplanten zukünftigen Flügen usw. finden.

Zu Beginn des Projekts haben wir verschiedene Tools in Betracht gezogen, die uns in dieser Angelegenheit helfen könnten, und uns schließlich für Tarantool entschieden. Das Leben hat gezeigt, dass dies die richtige Wahl war: Es ermöglicht Ihnen, die SLA-Anforderungen zu erfüllen und gleichzeitig mit zunehmender Belastung gut zu skalieren.

Implementierung


Aeroflot hat eine Plattform für die Bearbeitung von Beschwerden eingeführt. Hierbei handelt es sich um ein Repository unstrukturierter Informationen, auf deren Grundlage die Analyse und Synthese eindeutiger Kundenprofile durchgeführt wird.


Die auf Anfrage eingegangenen Informationen müssen verarbeitet und systematisiert werden. Einsprüche sind Text, der nicht in einer Rohform gespeichert werden kann, sodass der gesamte Text vektorisiert wird. Es wird nach einer Reihe von Treffern gesucht, eine Karte mit eindeutigen Wörtern und Phrasen wird erstellt, auf deren Grundlage der Anfangsvektor berechnet wird, um alle nachfolgenden Treffer umzuwandeln. Zunächst verwendeten unsere Datenanalysespezialisten klassische Tools - Python und Jupyter Notebook - auf einem Cluster oder einem lokalen Laptop. Der Vektor hat eine dynamische Größe, was zu Schwierigkeiten führt.

Im Gegensatz zu vielen anderen Tools ist Tarantool ein vollständiger Anwendungsserver. Wir können viele Bibliotheken wie SciLua verwenden, Logik in einer regulären Programmiersprache schreiben usw. Jetzt vektorisieren wir Daten mithilfe der SicLua-Bibliothek in Echtzeit direkt in Tarantool. Dann sucht das System unter Verwendung der Kosinusdistanzmethode für einen Zeitraum von drei Monaten nach einem ähnlichen Vektor. Infolgedessen erhalten wir entweder einen doppelten oder einen ähnlichen Aufruf zur weiteren Verarbeitung. Während des Suchvorgangs werden viele mathematische Berechnungen durchgeführt: In 3 Monaten werden ungefähr 100.000 Anrufe aus allen verfügbaren Quellen verarbeitet. Die durchschnittliche Bearbeitungszeit beträgt 120 ms.

Rustam Kildiev, CTO bei Innodata.

Infrastruktur


Unsere Tarantool-Datenbank läuft auf vier 16-Core-Servern mit viel RAM. Dank des Vshard-Moduls war es möglich, eine schnelle Suche mit Brute Force durchzuführen. Die Daten sind in Teile-Buckets unterteilt, so dass die Abfrageverarbeitung parallelisiert wird. Das System ist einfach zu skalieren. Fügen Sie einfach einen Server hinzu. Wir haben die Master-Master-Replikation implementiert, obwohl die meisten DBMS jetzt dazu kommen. Außerdem müssen wir keine Module hinzufügen, es gibt keine Probleme mit der Verwaltung.

Wenn wir aus dem RAM zählen, beträgt unsere Datenmenge etwa 1 TB. In der Phase des Startens, Debuggens und Behebens von Fehlern im Projekt traten Probleme auf. Fast alle Tabellen enthalten 7-8 Indizes, daher dauerte die Tarantool-Datenbank für 1 TB 20-40 Minuten, was nicht akzeptabel ist. Während des Startvorgangs erstellt das System Indizes. Wenn Sie diese entfernen, wird das Laden viel schneller. In dieser Situation hat uns die Hot-Standby-Funktion geholfen.

Pläne


Sowohl der Kunde als auch wir, die Darsteller, mochten Tarantool. Wir haben andere Basen in Betracht gezogen, aber am Ende haben wir uns für Tarantool entschieden. Erstens brauchten wir eine sehr schnelle Basis. Zweitens muss es viel damit arbeiten, Logik schreiben usw., also war die vollwertige Lua ein Vorteil für uns. Drittens schreibt Tarantool sofort auf die Festplatte und macht keine Schnappschüsse. Dies ist auch gut für uns, denn obwohl viele Kunden anrufen, können wir es uns nicht leisten, auch nur einen zu verlieren.

Tarantool hat seine Nützlichkeit in der Produktion bewiesen, und wir werden noch mehr Daten darin laden und Geschäftslogik hinzufügen. Im Gegensatz zu anderen Datenbanken muss es nicht ständig aktualisiert und etwas geändert werden. Die Konvertierung und das Laden von Daten aus einem anderen System in Tarantool erfolgt übrigens automatisiert und wird täglich durchgeführt.

In Zukunft planen wir einen Wechsel zu Tarantool Enterprise, mit dem wir mehrere Tarantool-Instanzen bequem verwalten und konfigurieren können. Es gibt noch wenige Spezialisten in dieser Datenbank, und der Bedarf an Spezialisten wächst ständig. Unsere Qualifikationen reichen manchmal nicht aus. In solchen Fällen hilft der interne Chat des Tarantool-Entwicklers, in dem Sie um Hilfe bitten können. Dies ist in keinem anderen System der Fall.

Wir planen auch ein Upgrade auf Tarantool2 und SQL. Es gibt viele SQL-Experten auf dem Arbeitsmarkt, daher wird der Übergang nicht sehr schwierig sein.

Ergebnisse


Das Hauptproblem dieses Projekts war Lua. Nur wenige Entwickler wissen es, aber sie lieben es noch weniger. Anfangs haben wir in einer anderen Sprache geschrieben, aber aufgrund der großen Anzahl von Anfragen arbeitete das System langsam. Daher haben wir alles mit Lua für eine lange Zeit und Schmerzen kopiert, aber als Ergebnis arbeitet das System klar und schnell, mit einer kleinen Anzahl von Korrekturen und Releases. Lua kommt dem Maschinencode sehr nahe und ist eine der schnellsten Sprachen aus der C-Familie. Obwohl es sich um eine kleine Skriptsprache handelt, verfügt sie über alle erforderlichen Bibliotheken, und wir konnten Such-, Vektorisierungs-, Kosinusabstands- usw. Algorithmen übertragen.

Tarantool ist sehr fehlertolerant und funktioniert sofort. Wir haben zahlreiche Experimente durchgeführt: Tarantool ausgeschaltet, angehoben usw. - Alles funktioniert einwandfrei und Zwischendaten werden auf die Festplatte geschrieben, damit wir keine Daten verlieren.

All Articles