Wie kann Software Milliarden von Transaktionen verarbeiten, ohne eine einzige Transaktion zu verpassen? In diesem Beitrag werde ich das Geheimnis der Lösung des Uber-Ingenieurs lüften und leicht erklären, wie alles funktioniert.
Wie Uber funktioniert
Klicken Sie auf eine Schaltfläche, mit der Sie Geld für eine Fahrt von einem Ort zum anderen bezahlen können – Warten Sie auf Ihren Fahrer – Steigen Sie ins Auto und erreichen Sie Ihr Ziel. Gehen Sie, und dann zahlt Uber das Geld, das dem Fahrer geschuldet wird. Ziemlich einfach, oder?
Fügen Sie jetzt 100 Millionen Nutzer hinzu!
Hinter den Kulissen wickelt Uber jede Sekunde ein unvorstellbares Volumen an Transaktionen ab, Milliarden von Fahrten und Geld im Wert von Hunderten von Milliarden, die um die Welt gereicht werden.
Wie bewältigt Uber diese Komplexität reibungslos und sicher?
Die Herausforderung von Milliarden von Zahlungen
Mit dem Wachstum von Uber stieg auch das Volumen der Transaktionen, die verarbeitet werden mussten. In den Anfangstagen hatten die anfänglichen Zahlungssysteme von Uber zu kämpfen und sahen sich mit Problemen wie Instabilität und Verzögerungen bei den Zahlungen konfrontiert.
Wenn es jedoch eine Sache gibt, die Uber einfach nicht vermasseln kann, dann ist es der Umgang mit Geld. Ihr System war völlig durcheinander. Zahlungsunstimmigkeiten und einfach nur große Verzögerungen waren überall
Stell dir vor, du wärst ein Uber-Fahrer, der zwei Tage am Stück fährt und aufsteht. Dann passiert ein Cyberangriff und dann sind alle Ihre Zahlungen, die Sie in den letzten Tagen erwartet haben, einfach weg. Die Abwicklung von Milliarden von Transaktionen war nicht einfach, und Uber brauchte eine Lösung, die mit der schnell wachsenden Größe Schritt halten konnte. Zu diesem Zeitpunkt traf Uber eine große Entscheidung: Er entschied sich für ein robusteres Zahlungssystem.
Die Umstellung auf ein robustes Zahlungssystem
Um dieser wachsenden Nachfrage gerecht zu werden, hat Uber von einem monolithischen System (eine einzelne oder nur eine große Anwendung) zu Microservices übergegangen – kleinere, unabhängige Dienste, die zusammenarbeiten, aber getrennt voneinander funktionieren können.
Durch die Aufteilung des Systems in kleinere Teile konnte Uber jeden Teil unabhängig voneinander skalieren und so reibungslosere Transaktionen für jeden Benutzer gewährleisten.
Zum Beispiel
Ein Microservice kann für die Verarbeitung von Fahrtenzahlungen verantwortlich sein, ein anderer für die Verarbeitung von Rückerstattungen und ein anderer für die Anwendung von Werbeaktionen.
Diese Aufgabentrennung bedeutete, dass jeder Microservice einen bestimmten Teil des Transaktionsprozesses bewältigen konnte, wodurch das gesamte System durch die Verteilung der Last flexibler und effizienter wurde.
Doppelte Buchführung: Sicherstellung der finanziellen Integrität
Bei so vielen Zahlungen ist finanzielle Genauigkeit von entscheidender Bedeutung. Uber hat die doppelte Buchhaltung eingeführt, um sicherzustellen, dass jede Transaktion korrekt aufgezeichnet wird.
Stellen Sie sich das so vor, als würden Sie Ihr persönliches Scheckbuch ausgleichen: Jedes Mal, wenn Sie Geld ausgeben, notieren Sie es, aber Sie behalten auch den Überblick, wohin es gegangen ist. Auf diese Weise können Sie, wenn etwas nicht stimmt, zurückverfolgen, um zu sehen, was passiert ist.
Das Gleiche gilt hier
Haben Sie den Fall Uber Driver oben gelesen? Hier ist die Lösung von Uber: Für jeden berechneten Fahrpreis gibt es an anderer Stelle einen entsprechenden Datensatz, um ihn zu überprüfen.
Dies erleichtert das Aufspüren und Beheben von Unstimmigkeiten.
Grundsätzlich handelt es sich um ein System, das häufig im Finanzwesen verwendet wird und Uber hilft, auch bei großen Transaktionsvolumina die finanzielle Genauigkeit zu wahren.
Die Bedeutung unveränderlicher Datenbanken
Nun, zunächst einmal sind die meisten Datenbanken nicht unveränderlich.
Wenn ich meinen Namen auf einer Website ändern möchte, wechselt die Datenbank nach dem Ändern im Formular zu dem vorhandenen Eintrag und aktualisiert ihn dann, wobei der vorherige Wert entfernt wird. Dies liegt daran, dass es veränderlich ist (geändert werden kann).
Wenn ich dies mit einer unveränderlichen Datenbank versuchen würde, müsste sie eine brandneue Zeile mit den neuen Informationen erstellen und vorhandene Informationen duplizieren. Dann müsste ich mir in der Benutzeroberfläche die neueste Version davon holen.
Das ist also offensichtlich nicht gut und so verschwenderisch.
Uber hat ein Nur-Anhänge-System entwickelt, was bedeutet, dass Datensätze nur hinzugefügt, nicht gelöscht werden.
Was ist, wenn ich bei einer Transaktion einen Fehler gemacht habe?
Stellen Sie sich vor, ich habe eine Fahrt für 10 US-Dollar genommen, aber aufgrund eines Fehlers hat mir das System 15 US-Dollar in Rechnung gestellt. Anstatt die Transaktion einfach zu löschen und zu aktualisieren, um sie zu korrigieren, würde das Nur-Anfüge-System von Uber einen neuen Eintrag hinzufügen und 5 $ auf mein Konto zurückerstattet.
Man repariert Dinge, indem man bis zum Ende addiert oder subtrahiert, nicht indem man ersetzt
Einführung des Ledger Store für effizientes Datenmanagement
Um Milliarden von Transaktionen zu verwalten, hat Uber einen Ledger Store entwickelt – eine spezialisierte Datenbank für das Transaktionsmanagement.
Stellen Sie es sich wie ein riesiges Hauptbuch oder Rekordbuch für alle Uber-Transaktionen vor. Dieses Ledger speichert nicht nur jede Transaktion, sondern enthält auch zusätzliche Schritte zur Validierung und Sicherung der Daten.
Das bedeutet, dass Sie für Transaktionen, die im letzten Monat stattgefunden haben, überprüfen und überprüfen können, ob sie korrekt sind, sodass sie jetzt schreibgeschützt sind.
Das System von Uber verwendet eine Versiegelung, um zu bestätigen, dass jede Transaktion echt und unverändert ist. Es verfügt auch über eine Manifestvalidierung, um sicherzustellen, dass alle Transaktionen berücksichtigt werden. Das macht den Ledger Store von Uber zu einem supersicheren Store.
Sie migrierten ihre alten Transaktionsaufzeichnungen von 250 Milliarden in dieses Hauptbuch!
Bewältigung der Herausforderung der Migration
Als Uber auf sein neues Zahlungssystem umstellte, musste das Unternehmen 250 Milliarden Datensätze bewegen, ohne die laufenden Zahlungen zu unterbrechen.
Es ist in etwa so, als würde man eine riesige Bibliothekssammlung von einem Gebäude in ein anderes verlegen, während jedes Buch den Lesern zur Verfügung steht.
Um dies zu erreichen, verwendete Uber ein Checkpoint-System, bei dem in jeder Phase Schnappschüsse der Bibliothek gemacht wurden, um sicherzustellen, dass nichts verloren ging.
Jeder „Checkpoint“ stellte sicher, dass die Daten sicher übertragen wurden, bevor sie zum nächsten Batch verschoben wurden, so dass Uber die Daten reibungslos und ohne Unterbrechungen migrieren konnte. Dieser sorgfältige Ansatz stellte sicher, dass die Benutzer während der Migration nie auf Zahlungsprobleme stießen.
Der Shadow Rider für einen reibungslosen Datenvergleich
Beim Wechsel von alten zu neuen Systemen hat Uber ein Tool namens Shadow Rider entwickelt. Der Shadow Rider befindet sich zwischen zwei Datenbanken, der aktuellen und der Datenbank, zu der er migrieren wollte.
Wenn in der alten Datenbank z. B. angezeigt wird, dass ein Benutzer 10 US-Dollar für eine Fahrt bezahlt hat, müssen in der neuen Datenbank ebenfalls 10 US-Dollar angezeigt werden.
Wenn es eine Nichtübereinstimmung gibt, meldet Shadow Rider sie, bevor sie Probleme für den Benutzer verursachen kann. Dies gewährleistet die Genauigkeit und Konsistenz der Daten über alle Systeme hinweg während des Übergangs.
Indizierung für massive Skalierung
Uber verwaltet Billionen von Transaktionen, was bedeutet, dass es schnell eine enorme Menge an Daten verarbeiten muss.
Um diesen Prozess zu beschleunigen, hat Uber Milliarden von Indizes erstellt.
Wenn Sie beispielsweise schnell eine bestimmte Seite in einem Buch finden müssten, wäre das Durchblättern jeder einzelnen Seite anstrengend und langsam. Hier kommen Indizes ins Spiel – sie verhalten sich wie Lesezeichen oder Beschriftungen, die es dem System ermöglichen, direkt zu den benötigten Informationen zu springen.
Fazit
Die Ingenieure von Uber haben ein Zahlungssystem entwickelt, das sowohl leistungsstark als auch widerstandsfähig ist und Milliarden von Transaktionen verwaltet und sie gleichzeitig sicher und genau hält.
Durch die Entwicklung von Tools wie dem Ledger Store und Shadow Rider und die Verwendung von Methoden wie doppelter Buchhaltung und unveränderlichen Datenbanken stellt Uber sicher, dass jede Zahlung nahtlos verarbeitet wird.
Bei der Abwicklung von Billionen von Transaktionen geht es nicht nur um Skalierbarkeit – es geht um Präzision, Konsistenz und Sicherheit.
Ein weiterer Beitrag: 3 Herausforderungen für Entwickler – und wie man sie meistert