Keluaran rqlite 6.0, DBMS yang diedarkan, toleransi kesalahan berdasarkan SQLite

Keluaran DBMS rqlite 6.0 yang diedarkan telah dibentangkan, yang menggunakan SQLite sebagai enjin storan dan membolehkan anda mengatur kerja kluster daripada storan yang disegerakkan antara satu sama lain. Salah satu ciri rqlite ialah kemudahan pemasangan, penggunaan dan penyelenggaraan storan tahan kerosakan yang diedarkan, agak serupa dengan etcd dan Consul, tetapi menggunakan model data hubungan dan bukannya format kunci/nilai. Kod projek ditulis dalam Go dan diedarkan di bawah lesen MIT.

Untuk memastikan semua nod dalam keadaan disegerakkan, algoritma konsensus Raft digunakan. Rqlite menggunakan perpustakaan SQLite asal dan pemacu go-sqlite3 standard, di atasnya lapisan dilancarkan yang memproses permintaan pelanggan, melakukan replikasi ke nod lain dan memantau pencapaian konsensus pada pilihan nod terkemuka.

Perubahan kepada pangkalan data hanya boleh dibuat oleh nod yang dipilih sebagai ketua, tetapi sambungan dengan operasi tulis juga boleh dihantar ke nod lain dalam kelompok, yang akan mengembalikan alamat ketua untuk mengulangi permintaan (dalam versi seterusnya mereka berjanji untuk menambah pemajuan automatik permintaan kepada pemimpin). Penekanan utama adalah pada toleransi kesalahan, jadi skala DBMS hanya dengan operasi baca, dan operasi tulis adalah halangan. Adalah mungkin untuk menjalankan kluster rqlite dari satu nod dan penyelesaian ini boleh digunakan untuk menyediakan akses kepada SQLite melalui HTTP tanpa memberikan toleransi kesalahan.

Data SQLite pada setiap nod tidak disimpan dalam fail, tetapi dalam ingatan. Pada peringkat lapisan dengan pelaksanaan protokol Raft, log semua arahan SQLite yang membawa kepada perubahan dalam pangkalan data disimpan. Log ini digunakan semasa replikasi (replikasi pada tahap mengeluarkan semula permintaan pada nod lain), memulakan nod baharu atau pulih daripada kehilangan sambungan. Untuk mengurangkan saiz log, pembungkusan automatik digunakan, yang bermula selepas beberapa perubahan tertentu dan membawa kepada syot kilat ditetapkan pada cakera, yang berkaitan dengan log baharu mula disimpan (keadaan pangkalan data dalam ingatan adalah sama dengan syot kilat + log perubahan terkumpul).

Ciri-ciri rqlite:

  • Mudah untuk menggunakan kluster, tanpa memerlukan pemasangan SQLite yang berasingan.
  • Keupayaan untuk mendapatkan storan SQL yang direplikasi dengan cepat.
  • Sedia untuk digunakan dalam projek kerja (gred pengeluaran).
  • Kehadiran API HTTP(S) yang membolehkan anda mengemas kini data dalam mod kelompok dan menentukan nod utama kluster. Ia juga menyediakan antara muka baris arahan dan keupayaan untuk menggunakan pelbagai perpustakaan klien yang dibina untuk SQLite.
  • Ketersediaan perkhidmatan untuk mengenal pasti nod lain, membolehkan anda membuat kelompok secara dinamik.
  • Sokongan untuk menyulitkan pertukaran data antara nod.
  • Keupayaan untuk mengkonfigurasi tahap menyemak perkaitan dan ketekalan data semasa membaca.
  • Keupayaan pilihan untuk menyambungkan nod dalam mod baca sahaja, yang tidak mengambil bahagian dalam menentukan konsensus dan digunakan untuk meningkatkan kebolehskalaan kluster untuk operasi baca.
  • Sokongan untuk bentuk transaksi anda sendiri berdasarkan gabungan arahan dalam satu permintaan (transaksi berdasarkan BEGIN, COMMIT, ROLLBACK, SAVEPOINT dan RELEASE tidak disokong).
  • Sokongan untuk membuat sandaran panas.

Keluaran baharu memperkenalkan perubahan seni bina yang ketara bertujuan untuk meningkatkan kebolehpercayaan kluster dengan menambah baik proses penghalaan permintaan baca dan tulis ke nod kluster yang betul. nod rqlite kini boleh memultiplekskan berbilang sambungan logik sesama mereka menggunakan sambungan TCP yang ditubuhkan antara nod oleh protokol Raft. Jika permintaan memerlukan kuasa pemimpin tetapi dihantar ke nod sekunder, nod sekunder boleh menentukan alamat pemimpin dan menyampaikannya kepada klien tanpa melakukan pengiraan konsensus Rakit.

Perubahan itu juga menghapuskan keperluan untuk komponen penyegerakan metadata yang berasingan dan menghapuskan pengendalian berasingan keadaan Raft dan metadata. Nod sekunder kini menghantar permintaan kepada nod ketua hanya apabila perlu, apabila mereka perlu mengetahui alamat nod ketua. API menyediakan keupayaan untuk mendapatkan maklumat tentang keadaan nod lain dalam kelompok. Perintah ".sysdump" telah ditambahkan pada antara muka baris arahan.

Sumber: opennet.ru

Tambah komen