PayPal membuka kode DBMS JunoDB

PayPal telah membuka kode sumber DBMS JunoDB yang toleran terhadap kesalahan, yang memanipulasi data dalam format nilai kunci. Sistem ini awalnya dirancang dengan keamanan tinggi, skalabilitas horizontal, toleransi kesalahan, dan kemampuan menangani ratusan ribu koneksi simultan dengan mempertimbangkan latensi yang dapat diprediksi. Di PayPal, hampir semua layanan, mulai dari login pengguna hingga pemrosesan transaksi keuangan, terkait dengan JunoDB. Kode proyek ditulis di Go (perpustakaan klien Java) dan didistribusikan di bawah lisensi Apache 2.0. Perkembangan selanjutnya akan menerima koreksi, perbaikan dan perubahan dari masyarakat.

Arsitektur JunoDB didasarkan pada penggunaan penyeimbang beban yang menerima permintaan dari aplikasi klien dan mendistribusikannya di antara server proxy yang secara bersamaan mengakses sekelompok server penyimpanan saat permintaan dijalankan. Setiap server proxy membuat koneksi ke semua server penyimpanan sekaligus dan meneruskan permintaan ke sekelompok server penyimpanan berdasarkan indeks partisi, yang disimpan dalam konfigurasi sistem penyimpanan terdistribusi dll.

PayPal membuka kode DBMS JunoDB

Data dipartisi dan ditautkan ke node penyimpanan menggunakan hashing, yang mengurangi pergerakan data seiring bertambahnya atau menyusutnya node dalam cluster. Untuk memastikan toleransi kesalahan, setiap bagian data direplikasi pada beberapa node penyimpanan, yang memungkinkan Anda menyimpan informasi ketika masing-masing server gagal. Pembuatan penyimpanan yang terdistribusi secara geografis didukung, di mana kelompok node berlokasi di pusat data yang berbeda.

PayPal membuka kode DBMS JunoDB

Pada node penyimpanan data, mereka berada di RAM atau di penyimpanan lokal berdasarkan perpustakaan RocksDB. Ketika disimpan secara permanen, data disimpan dalam bentuk terenkripsi (kunci enkripsi dapat ditentukan oleh klien atau diatur pada tingkat proxy).

PayPal membuka kode DBMS JunoDB

Untuk mengakses database dari aplikasi, disediakan perpustakaan klien yang menyediakan API untuk aplikasi di Java, Go dan C++. Bagian klien disederhanakan sebanyak mungkin, dan logika serta pengaturan yang kompleks ditransfer ke sisi DBMS bila memungkinkan. Interaksi antara klien dan penyeimbang atau proxy dilakukan melalui saluran komunikasi terenkripsi. Untuk mengelola dan mengirim permintaan, Anda dapat menggunakan antarmuka baris perintah, yang mereplikasi semua kemampuan API klien.

Sistem ini dirancang untuk memproses permintaan dengan latensi rendah yang dapat diprediksi, misalnya, cluster yang terdiri dari tiga node penyimpanan dan satu proksi, yang dibentuk dari lingkungan n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, RAM 214G, dan penyimpanan berbasis SSD 450G) , mampu memberikan penundaan tetap tidak melebihi 2.5 mdtk dalam 95% kasus dan 16 mdtk dalam 99% saat memproses 200 ribu koneksi TLS simultan dan aliran 15 ribu permintaan per detik (dengan 3000 koneksi simultan dan aliran 80 ribu permintaan per detik, penundaan tidak melebihi 6 md pada 95% kasus dan 15 md pada 99%). Di PayPal, layanan berbasis JunoDB melayani sekitar 350 miliar permintaan per hari.

PayPal membuka kode DBMS JunoDB


Sumber: opennet.ru

Tambah komentar