PayPal åpnet JunoDB DBMS-koden

PayPal har åpnet kildekode for JunoDB, en feiltolerant DBMS som manipulerer data i nøkkelverdi-format. Systemet ble opprinnelig designet med høy sikkerhet, horisontal skalerbarhet, feiltoleranse og evnen til å håndtere hundretusenvis av samtidige tilkoblinger med forutsigbare forsinkelser i tankene. I PayPal er nesten alle tjenester, fra brukerinnlogging til behandling av økonomiske transaksjoner, knyttet til JunoDB. Prosjektkoden er skrevet i Go (Java-klientbibliotek) og distribuert under Apache 2.0-lisensen. I videre utvikling vil rettelser, forbedringer og endringer fra fellesskapet bli akseptert.

JunoDB-arkitekturen er basert på bruken av en lastbalanser som aksepterer forespørsler fra klientapplikasjoner og distribuerer dem blant proxy-servere som samtidig får tilgang til en gruppe lagringsservere når en forespørsel sendes. Hver proxy etablerer tilkoblinger til alle lagringsservere samtidig og omdirigerer forespørsler til en gruppe lagringsservere basert på partisjonsindeksen som er lagret i det distribuerte lagringssystemet til etcd-konfigurasjonen.

PayPal åpnet JunoDB DBMS-koden

Data er partisjonert og bundet til lagringsnoder ved å bruke hashing for å redusere databevegelse når noder vokser eller krymper i en klynge. For å sikre feiltoleranse, replikeres hver del av data på flere lagringsnoder, noe som lar deg lagre informasjon når individuelle servere svikter. Opprettelsen av geografisk distribuerte lagringer støttes, der grupper av noder er plassert i forskjellige datasentre.

PayPal åpnet JunoDB DBMS-koden

På lagringsnoder plasseres data i RAM eller i lokal lagring basert på RocksDB-biblioteket. Med vedvarende lagring lagres data i kryptert form (krypteringsnøkkelen kan bestemmes både av klienten og settes på proxy-nivå).

PayPal åpnet JunoDB DBMS-koden

For å få tilgang til databasen fra applikasjoner, leveres et klientbibliotek som gir en API for applikasjoner i Java, Go og C++. Klientdelen forenkles så mye som mulig, og kompleks logikk og innstillinger, hvis mulig, flyttes til siden av DBMS. Samhandlingen mellom klienten og balansereren eller proxyen utføres gjennom en kryptert kommunikasjonskanal. Du kan bruke et kommandolinjegrensesnitt til å administrere og sende forespørsler, som etterligner den fulle funksjonaliteten til klient-API.

Systemet er designet for å behandle forespørsler med forutsigbar lav latenstid, for eksempel en klynge med tre lagringsnoder og en proxy, dannet fra n1-highmem-32-miljøer (32 Intel Xeon 2.30GHz CPUer, 214G RAM og 450G SSD-basert lagring) , var i stand til å gi faste forsinkelser som ikke oversteg 2.5 ms i 95 % av tilfellene og 16 ms i 99 % ved behandling av 200 tusen samtidige TLS-tilkoblinger og en flyt på 15 tusen forespørsler per sekund (med 3000 samtidige tilkoblinger og en flyt på 80 tusen forespørsler per sekund oversteg ikke forsinkelsene 6 ms i 95 % av tilfellene og 15 ms i 99 %). Hos PayPal betjener JunoDB-baserte tjenester rundt 350 milliarder forespørsler per dag.

PayPal åpnet JunoDB DBMS-koden


Kilde: opennet.ru

Legg til en kommentar