PayPal hapi kodin JunoDB DBMS

PayPal ka hapur kodin burimor për JunoDB, një DBMS tolerant ndaj gabimeve që manipulon të dhënat në formatin me vlerë kyçe. Sistemi u projektua fillimisht me siguri të lartë, shkallëzim horizontal, tolerancë ndaj gabimeve dhe aftësi për të trajtuar qindra mijëra lidhje të njëkohshme me vonesa të parashikueshme në mendje. Në PayPal, pothuajse të gjitha shërbimet, nga identifikimi i përdoruesit deri tek përpunimi i transaksioneve financiare, janë të lidhura me JunoDB. Kodi i projektit është shkruar në Go (biblioteka e klientit Java) dhe shpërndahet nën licencën Apache 2.0. Në zhvillimin e mëtejshëm, korrigjimet, përmirësimet dhe ndryshimet nga komuniteti do të pranohen.

Arkitektura JunoDB bazohet në përdorimin e një balancuesi të ngarkesës që pranon kërkesat nga aplikacionet e klientit dhe i shpërndan ato midis serverëve proxy që njëkohësisht aksesojnë një grup serverësh ruajtjeje kur bëhet një kërkesë. Çdo përfaqësues krijon lidhje me të gjithë serverët e ruajtjes menjëherë dhe ridrejton kërkesat në një grup serverësh ruajtjeje bazuar në indeksin e ndarjes të ruajtur në sistemin e ruajtjes së shpërndarë të konfigurimit etcd.

PayPal hapi kodin JunoDB DBMS

Të dhënat ndahen dhe lidhen me nyjet e ruajtjes duke përdorur hashing për të reduktuar lëvizjen e të dhënave ndërsa nyjet rriten ose tkurren në një grup. Për të siguruar tolerancën e gabimeve, çdo pjesë e të dhënave riprodhohet në disa nyje ruajtëse, gjë që ju lejon të ruani informacionin kur serverët individualë dështojnë. Mbështetet krijimi i magazinave të shpërndara gjeografikisht, në të cilat grupet e nyjeve janë të vendosura në qendra të ndryshme të të dhënave.

PayPal hapi kodin JunoDB DBMS

Në nyjet e ruajtjes, të dhënat vendosen në RAM ose në ruajtje lokale bazuar në bibliotekën RocksDB. Me ruajtjen e vazhdueshme, të dhënat ruhen në formë të koduar (çelësi i kriptimit mund të përcaktohet si nga klienti ashtu edhe të vendoset në nivelin e përfaqësuesit).

PayPal hapi kodin JunoDB DBMS

Për të hyrë në bazën e të dhënave nga aplikacionet, ofrohet një bibliotekë klienti që ofron një API për aplikacionet në Java, Go dhe C++. Pjesa e klientit thjeshtohet sa më shumë që të jetë e mundur, dhe logjika komplekse dhe cilësimet, nëse është e mundur, zhvendosen në anën e DBMS. Ndërveprimi midis klientit dhe balancuesit ose përfaqësuesit kryhet përmes një kanali komunikimi të koduar. Ju mund të përdorni një ndërfaqe të linjës komanduese për të menaxhuar dhe dërguar kërkesa, e cila imiton funksionalitetin e plotë të API-së së klientit.

Sistemi është krijuar për të përpunuar kërkesa me vonesë të ulët të parashikueshme, për shembull, një grup prej tre nyjesh ruajtëse dhe një përfaqësues, i formuar nga mjediset n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G RAM dhe 450G SSD), ishte në gjendje të siguronte 2.5 intime latency fikse në 95% dhe 16 ms. 99% kur përpunohen 200 mijë lidhje të njëkohshme TLS dhe një fluks prej 15 mijë kërkesash në sekondë (me 3000 lidhje të njëkohshme dhe fluks 80 mijë kërkesa në sekondë, vonesat nuk i kalonin 6 ms në 95% të rasteve dhe 15 ms në 99%). Në PayPal, shërbimet e bazuara në JunoDB shërbejnë rreth 350 miliardë kërkesa në ditë.

PayPal hapi kodin JunoDB DBMS


Burimi: opennet.ru

Shto një koment