PayPal åbnede JunoDB DBMS-koden

PayPal har åbnet kildekode til JunoDB, en fejltolerant DBMS, der manipulerer data i nøgleværdi-format. Systemet blev oprindeligt designet med høj sikkerhed, horisontal skalerbarhed, fejltolerance og evnen til at håndtere hundredtusindvis af samtidige forbindelser med forudsigelige forsinkelser i tankerne. I PayPal er næsten alle tjenester, fra brugerlogin til behandling af finansielle transaktioner, knyttet til JunoDB. Projektkoden er skrevet i Go (Java-klientbibliotek) og distribueret under Apache 2.0-licensen. I den videre udvikling vil rettelser, forbedringer og ændringer fra fællesskabet blive accepteret.

JunoDB-arkitekturen er baseret på brugen af ​​en belastningsbalancer, der accepterer anmodninger fra klientapplikationer og distribuerer dem blandt proxyservere, der samtidig får adgang til en gruppe lagerservere, når en anmodning fremsættes. Hver proxy etablerer forbindelser til alle lagerservere på én gang og omdirigerer anmodninger til en gruppe lagerservere baseret på partitionsindekset, der er lagret i det distribuerede lagersystem i etcd-konfigurationen.

PayPal åbnede JunoDB DBMS-koden

Data opdeles og bindes til lagernoder ved hjælp af hashing for at reducere databevægelser, efterhånden som noder vokser eller krymper i en klynge. For at sikre fejltolerance, replikeres hver del af data på flere lagernoder, hvilket giver dig mulighed for at gemme information, når individuelle servere fejler. Oprettelse af geografisk distribuerede lager understøttes, hvor grupper af noder er placeret i forskellige datacentre.

PayPal åbnede JunoDB DBMS-koden

På lagernoder placeres data i RAM eller i lokalt lager baseret på RocksDB-biblioteket. Ved vedvarende lagring lagres data i krypteret form (krypteringsnøglen kan bestemmes både af klienten og indstilles på proxy-niveau).

PayPal åbnede JunoDB DBMS-koden

For at få adgang til databasen fra applikationer leveres et klientbibliotek, der giver en API til applikationer i Java, Go og C++. Klientdelen forenkles så meget som muligt, og kompleks logik og indstillinger flyttes om muligt til siden af ​​DBMS. Interaktionen mellem klienten og balanceren eller proxyen udføres gennem en krypteret kommunikationskanal. Du kan bruge en kommandolinjegrænseflade til at administrere og sende anmodninger, som efterligner den fulde funktionalitet af klient-API'en.

Systemet er designet til at behandle anmodninger med forudsigelig lav latenstid, for eksempel var en klynge af tre lagringsknuder og en proxy, dannet af n1-highmem-32-miljøer (32 Intel Xeon 2.30GHz CPU'er, 214G RAM og 450G SSD-baseret lagring), i stand til at levere faste 2.5 %-m-tilfælde i 95-16 %-tilfælde, der ikke overstiger 99 m-processer i 200 %-tilfælde. 15 tusinde samtidige TLS-forbindelser og et flow på 3000 tusinde anmodninger i sekundet (med 80 samtidige forbindelser og et flow på 6 tusinde anmodninger i sekundet oversteg forsinkelserne ikke 95 ms i 15% af tilfældene og 99 ms i 350%). Hos PayPal betjener JunoDB-baserede tjenester omkring XNUMX milliarder anmodninger om dagen.

PayPal åbnede JunoDB DBMS-koden


Kilde: opennet.ru

Tilføj en kommentar