PayPal atvēra JunoDB DBMS kodu

PayPal ir atvēris kļūdu izturīgās DBMS JunoDB pirmkodu, kas manipulē ar datiem atslēgas vērtības formātā. Sistēma sākotnēji tika izstrādāta ar augstu drošību, horizontālu mērogojamību, kļūdu toleranci un spēju apstrādāt simtiem tūkstošu vienlaicīgu savienojumu, paturot prātā paredzamo latentumu. Vietnē PayPal gandrīz visi pakalpojumi, sākot no lietotāju pieteikšanās līdz finanšu darījumu apstrādei, ir saistīti ar JunoDB. Projekta kods ir rakstīts programmā Go (Java klienta bibliotēka) un tiek izplatīts saskaņā ar Apache 2.0 licenci. Turpmākā attīstība pieņems labojumus, uzlabojumus un izmaiņas no kopienas.

JunoDB arhitektūra ir balstīta uz slodzes balansētāja izmantošanu, kas pieņem pieprasījumus no klientu lietojumprogrammām un sadala tos starp starpniekserveriem, kas vienlaikus piekļūst uzglabāšanas serveru grupai, kad pieprasījums tiek izpildīts. Katrs starpniekserveris izveido savienojumus ar visiem krātuves serveriem uzreiz un pārsūta pieprasījumus uzglabāšanas serveru grupai, pamatojoties uz nodalījuma indeksu, kas tiek glabāts sadalītās krātuves sistēmas etcd konfigurācijā.

PayPal atvēra JunoDB DBMS kodu

Dati tiek sadalīti un saistīti ar krātuves mezgliem, izmantojot jaukšanu, kas samazina datu kustību, jo mezgli klasterī aug vai samazinās. Lai nodrošinātu kļūdu toleranci, katrs datu fragments tiek replicēts vairākos krātuves mezglos, kas ļauj saglabāt informāciju atsevišķu serveru kļūmes gadījumā. Tiek atbalstīta ģeogrāfiski sadalītu krātuvju izveide, kurās mezglu grupas atrodas dažādos datu centros.

PayPal atvēra JunoDB DBMS kodu

Datu glabāšanas mezglos tie atrodas RAM vai vietējā krātuvē, pamatojoties uz RocksDB bibliotēku. Ja dati tiek glabāti pastāvīgi, tie tiek saglabāti šifrētā veidā (šifrēšanas atslēgu var noteikt vai nu klients, vai iestatīt starpniekservera līmenī).

PayPal atvēra JunoDB DBMS kodu

Lai piekļūtu datubāzei no lietojumprogrammām, tiek nodrošināta klienta bibliotēka, kas nodrošina API lietojumprogrammām Java, Go un C++. Klienta daļa ir pēc iespējas vienkāršota, un sarežģītā loģika un iestatījumi, kad vien iespējams, tiek pārsūtīti uz DBVS pusi. Mijiedarbība starp klientu un balansētāju vai starpniekserveri tiek veikta, izmantojot šifrētu sakaru kanālu. Lai pārvaldītu un nosūtītu pieprasījumus, varat izmantot komandrindas saskarni, kas atkārto visas klienta API iespējas.

Sistēma ir izstrādāta, lai apstrādātu pieprasījumus ar paredzamu zemu latentumu, piemēram, trīs krātuves mezglu un viena starpniekservera kopu, kas veidota no n1-highmem-32 vidēm (32 Intel Xeon 2.30 GHz CPU, 214G RAM un 450G SSD krātuve). , spēja nodrošināt fiksētu aizkavi, kas 2.5% gadījumu nepārsniedz 95 ms un 16% 99 ms, apstrādājot 200 tūkstošus vienlaicīgu TLS savienojumu un 15 tūkstošu pieprasījumu plūsmu sekundē (ar 3000 vienlaicīgiem savienojumiem un 80 tūkstošu pieprasījumu plūsmu sekundē aizkavēšanās nepārsniedza 6 ms 95% gadījumu un 15 ms 99% gadījumu. Pakalpojumā PayPal uz JunoDB balstītie pakalpojumi apkalpo aptuveni 350 miljardus pieprasījumu dienā.

PayPal atvēra JunoDB DBMS kodu


Avots: opennet.ru

Pievieno komentāru