Kompania PayPal publikoi kodin burimor të DB të rezistencës JunoDB, e cila manipulohet me të dhënat në formatin çelës-vlerë. Sistemi është projektuar fillimisht duke pasur parasysh sigurinë e lartë, shkallëzimin horizontal, qëndrueshmërinë dhe aftësinë për të përpunuar qindra mijëra lidhje në mënyrë parashikuese. Në PayPal, praktiktikisht të gjithë shërbimet, nga hyrja e përdoruesve deri te përpunimi i transaksioneve financiare, janë të lidhura me JunoDB. Kodi i projektit është shkruar në gjuhën Go (biblioteka klientike në Java) dhe shpërndahet nën licencën Apache 2.0. Në zhvillimin e mëtejshëm do të merren parasysh korrigjimet, përmirësimet dhe ndryshimet nga komuniteti.
Arkitektura JunoDB bazohet nĂ« pĂ«rdorimin e njĂ« balancuesi ngarkese, i cili pranon kĂ«rkesat nga aplikacionet klientike dhe i shpĂ«rndan ato midis proxy-serverĂ«ve, tĂ« cilĂ«t angazhohen njĂ«kohĂ«sisht me njĂ« grup servera ruajtjeje gjatĂ« pĂ«rmbushjes sĂ« kĂ«rkesĂ«s. Ădo proxy-server vendos lidhje menjĂ«herĂ« me tĂ« gjitha serverĂ«ve rakendjet dhe drejton kĂ«rkesat nĂ« grupin e serverĂ«ve tĂ« ruajtjes mbi bazĂ«n e indeksit tĂ« ndarjes, i cili ruhet nĂ« njĂ« sistem tĂ« shpĂ«rndarĂ« ruajtjesh pĂ«r konfigurimin etcd.

Të dhënat ndahen dhe lidhen me nodet e ruajtjes duke përdorur hashing, që lejon zvogëlimin e lëvizjes së të dhënave kur rriten ose zvogëlohen nodet në klaster. Për të siguruar qëndrueshmërinë, çdo porcion të dhënash replikohet në disa nodet e ruajtjes, që lejon ruajtjen e informacionit gjatë rënies së serverëve të caktuar. Krijimi i ruajtjeve territorialisht të shpërndara mbështetet, ku grupet e nodve janë vendosur në qendra të ndryshme të të dhënave.

Në nodet e ruajtjes së dhënave, të dhënat vendosen në kujtesën e përkohshme ose në ruajtjen lokale të bazuar në bibliotekën RocksDB. Për ruajtje të përhershme, të dhënat përmbahen në formë të enkriptuar (çelësi i enkriptimit mund të përcaktohet si nga klienti ashtu edhe të caktohet në nivelin e proxy).

Për qasjen në DB nga aplikacionet ofrohet një bibliotekë klienti që ofron një API për aplikacionet në gjuhët Java, Go dhe C++. Pjesa klienti është maksimalisht e thjeshtuar, ndërsa logjika komplekse dhe konfigurimet, për aq sa të jetë e mundur, janë transferuar në anën e DB-së. Ndërveprimi mes klientit dhe balancuesit të ngarkesës ose proxy-t bëhet përmes një kanali të enkriptuar. Për menaxhimin dhe dërgimin e kërkesave mund të përdoret një ndërfaqe komandash, e cila riprodhon të gjitha mundësitë e API-të klient.
Sistemi është projektuar për të përpunuar kërkesat me vonesa të ulta të parashikuara, si p.sh., një klasër me tre nodo ruajtjeje dhe një proxy, e formuar nga mjedise n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G RAM dhe 450G ruajtje bazuar në SSD), ishte në gjendje të ofronte vonesa fikse që nuk tejkalonin 2.5 ms në 95% të rasteve dhe 16 ms në 99% gjatë përpunimit të 200 mijë lidhjeve TLS njëkohësisht dhe një fluks prej 15 mijë kërkesash në sekondë (në 3000 lidhje njëkohësisht dhe një fluks prej 80 mijë kërkesash në sekondë, vonesat nuk tejkaluan 6 ms në 95% të rasteve dhe 15 ms në 99%). Në PayPal, shërbimet bazuar në JunoDB shërbejnë rreth 350 miliardë kërkesa në ditë.

Burimi: opennet.ru
