PayPal heeft de JunoDB DBMS-code geopend

PayPal heeft de broncode van het fouttolerante DBMS JunoDB geopend, dat gegevens in een sleutelwaardeformaat manipuleert. Het systeem was aanvankelijk ontworpen met hoge beveiliging, horizontale schaalbaarheid, fouttolerantie en de mogelijkheid om honderdduizenden gelijktijdige verbindingen te verwerken met voorspelbare latenties in gedachten. Bij PayPal zijn bijna alle services, van gebruikersaanmeldingen tot het verwerken van financiële transacties, gekoppeld aan JunoDB. De projectcode is geschreven in Go (een Java-clientbibliotheek) en wordt gedistribueerd onder de Apache 2.0-licentie. Verdere ontwikkeling zal correcties, verbeteringen en veranderingen van de gemeenschap accepteren.

De architectuur van JunoDB is gebaseerd op het gebruik van een load balancer die verzoeken van clientapplicaties accepteert en deze verdeelt over proxyservers die tegelijkertijd toegang hebben tot een groep opslagservers wanneer het verzoek wordt uitgevoerd. Elke proxyserver brengt verbindingen met alle opslagservers tegelijk tot stand en stuurt verzoeken door naar een groep opslagservers op basis van de partitie-index, die is opgeslagen in de etcd-configuratie van het gedistribueerde opslagsysteem.

PayPal heeft de JunoDB DBMS-code geopend

Gegevens worden gepartitioneerd en gekoppeld aan opslagknooppunten met behulp van hashing, waardoor de gegevensbeweging wordt verminderd naarmate knooppunten in het cluster groter of kleiner worden. Om fouttolerantie te garanderen, wordt elk stukje data gerepliceerd op verschillende opslagknooppunten, waardoor u informatie kunt opslaan wanneer individuele servers uitvallen. Het creëren van geografisch gedistribueerde opslagplaatsen wordt ondersteund, waarbij groepen knooppunten zich in verschillende datacenters bevinden.

PayPal heeft de JunoDB DBMS-code geopend

Op knooppunten voor gegevensopslag bevinden ze zich in RAM of in lokale opslag op basis van de RocksDB-bibliotheek. Wanneer de gegevens permanent worden opgeslagen, worden ze in gecodeerde vorm opgeslagen (de coderingssleutel kan door de klant worden bepaald of op proxyniveau worden ingesteld).

PayPal heeft de JunoDB DBMS-code geopend

Om vanuit applicaties toegang te krijgen tot de database, wordt een clientbibliotheek meegeleverd die een API biedt voor applicaties in Java, Go en C++. Het clientgedeelte wordt zoveel mogelijk vereenvoudigd en complexe logica en instellingen worden waar mogelijk naar de DBMS-kant overgebracht. De interactie tussen de client en de balancer of proxy wordt uitgevoerd via een gecodeerd communicatiekanaal. Om verzoeken te beheren en te verzenden, kunt u de opdrachtregelinterface gebruiken, die alle mogelijkheden van de client-API repliceert.

Het systeem is ontworpen om verzoeken met voorspelbare lage latenties te verwerken, bijvoorbeeld een cluster van drie opslagknooppunten en één proxy, gevormd uit n1-highmem-32-omgevingen (32 Intel Xeon 2.30GHz CPU's, 214G RAM en 450G SSD-gebaseerde opslag) , was in staat om vaste vertragingen te bieden van niet meer dan 2.5 ms in 95% van de gevallen en 16 ms in 99% bij het verwerken van 200 gelijktijdige TLS-verbindingen en een stroom van 15 verzoeken per seconde (met 3000 gelijktijdige verbindingen en een stroom van 80 verzoeken per seconde bedroegen de vertragingen niet meer dan 6 ms in 95% van de gevallen en 15 ms in 99%). Bij PayPal verwerken de op JunoDB gebaseerde services ongeveer 350 miljard verzoeken per dag.

PayPal heeft de JunoDB DBMS-code geopend


Bron: opennet.ru

Voeg een reactie