PayPal öppnade JunoDB DBMS-koden

PayPal har öppnat källkoden för det feltoleranta DBMS JunoDB, som manipulerar data i ett nyckel-värde-format. Systemet designades från början med hög säkerhet, horisontell skalbarhet, feltolerans och förmågan att hantera hundratusentals samtidiga anslutningar med förutsägbara latenser i åtanke. Hos PayPal är nästan alla tjänster, från användarinloggningar till bearbetning av finansiella transaktioner, knutna till JunoDB. Projektkoden är skriven i Go (ett Java-klientbibliotek) och distribueras under Apache 2.0-licensen. Ytterligare utveckling kommer att acceptera korrigeringar, förbättringar och förändringar från samhället.

JunoDB:s arkitektur är baserad på användningen av en lastbalanserare som accepterar förfrågningar från klientapplikationer och distribuerar dem mellan proxyservrar som samtidigt kommer åt en grupp lagringsservrar när begäran exekveras. Varje proxyserver upprättar anslutningar till alla lagringsservrar på en gång och vidarebefordrar förfrågningar till en grupp lagringsservrar baserat på partitionsindexet, som lagras i det distribuerade lagringssystemet etcd-konfigurationen.

PayPal öppnade JunoDB DBMS-koden

Data partitioneras och länkas till lagringsnoder med hashing, vilket minskar datarörelsen när noder i klustret växer eller krymper. För att säkerställa feltolerans replikeras varje databit på flera lagringsnoder, vilket gör att du kan spara information när enskilda servrar misslyckas. Skapandet av geografiskt distribuerade lagringar stöds, där grupper av noder finns i olika datacenter.

PayPal öppnade JunoDB DBMS-koden

På datalagringsnoder är de placerade i RAM eller i lokal lagring baserat på RocksDB-biblioteket. När de lagras permanent lagras data i krypterad form (krypteringsnyckeln kan fastställas antingen av klienten eller ställas in på proxynivå).

PayPal öppnade JunoDB DBMS-koden

För att komma åt databasen från applikationer tillhandahålls ett klientbibliotek som tillhandahåller ett API för applikationer i Java, Go och C++. Klientdelen förenklas så mycket som möjligt och komplex logik och inställningar överförs till DBMS-sidan när det är möjligt. Interaktionen mellan klienten och balansören eller proxyn utförs genom en krypterad kommunikationskanal. För att hantera och skicka förfrågningar kan du använda kommandoradsgränssnittet, som replikerar alla funktioner i klient-API:et.

Systemet är designat för att behandla förfrågningar med förutsägbara låga latenser, till exempel ett kluster av tre lagringsnoder och en proxy, bildad från n1-highmem-32-miljöer (32 Intel Xeon 2.30GHz-processorer, 214G RAM och 450G SSD-baserad lagring) , kunde tillhandahålla fasta förseningar som inte översteg 2.5 ms i 95 % av fallen och 16 ms i 99 % vid behandling av 200 tusen samtidiga TLS-anslutningar och ett flöde på 15 tusen förfrågningar per sekund (med 3000 samtidiga anslutningar och ett flöde på 80 tusen förfrågningar per sekund översteg inte förseningarna 6 ms i 95 % av fallen och 15 ms i 99 %). Hos PayPal betjänar JunoDB-baserade tjänster cirka 350 miljarder förfrågningar per dag.

PayPal öppnade JunoDB DBMS-koden


Källa: opennet.ru

Lägg en kommentar