Rilis rqlite 6.0, DBMS terdistribusi dan toleran terhadap kesalahan berdasarkan SQLite

Rilis DBMS terdistribusi rqlite 6.0 disajikan, yang menggunakan SQLite sebagai mesin penyimpanan dan memungkinkan Anda mengatur pekerjaan sekelompok penyimpanan yang disinkronkan. Salah satu fitur rqlite adalah kemudahan instalasi, penerapan dan pemeliharaan penyimpanan toleransi kesalahan terdistribusi, agak mirip dengan dll dan Konsul, tetapi menggunakan model data relasional dan bukan format kunci/nilai. Kode proyek ditulis dalam Go dan didistribusikan di bawah lisensi MIT.

Untuk menjaga semua node dalam keadaan tersinkronisasi, algoritma konsensus Raft digunakan. Rqlite menggunakan pustaka SQLite asli dan driver go-sqlite3 standar, di atasnya diluncurkan lapisan yang memproses permintaan klien, melakukan replikasi ke node lain, dan memantau pencapaian konsensus dalam pemilihan node terdepan.

Perubahan pada database hanya dapat dilakukan oleh node yang dipilih sebagai pemimpin, namun koneksi dengan operasi tulis juga dapat dikirim ke node lain dalam cluster, yang akan mengembalikan alamat pemimpin untuk mengulangi permintaan (di versi berikutnya mereka berjanji untuk menambahkan penerusan permintaan otomatis ke pemimpin). Penekanan utamanya adalah pada toleransi kesalahan, sehingga DBMS hanya menskalakan dengan operasi baca, dan operasi tulis adalah hambatannya. Cluster rqlite dapat dijalankan dari satu node dan solusi ini dapat digunakan untuk menyediakan akses ke SQLite melalui HTTP tanpa memberikan toleransi kesalahan.

Data SQLite di setiap node tidak disimpan dalam file, tetapi di memori. Pada tingkat lapisan dengan penerapan protokol Raft, log semua perintah SQLite yang menyebabkan perubahan dalam database disimpan. Log ini digunakan selama replikasi (replikasi pada tingkat mereproduksi permintaan pada node lain), memulai node baru, atau memulihkan dari hilangnya konektivitas. Untuk mengurangi ukuran log, pengemasan otomatis digunakan, yang dimulai setelah sejumlah perubahan tertentu dan menyebabkan snapshot diperbaiki pada disk, sehubungan dengan itu log baru mulai disimpan (keadaan database di memori identik dengan snapshot + akumulasi log perubahan).

Fitur rqlite:

  • Mudah untuk menyebarkan cluster, tanpa memerlukan instalasi SQLite terpisah.
  • Kemampuan untuk dengan cepat mendapatkan penyimpanan SQL yang direplikasi.
  • Siap digunakan dalam proyek kerja (tingkat Produksi).
  • Kehadiran API HTTP(S) yang memungkinkan Anda memperbarui data dalam mode batch dan menentukan node terdepan dari cluster. Ini juga menyediakan antarmuka baris perintah dan kemampuan untuk menggunakan berbagai perpustakaan klien yang dibangun untuk SQLite.
  • Ketersediaan layanan untuk mengidentifikasi node lain, memungkinkan Anda membuat cluster secara dinamis.
  • Dukungan untuk mengenkripsi pertukaran data antar node.
  • Kemampuan untuk mengkonfigurasi tingkat pemeriksaan relevansi dan konsistensi data saat membaca.
  • Kemampuan opsional untuk menghubungkan node dalam mode baca-saja, yang tidak berpartisipasi dalam menentukan konsensus dan digunakan untuk meningkatkan skalabilitas cluster untuk operasi baca.
  • Dukungan untuk bentuk transaksi Anda sendiri berdasarkan penggabungan perintah dalam satu permintaan (transaksi berdasarkan BEGIN, COMMIT, ROLLBACK, SAVEPOINT dan RELEASE tidak didukung).
  • Dukungan untuk membuat cadangan panas.

Rilis baru ini memperkenalkan perubahan arsitektur signifikan yang bertujuan untuk meningkatkan keandalan cluster dengan meningkatkan proses perutean permintaan baca dan tulis ke node cluster yang benar. node rqlite sekarang dapat melakukan multipleks beberapa koneksi logis di antara mereka sendiri menggunakan koneksi TCP yang dibuat antar node melalui protokol Raft. Jika permintaan memerlukan otoritas pemimpin tetapi dikirim ke node sekunder, node sekunder dapat menentukan alamat pemimpin dan meneruskannya ke klien tanpa melakukan penghitungan konsensus Raft.

Perubahan ini juga menghilangkan kebutuhan akan komponen sinkronisasi metadata terpisah dan menghilangkan penanganan terpisah atas status Raft dan metadata. Node sekunder sekarang mengirimkan permintaan ke node pemimpin hanya jika diperlukan, ketika mereka perlu mengetahui alamat node pemimpin. API menyediakan kemampuan untuk memperoleh informasi tentang status node lain di cluster. Perintah ".sysdump" telah ditambahkan ke antarmuka baris perintah.

Sumber: opennet.ru

Tambah komentar