PayPal gaduh sumber terbuka JunoDB, sistem manajemén database toleran lepat anu ngatur data nilai konci. Sistem ieu dirarancang tina dasar pikeun kaamanan anu luhur, skalabilitas horizontal, kasabaran kasalahan, sareng kamampuan pikeun nanganan ratusan rébu sambungan sakaligus sareng latency anu tiasa diprediksi. Ampir kabéh jasa PayPal, ti login pamaké pikeun ngolah transaksi finansial, ngandelkeun JunoDB. Kodeu proyék ditulis dina Go (kalayan perpustakaan klien Java) sareng dilisensikeun dina lisénsi Apache 2.0. Pangwangunan salajengna bakal kalebet koréksi, perbaikan, sareng parobihan ti masarakat.
Arsitektur JunoDB dumasar kana panggunaan load balancer anu nampi pamundut ti aplikasi klien sareng nyebarkeunana di antara server proxy anu sakaligus ngaksés sakelompok aplikasi. server panyimpenan nalika ngajalankeun pamundut. Unggal server proxy nyieun sambungan sareng sadayana sakaligus. server panyimpenan sareng ngarahkeun pamundut ka sakelompok server panyimpenan dumasar kana indéks partisi anu disimpen dina sistem panyimpenan konfigurasi terdistribusi etcd.

Data dipisahkeun sareng ditugaskeun ka tempat panyimpen nganggo hashing, ngirangan gerakan data nalika titik dina klaster dilegaan atanapi dikirangan. Pikeun mastikeun kasabaran kasalahan, unggal bagian data ditiron dina sababaraha titik panyimpen, ngajaga inpormasi sanajan server individu gagal. Sistem panyimpen anu disebarkeun sacara géografis dirojong, sareng grup titik anu aya di pusat data anu béda.

Data disimpen dina titik panyimpen dina RAM atanapi dina panyimpenan lokal nganggo perpustakaan RocksDB. Pikeun neundeun pengkuh, data disimpen énkripsi (konci enkripsi bisa dihartikeun ku klien atawa ngonpigurasi dina tingkat proxy).

Pikeun ngakses database tina aplikasi, perpustakaan klien disadiakeun, nyadiakeun API pikeun aplikasi ditulis dina Java, Go, jeung C++. Sisi klien disederhanakeun sabisa-bisa, kalayan logika rumit sareng setélan dipindahkeun ka sisi DBMS sabisana. Komunikasi antara klien sareng pangimbang beban atanapi proxy dilaksanakeun ngalangkungan saluran komunikasi énkripsi. Antarbeungeut paréntah-garis, anu ngayakeun réplikasi sadaya kamampuan API klien, tiasa dianggo pikeun manajemén sareng ngirim pamundut.
Sistim nu dirancang pikeun ngolah requests kalawan latency low bisa diprediksi. Contona, klaster tina tilu titik gudang sarta hiji proxy, kabentuk tina n1-highmem-32 lingkungan (32 Intel Xeon 2.30GHz CPUs, 214G RAM, sarta gudang SSD 450G), éta bisa nyadiakeun latency tetep teu leuwih ti 2.5 mdet dina 95% kasus jeung 16 mdet dina 200% tina sambungan kalawan sambungan TLS jeung 80% concurrent. ti 15 requests per detik (jeung 3000 sambungan babarengan jeung aliran 99 requests per detik, latency teu ngaleuwihan 6 mdet dina 95% kasus jeung 15 mdet 99%). Ladenan basis JunoDB PayPal ngadamel kirang langkung 350 milyar pamundut per dinten.

sumber: opennet.ru
