|
|
Veröffentlicht am 25.09.2019 16:11:58
|
|
|
|

Traditionell benötigt ein System, das täglich eine Milliarde Transaktionen verarbeitet, Hunderte von VMs, PayPal erledigt alles mit nur 8 VMs und liefert eine schnelle Antwort bei 90 % CPU-Auslastung – eine Transaktionsdichte, die PayPal bisher nie erreicht hat, und der Prozess benötigt 1/10 der Zeit, was dem Unternehmen hilft, mit dem Wachstum Schritt zu halten, ohne die Recheninfrastruktur skalieren zu müssen und Kosten zu senken. Wie soll das gemacht werden?
PayPal hat sein System in den Akka-basierten Actor-Modus umgestellt. Im Artikel Squbs: PayPal verfolgt einen neuen reaktiven Ansatz beim Aufbau von Apps (Der Hyperlink-Login ist sichtbar.PayPal erklärt die Feinheiten des Prozesses. Sie haben Squbs jetzt als Open Source veröffentlicht und auf GitHub veröffentlicht (Der Hyperlink-Login ist sichtbar.)。
Wenn ein Projekt einen praktischen Ansatz ergreifen muss, erhält das Stateful-Service-Modell dennoch nicht genug Aufmerksamkeit. Um mehr über staatliche Dienstleistungen zu erfahren, empfehlen wir, die Gründe zu lesen, warum Sie jetzt weiterhin skalierbare staatliche Dienstleistungen aufbauen sollten (Der Hyperlink-Login ist sichtbar.), basiert dieser Artikel auf einer Rede von Caitie McCaffrey. Falls Sie dieser Artikel nicht überzeugt, gibt es auch WhatsApp, das Akkas Konkurrent Erlang für extrem hohen Durchsatz nutzt: Facebooks 19-Milliarden-Dollar-WhatsApp-Architektur (Der Hyperlink-Login ist sichtbar.)。
Der Grund für die Empfehlung des obigen Artikels ist, dass PayPal keine detaillierte Einführung in die Architektur bietet, sondern stattdessen mehr Zeit auf die Gründe für Akka und die Vorteile der Migration zu Akka verwendet. Aber dieser Artikel bietet dennoch wertvolle Ermutigung und Demonstration für die Praxis, "abseits der ausgetretenen Pfade zu gehen".
Was ist falsch daran, eine große Anzahl virtueller Maschinen für einen Dienst zu verwenden?
- Führe den Service mit sehr geringer Durchsatz, extrem kleinen virtuellen Maschinen aus. Der größte Vorteil akteurbasierter reaktiver Systeme besteht darin, dass sie die Rechenressourcen effizienter nutzen können, was die Größe des Systems erheblich reduzieren und die "einfache und grobe" automatische Skalierung traditioneller Praktiken vermeiden kann.
- Das belastet dein Netzwerk und deine Routing-Infrastruktur erheblich. Da Dienste tendenziell stärker miteinander verbunden sind, müssen Anfragen möglicherweise über viele Netzwerk-Hops laufen, was die Latenz erhöht und das Nutzererlebnis verschlechtert.
- Je größer es ist, desto teurer ist es. Dienste mit Hunderten virtueller Maschinen verursachen hohe inhärente Kosten in Bezug auf Management, Überwachung und ineffizientes Caching.
- Je kleiner es ist, desto agiler ist es. Die Bereitstellung von Diensten auf Hunderte von virtuellen Maschinen ist ein zeitaufwändiger Prozess.
- Holen Sie mehr aus mehr CPU auf jeder virtuellen Maschine heraus. Da CPUs nicht weiter beschleunigt werden können, muss die Infrastruktur in der Lage sein, mehr CPUs auf jeder virtuellen Maschine effizienter zu nutzen.
- Microservices müssen mit locker gekoppelten NanoServices gebaut werden, die einfach zu warten und schnell zu bauen sind. Niemand möchte mit einem komplexen System mit vielen Schichten zu tun haben, und man braucht mehr Transparenz in die Rolle verschiedener Services, ohne tief in Code-Schichten eintauchen zu müssen.
Vor diesem Hintergrund wollte PayPal ein System aufbauen, das:
- Skalierbar, nicht nur um horizontal auf Hunderte von Knoten zu skalieren, sondern auch um auf mehr Prozessoren zu skalieren, um das Ziel zu erreichen, Milliarden von Anfragen pro Tag zu verarbeiten.
- Niedrige Latenz und kann mit extrem feiner Granularität kontrolliert werden.
- Seien Sie widerstandsfähig angesichts von Misserfolgen.
- Flexible Anpassung der Dienstgrenzen.
- Förderung von Skalierbarkeit und Einfachheit durch Programmiermodelle und -kultur sowie einfachere Fehler- und Fehlerbehandlungsmechanismen.
Es besteht kein Zweifel, dass PayPal einen "dünneren" Stack verwenden möchte, und sie wollen nicht, dass ihr Stack viele Technologien und bewegliche Teile auf verschiedenen Ebenen enthält. Im Allgemeinen sind Akka und staatbasierte Systeme für diesen Bedarf gut geeignet, da der Stapel großer Komponenten in eine einzige Technologie "zerlegt" werden kann. PayPal hat Akka Erlang vorgezogen, weil sie mehr Erfahrung mit Java haben, das über Java läuft. Für viele Menschen ist es nicht realistisch, Erlang von Grund auf zu lernen.
Mit Akka können sie:
- Schreibe Code, der leichter zu erklären ist
- Schreibe Code, der leichter zu testen ist
- Fehler- und Ausfallszenarien werden natürlicher gehandhabt als bei traditionellen Modi mit JVM
- Schnellerer, robusterer und einfacherer Code schreiben, um Fehler flüssiger zu behandeln und die Anzahl der Fehler zu reduzieren
PayPal schrieb sofort sein eigenes Framework basierend auf Akka, das Squbs genannt wurde und mit "Cubes" reimte. Dadurch können Sie eine modulare Technologieschicht für den Aufbau eines NanoService namens "Cube" erstellen. Die Würfel sind symmetrisch, und die Abhängigkeiten zwischen verschiedenen Würfeln sind ebenfalls symmetrisch und locker, sodass nur die Nachrichtenschnittstellen sichtbar werden, die Akka bereits bereitstellt.
Es beschreibt auch die Schwierigkeiten, denen Programmierer bei der Einführung von AKKA-Code begegnen können, da man möglicherweise auch jemanden einstellen muss, der in Akka/Scala ausgebildet ist.
Da die meisten Dienste ähnliche Zwecke verfolgen: Anfragen empfangen, Datenbanken aufrufen, lesen und schreiben, andere Dienste aufrufen, Regel-Engines aufrufen, Daten aus Caches abrufen, in Caches schreiben ... Daher können Dienste durch Muster wie Orchestrator Pattern und Perpetual Stream abstrahiert werden.
Squbs ist zu einer Standardpraxis bei PayPal geworden, um reaktive Anwendungen auf Basis von Akka zu entwickeln. Wenn dein Team noch keine zustandsvollen Systeme in Betracht gezogen hat, lohnt es sich wahrscheinlich, es auszuprobieren, da es bei PayPal, Facebook, Uber und Microsoft gut funktioniert.
|
Vorhergehend:Drei Faktoren, die mich dazu bringen, Chrome abzulehnenNächster:vs einen Ordner erstellen, und beim Erstellen der Lösung befindet sich niemand unter der BIN-Datei
|