Ngaleupaskeun rqlite 6.0, disebarkeun, DBMS toleran kasalahan dumasar kana SQLite

Pelepasan DBMS rqlite 6.0 anu disebarkeun diwakilan, anu nganggo SQLite salaku mesin panyimpen sareng ngamungkinkeun anjeun pikeun ngatur karya gugusan panyimpen anu nyingkronkeun. Salah sahiji fitur rqlite nyaeta betah instalasi, deployment tur pamaliharaan of a gudang sesar-toleran disebarkeun, rada sarupa jeung etcd na Konsul, tapi ngagunakeun model data relational tinimbang konci a / format nilai. Kodeu proyék ditulis dina Go sareng disebarkeun dina lisénsi MIT.

Pikeun ngajaga sadaya titik dina kaayaan singkronisasi, algoritma konsensus Raft dianggo. Rqlite nganggo perpustakaan SQLite asli sareng supir go-sqlite3 standar, di luhur dimana lapisan diluncurkeun anu ngolah pamundut klien, ngalaksanakeun réplikasi ka titik anu sanés sareng ngawaskeun konsensus dina pilihan titik utama.

Parobahan kana databés ngan bisa dilakukeun ku titik nu dipilih salaku pamimpin, tapi sambungan kalawan operasi nulis ogé bisa dikirim ka titik lianna di kluster, nu bakal balik alamat pamimpin pikeun ngulang pamundut (dina versi salajengna aranjeunna janji pikeun nambahkeun diteruskeun otomatis tina requests ka pamimpin). Tekenan utama nyaéta dina kasabaran kasalahan, ku kituna skala DBMS ngan ukur nganggo operasi baca, sareng operasi nyerat mangrupikeun bottleneck. Kasebut nyaéta dimungkinkeun pikeun ngajalankeun kluster rqlite tina titik tunggal jeung solusi ieu bisa dipaké pikeun nyadiakeun aksés ka SQLite leuwih HTTP tanpa nyadiakeun toleransi sesar.

Data SQLite dina unggal titik henteu disimpen dina file, tapi dina mémori. Dina tingkat lapisan kalayan palaksanaan protokol Raft, log sadaya paréntah SQLite anu nyababkeun parobahan dina pangkalan data disimpen. Log ieu dianggo nalika réplikasi (réplikasi dina tingkat réproduksi paménta dina titik sanés), ngamimitian titik énggal, atanapi pulih tina leungitna konektipitas. Pikeun ngirangan ukuran log, bungkusan otomatis dianggo, anu dimimitian saatos sababaraha parobihan anu ditangtukeun sareng ngarah ka snapshot anu dipasang dina disk, anu aya hubunganana sareng log énggal mimiti disimpen (kaayaan database dina mémori. idéntik jeung snapshot + log robah akumulasi).

Keunggulan rqlite:

  • Gampang nyebarkeun klaster, tanpa peryogi instalasi SQLite anu misah.
  • Kamampuhan pikeun gancang ménta replicated gudang SQL.
  • Siap dianggo dina proyék damel (Produksi-grade).
  • Ayana hiji HTTP (S) API nu ngidinan Anjeun pikeun ngapdet data dina modeu bets jeung nangtukeun titik ngarah tina klaster. Éta ogé nyayogikeun antarmuka garis paréntah sareng kamampuan ngagunakeun sababaraha perpustakaan klien anu diwangun pikeun SQLite.
  • Kasadiaan jasa pikeun ngaidentipikasi titik anu sanés, ngamungkinkeun anjeun nyiptakeun klaster sacara dinamis.
  • Rojongan pikeun énkripsi bursa data antara titik.
  • Kamampuhan pikeun ngonpigurasikeun tingkat mariksa relevansi sareng konsistensi data nalika maca.
  • Kamampuhan pilihan pikeun nyambungkeun titik dina modeu baca wungkul, nu teu ilubiung dina nangtukeun konsensus sarta dipaké pikeun ngaronjatkeun scalability tina klaster pikeun operasi dibaca.
  • Rojongan pikeun bentuk transaksi anjeun sorangan dumasar kana kombinasi paréntah dina hiji pamundut (transaksi dumasar kana BEGIN, COMMIT, ROLLBACK, SAVEPOINT sareng RELEASE henteu dirojong).
  • Rojongan pikeun nyieun cadangan panas.

Pelepasan énggal ngenalkeun parobihan arsitéktur anu penting pikeun ningkatkeun reliabilitas klaster ku cara ningkatkeun prosés routing maca sareng nyerat pamundut ka titik kluster anu leres. titik rqlite kiwari bisa multiplex sababaraha sambungan logis diantara sorangan ngagunakeun sambungan TCP ngadegkeun antara titik ku protokol Raft. Lamun pamundut merlukeun otoritas pamimpin tapi dikirim ka titik sekundér, titik sekundér bisa nangtukeun alamat pamimpin sarta ngirimkeunana ka klien tanpa ngalakukeun itungan konsensus Raft.

Parobihan ogé ngaleungitkeun kabutuhan komponén sinkronisasi metadata anu misah sareng ngaleungitkeun penanganan anu misah tina kaayaan Raft sareng metadata. Titik sekundér ayeuna ngirimkeun pamenta ka titik pamimpin ngan upami diperyogikeun, nalika aranjeunna kedah milarian alamat titik pamimpin. API nyadiakeun kamampuhan pikeun ménta inpo ngeunaan kaayaan titik lianna dina klaster. Paréntah ".sysdump" geus ditambahkeun kana panganteur garis paréntah.

sumber: opennet.ru

Tambahkeun komentar