PayPal membuka kod DBMS JunoDB

PayPal telah membuka kod sumber DBMS JunoDB yang toleran terhadap kesalahan, yang memanipulasi data dalam format nilai kunci. Sistem ini pada mulanya direka bentuk dengan keselamatan yang tinggi, berskala mendatar, toleransi kesalahan, dan keupayaan untuk mengendalikan ratusan ribu sambungan serentak dengan kependaman yang boleh diramalkan dalam fikiran. Di PayPal, hampir semua perkhidmatan, daripada log masuk pengguna hingga memproses transaksi kewangan, terikat dengan JunoDB. Kod projek ditulis dalam Go (perpustakaan pelanggan Java) dan diedarkan di bawah lesen Apache 2.0. Pembangunan selanjutnya akan menerima pembetulan, penambahbaikan dan perubahan daripada masyarakat.

Seni bina JunoDB adalah berdasarkan penggunaan pengimbang beban yang menerima permintaan daripada aplikasi klien dan mengedarkannya di kalangan pelayan proksi yang mengakses sekumpulan pelayan storan secara serentak apabila permintaan itu dilaksanakan. Setiap pelayan proksi mewujudkan sambungan kepada semua pelayan storan sekaligus dan memajukan permintaan kepada sekumpulan pelayan storan berdasarkan indeks partition, yang disimpan dalam konfigurasi sistem storan teragih dsb.

PayPal membuka kod DBMS JunoDB

Data dipisahkan dan dipautkan ke nod storan menggunakan pencincangan, yang mengurangkan pergerakan data apabila nod dalam gugusan berkembang atau mengecut. Untuk memastikan toleransi kesalahan, setiap bahagian data direplikasi pada beberapa nod storan, yang membolehkan anda menyimpan maklumat apabila pelayan individu gagal. Penciptaan storan yang diedarkan secara geografi disokong, di mana kumpulan nod terletak di pusat data yang berbeza.

PayPal membuka kod DBMS JunoDB

Pada nod storan data, ia terletak dalam RAM atau dalam storan tempatan berdasarkan perpustakaan RocksDB. Apabila disimpan secara kekal, data disimpan dalam bentuk yang disulitkan (kunci penyulitan boleh ditentukan sama ada oleh pelanggan atau ditetapkan pada peringkat proksi).

PayPal membuka kod DBMS JunoDB

Untuk mengakses pangkalan data daripada aplikasi, perpustakaan pelanggan dibekalkan yang menyediakan API untuk aplikasi dalam Java, Go dan C++. Bahagian klien dipermudahkan sebanyak mungkin, dan logik dan tetapan kompleks dipindahkan ke bahagian DBMS apabila boleh. Interaksi antara klien dan pengimbang atau proksi dijalankan melalui saluran komunikasi yang disulitkan. Untuk mengurus dan menghantar permintaan, anda boleh menggunakan antara muka baris arahan, yang mereplikasi semua keupayaan API klien.

Sistem ini direka bentuk untuk memproses permintaan dengan kependaman rendah yang boleh diramal, sebagai contoh, sekumpulan tiga nod storan dan satu proksi, terbentuk daripada persekitaran n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G RAM dan storan berasaskan SSD 450G) , mampu memberikan kelewatan tetap tidak melebihi 2.5 ms dalam 95% kes dan 16 ms dalam 99% apabila memproses 200 ribu sambungan TLS serentak dan aliran 15 ribu permintaan sesaat (dengan 3000 sambungan serentak dan aliran 80 ribu permintaan sesaat, kelewatan tidak melebihi 6 ms dalam 95% kes dan 15 ms dalam 99%). Di PayPal, perkhidmatan berasaskan JunoDB menyediakan kira-kira 350 bilion permintaan setiap hari.

PayPal membuka kod DBMS JunoDB


Sumber: opennet.ru

Tambah komen