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

Pengeluaran DBMS rqlite 7.0 yang diedarkan berlaku, 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, di atasnya lapisan berjalan 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 kepada pangkalan data disimpan. Log ini digunakan semasa replikasi (replikasi pada tahap mengeluarkan semula permintaan pada nod lain), apabila memulakan nod baharu atau untuk memulihkan daripada kehilangan sambungan. Untuk mengurangkan saiz log, pembungkusan automatik digunakan, yang bermula selepas beberapa perubahan tertentu dan membawa kepada penetapan syot kilat, yang berkaitan dengan log baharu mula dikekalkan (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 pengeluaran (gred pengeluaran).
  • Kehadiran API HTTP(S) yang membolehkan anda mengemas kini data dalam mod kelompok dan menentukan nod utama kluster. Antara muka baris arahan dan perpustakaan pelanggan untuk pelbagai bahasa pengaturcaraan juga disediakan.
  • 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.

Dalam keluaran baharu:

  • Sokongan tambahan untuk pengelompokan rqlite automatik menggunakan perkhidmatan pengesanan nod baharu yang boleh berfungsi berdasarkan storan teragih Konsul dan dll. Perkhidmatan ini membenarkan nod rqlite mencari satu sama lain secara automatik - pentadbir hanya perlu melancarkan beberapa nod pada pelayan berbeza, dengan menyatakan alamat kluster Konsul atau etcd biasa (contohnya, "example.com:8500"), dan nod akan secara automatik digabungkan menjadi satu kelompok. Nod peneraju mengemas kini maklumat secara berkala tentang alamatnya dalam storan Konsul atau etcd, yang membolehkan anda kemudiannya menukar pemimpin tanpa perlu mengkonfigurasi semula nod lain, serta menambah nod baharu walaupun selepas menukar pemimpin. Perkhidmatan mod Penemuan lama yang dijalankan pada AWS Lambda telah dihentikan.
  • Antara muka CLI membenarkan penentuan beberapa hos sekali gus - jika nod pertama tidak tersedia, hos seterusnya akan dihubungi.
  • Kod untuk menghuraikan argumen baris perintah rqlited telah diolah semula.
  • Pakej protobuf yang telah ditamatkan telah dihentikan.
  • Storan BoltDB yang digunakan dalam pelaksanaan protokol Raft telah digantikan oleh bbolt, garpu daripada projek etcd.

Sumber: opennet.ru

Tambah komen