PayPal atvēra JunoDB DBMS kodu

PayPal ir atvērtā pirmkoda JunoDB — kļūdu toleranta datubāzes pārvaldības sistēma, kas pārvalda atslēgu un vērtību datus. Sistēma tika izstrādāta no paša sākuma, lai nodrošinātu augstu drošību, horizontālu mērogojamību, kļūdu toleranci un spēju apstrādāt simtiem tūkstošu vienlaicīgu savienojumu ar paredzamu latentumu. Gandrīz visi PayPal pakalpojumi, sākot no lietotāja pieteikšanās līdz finanšu darījumu apstrādei, balstās uz JunoDB. Projekta kods ir rakstīts Go valodā (ar Java klienta bibliotēku) un ir licencēts saskaņā ar Apache 2.0 licenci. Turpmākā izstrāde ietvers kopienas veiktus labojumus, uzlabojumus un izmaiņas.

JunoDB arhitektūra ir balstīta uz slodzes līdzsvarotāja izmantošanu, kas pieņem pieprasījumus no klientu lietojumprogrammām un izplata tos starp starpniekservera serveriem, kuri vienlaikus piekļūst lietojumprogrammu grupai. serveriem krātuve, izpildot pieprasījumu. Katrs starpniekserveris izveido savienojumu ar visiem no tiem vienlaikus. serveri krātuve un maršrutē pieprasījumus uz krātuves serveru grupu, pamatojoties uz nodalījumu indeksu, kas saglabāts etcd izkliedētajā konfigurācijas krātuves sistēmā.

 PayPal atvēra JunoDB DBMS kodu

Dati tiek sadalīti un piešķirti krātuves mezgliem, izmantojot hešēšanu, samazinot datu pārvietošanu, kad klastera mezgli tiek paplašināti vai samazināti. Lai nodrošinātu kļūdu toleranci, katra datu daļa tiek replicēta vairākos krātuves mezglos, saglabājot informāciju pat atsevišķu serveru atteices gadījumā. Tiek atbalstītas ģeogrāfiski izkliedētas krātuves sistēmas ar mezglu grupām, kas atrodas dažādos datu centros.

 PayPal atvēra JunoDB DBMS kodu

Dati tiek glabāti atmiņas mezglos RAM atmiņā vai lokālajā atmiņā, izmantojot RocksDB bibliotēku. Pastāvīgai glabāšanai dati tiek glabāti šifrēti (šifrēšanas atslēgu var definēt klients vai konfigurē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, kas rakstītas Java, Go un C++ valodās. Klienta puse ir pēc iespējas vienkāršota, un sarežģītā loģika un iestatījumi, kad vien iespējams, tiek pārvietoti uz DBPS pusi. Saziņa starp klientu un slodzes līdzsvarotāju vai starpniekserveri notiek, izmantojot šifrētu sakaru kanālu. Pārvaldībai un pieprasījumu nosūtīšanai var izmantot komandrindas saskarni, kas replicē visas klienta API iespējas.

Sistēma ir izstrādāta, lai apstrādātu pieprasījumus ar paredzami zemu latentumu. Piemēram, trīs krātuves mezglu un viena starpniekservera klasteris, kas izveidots no n1-highmem-32 vidēm (32 Intel Xeon 2.30 GHz centrālie procesori, 214 GB RAM un 450 GB SSD krātuve), spēja nodrošināt fiksētu latentumu, kas nepārsniedz 2.5 ms 95% gadījumu un 16 ms 99% gadījumu, apstrādājot 200 000 vienlaicīgu TLS savienojumu un 15 000 pieprasījumu plūsmu sekundē (ar 3000 vienlaicīgiem savienojumiem un 80 000 pieprasījumu plūsmu sekundē latentums nepārsniedza 6 ms 95% gadījumu un 15 ms 99% gadījumu). PayPal JunoDB balstītie pakalpojumi apstrādā aptuveni 350 miljardus pieprasījumu dienā.

 PayPal atvēra JunoDB DBMS kodu


Avots: opennet.ru

Pievieno komentāru