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

Rilis DBMS terdistribusi rqlite 7.0 terjadi, yang menggunakan SQLite sebagai mesin penyimpanan dan memungkinkan Anda untuk mengatur pekerjaan cluster dari penyimpanan yang disinkronkan satu sama lain. 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, yang 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 pada database disimpan. Log ini digunakan selama replikasi (replikasi pada tingkat mereproduksi permintaan pada node lain), saat memulai node baru, atau untuk memulihkan dari hilangnya konektivitas. Untuk mengurangi ukuran log, pengepakan otomatis digunakan, yang dimulai setelah sejumlah perubahan tertentu dan mengarah pada fiksasi snapshot, sehubungan dengan log baru yang mulai disimpan (keadaan database dalam memori adalah 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 produksi (tingkat produksi).
  • Kehadiran API HTTP(S) yang memungkinkan Anda memperbarui data dalam mode batch dan menentukan node terdepan dari cluster. Antarmuka baris perintah dan perpustakaan klien untuk berbagai bahasa pemrograman juga disediakan.
  • 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.

Dalam rilis baru:

  • Menambahkan dukungan untuk pengelompokan rqlite otomatis menggunakan layanan deteksi node baru yang dapat bekerja berdasarkan penyimpanan terdistribusi Konsul dan dll. Layanan ini memungkinkan node rqlite untuk menemukan satu sama lain secara otomatis - administrator hanya perlu meluncurkan beberapa node di server yang berbeda, menentukan alamat Konsul umum atau cluster dll (misalnya, “example.com:8500”), dan node akan secara otomatis ditemukan digabungkan menjadi sebuah cluster. Node terdepan secara berkala memperbarui informasi tentang alamatnya di Konsul atau penyimpanan dll, yang memungkinkan Anda untuk mengubah pemimpin selanjutnya tanpa perlu mengkonfigurasi ulang node lain, serta menambahkan node baru bahkan setelah mengubah pemimpin. Layanan mode Penemuan lama yang berjalan di AWS Lambda telah dihentikan.
  • Antarmuka CLI memungkinkan penentuan beberapa host sekaligus - jika node pertama tidak tersedia, host berikutnya akan dihubungi.
  • Kode untuk mengurai argumen baris perintah rqlited telah dikerjakan ulang.
  • Paket protobuf yang tidak digunakan lagi telah dihentikan.
  • Penyimpanan BoltDB yang digunakan dalam implementasi protokol Raft telah digantikan oleh bbolt, sebuah fork dari proyek etcd.

Sumber: opennet.ru

Tambah komentar