Menu

Hoe PayPal opschaalde naar miljarden transacties per dag met slechts 8 VM's

Hoe kreeg Paypal een miljard hits per dagsysteem dat normaal gesproken op honderden VM's draait en verkleinde het tot 8 VM's, bleef responsief, zelfs bij 90% CPU, met transactiedichtheden die Paypal nog nooit eerder heeft gezien, met taken die 1 Voor de tiende keer, terwijl de kosten worden verlaagd en de organisatie veel beter kan groeien zonder de computerinfrastructuur te laten groeien?

PayPal is overgestapt op een Akka-gebaseerd Actor-model. Hier is hoe PayPal hun verhaal vertelde: PayPal's squibs: een nieuwe, reactieve manier om applicaties te bouwen Squbs is open source en kan hier worden gevonden: GitHub gebruikers squabs

Wanneer projecten beslissen hoe het verder moet, wordt nog steeds voldoende rekening gehouden met het stateful service-paradigma. Een pleidooi houden voor het bouwen van schaalbare stateful services in het moderne tijdperk, gebaseerd op een prachtige lezing van Caitie McCaffrey, is een uitstekend artikel om meer te weten te komen over stateful services.

Omdat het PayPal-artikel architectonische bijzonderheden mist, verwijs ik naar bovenstaande artikelen. Het gaat meer om de elementen die hun beslissing hebben beïnvloed om Akka te gebruiken en de voordelen die ze daarmee hebben behaald. Het dient echter als een krachtige motivator om iets ongewoons van de norm te doen.

Wat is er mis met services op veel VM's?

  • Services gebruiken zeer kleine virtuele machines (VM's) en leveren een zeer lage doorvoer per VM. Op acteurs gebaseerde reactieve systemen blinken uit in het efficiënt gebruiken van computerbronnen. Als gevolg hiervan kunt u, in plaats van te vertrouwen op de conventionele auto-scaling kolos, de grootte van uw systeem drastisch verminderen.
  • De netwerk- en routeringsinfrastructuur staan onder grote druk. Verzoeken kunnen via veel hops verlopen omdat services vaak met elkaar verbonden zijn, wat vertraging toevoegt en de gebruikerservaring verslechtert.
  • Groter is duurder. In termen van beheer, monitoring en slechte caching hebben services die honderden virtuele machines beslaan, hoge inherente kosten.
  • Kleiner is wendbaarder. Het implementeren van services op honderden virtuele machines duurt lang.
  • Verhoog het aantal CPU's per virtuele machine. Omdat CPU's niet sneller worden, moet uw infrastructuur meer CPU's per VM efficiënt kunnen gebruiken.
  • Microservices must be constructed on a foundation of loosely linked nano services that is straightforward to maintain and deploy. Layers and layers of complexity aren't what you desire. You must have a clear understanding of what a service accomplishes. To figure things out, you shouldn't have to sift through layers and layers of code.

Gezien bovenstaande krachten wilde PayPal een systeem met de volgende kenmerken:

  • Schaalbaar, zowel horizontaal naar honderden nodes als verticaal naar zeer veel processors, die miljarden verzoeken per dag verwerken
  • Lage latentie, regelbaar met een zeer fijne korrel
  • Veerkrachtig tegen falen
  • Flexibiliteit bij het aanpassen van de servicegrenzen
  • Een programmeermodel EN een cultuur die schaalbaarheid en eenvoud aanmoedigt, inclusief schone fouten en foutafhandeling.

PayPal wilde duidelijk een slankere stapel. Ze wilden geen stapel met veel bewegende stukken of niveaus. Akka en state-based systemen in het algemeen zijn hiervoor ideaal omdat ze een groot deel van de stack reduceren tot één enkele technologie. PayPal koos Akka boven Erlang omdat ze veel Java-kennis hebben en Akka is een op Java gebaseerd framework. Voor veel mensen is het leren van Erlang een no-go.

Met Akka Konden ze:

  • schrijf code waar gemakkelijk over te redeneren is
  • schrijf code die gemakkelijk te testen is
  • omgaan met fouten en faalscenario's natuurlijker in vergelijking met het traditionele model dat wordt gebruikt op de JVM
  • schrijf snellere, veerkrachtige en eenvoudigere code met gestroomlijnde foutafhandeling en minder bugs

Dus, zoals je zou verwachten, bouwde PayPal hun eigen raamwerk bovenop Akka, squabs genaamd, dat rijmt op kubussen en een modulaire laag creëert voor het ontwikkelen van nanoservices die 'kubussen' worden genoemd. Kubussen zijn symmetrisch ten opzichte van elkaar, hun onderlinge afhankelijkheden zijn los en symmetrisch, en ze bieden gewoon de berichteninterface die Akka al biedt.

De moeilijkheden van programmeurs die zich aanpassen aan de niet-lineaire aard van Akka-code worden vermeld in de post, dus u zult werknemers moeten inhuren die kunnen worden opgeleid om zich in Akka/Scala te ontwikkelen.

Ze waren in staat om dat te abstraheren met behulp van patronen zoals het Orchestrator Pattern en Perpetual Stream, aangezien de meeste services vergelijkbare dingen doen: verzoeken ontvangen, database-aanroepen doen om de database te lezen/schrijven, andere service-aanroepen doen, een rule-engine aanroepen, gegevens ophalen van de cache, schrijf naar cache.

Bij PayPal is Squbs de de facto standaard geworden voor het ontwikkelen van op Akka gebaseerde reactieve apps. Dus als je stateful systemen nog niet hebt overwogen voor je team, doe dat dan nu. PayPal, Facebook, Uber en Microsoft hebben het allemaal gebruikt.Als er een probleem is, neem dan contact met mij op via Bellen Paypal Klatenservice Telefoonnummer.

Je bent ook Lees meer:-Fout bij Google Play-transactie kan niet worden voltooid

Go Back

Comment

Blog Search

Comments

There are currently no blog comments.