Vydanie rqlite 6.0, distribuovaného DBMS odolného voči chybám založeného na SQLite

Predstavuje sa vydanie distribuovaného DBMS rqlite 6.0, ktoré používa SQLite ako ukladací mechanizmus a umožňuje organizovať prácu klastra synchronizovaných úložísk. Jednou z vlastností rqlite je jednoduchosť inštalácie, nasadenia a údržby distribuovaného úložiska odolného voči chybám, ktoré je trochu podobné ako etcd a Consul, ale namiesto formátu kľúč/hodnota používa relačný dátový model. Kód projektu je napísaný v Go a distribuovaný pod licenciou MIT.

Na udržanie všetkých uzlov v synchronizovanom stave sa používa konsenzuálny algoritmus Raft. Rqlite využíva pôvodnú knižnicu SQLite a štandardný ovládač go-sqlite3, nad ktorým je spustená vrstva, ktorá spracováva požiadavky klientov, vykonáva replikáciu do iných uzlov a monitoruje dosiahnutie konsenzu o výbere vedúceho uzla.

Zmeny v databáze môže vykonávať iba uzol, ktorý je vybraný ako vedúci, ale spojenia s operáciami zápisu môžu byť odoslané aj iným uzlom v klastri, ktoré vrátia adresu vedúceho na zopakovanie požiadavky (v ďalšej verzii budú sľúbiť pridať automatické preposielanie žiadostí vedúcemu). Hlavný dôraz sa kladie na odolnosť voči chybám, takže DBMS sa škáluje iba pomocou operácií čítania a operácie zápisu sú prekážkou. Je možné spustiť klaster rqlite z jedného uzla a toto riešenie možno použiť na poskytnutie prístupu k SQLite cez HTTP bez poskytovania odolnosti voči chybám.

Údaje SQLite na každom uzle nie sú uložené v súbore, ale v pamäti. Na úrovni vrstvy s implementáciou protokolu Raft sa uchováva protokol všetkých príkazov SQLite, ktoré vedú k zmenám v databáze. Tento protokol sa používa počas replikácie (replikácie na úrovni reprodukovania požiadaviek na iných uzloch), spúšťania nového uzla alebo obnovy po strate pripojenia. Na zmenšenie veľkosti protokolu sa používa automatické balenie, ktoré sa spustí po určenom počte zmien a vedie k tomu, že sa na disk zafixuje snímka, v súvislosti s ktorou sa začne uchovávať nový protokol (stav databázy v pamäti je identický so snímkou ​​+ protokolom nahromadených zmien).

Vlastnosti rqlite:

  • Jednoduché nasadenie klastra bez potreby samostatnej inštalácie SQLite.
  • Schopnosť rýchlo získať replikované úložisko SQL.
  • Pripravené na použitie v pracovných projektoch (stupeň výroby).
  • Prítomnosť HTTP(S) API, ktoré vám umožňuje aktualizovať údaje v dávkovom režime a určiť vedúci uzol klastra. Poskytuje tiež rozhranie príkazového riadka a možnosť používať rôzne klientske knižnice vytvorené pre SQLite.
  • Dostupnosť služby na identifikáciu iných uzlov, ktorá vám umožňuje dynamicky vytvárať klastre.
  • Podpora pre šifrovanie výmeny dát medzi uzlami.
  • Schopnosť konfigurovať úroveň kontroly relevantnosti a konzistencie údajov pri čítaní.
  • Voliteľná možnosť pripojenia uzlov v režime iba na čítanie, ktoré sa nezúčastňujú na určovaní konsenzu a slúžia na zvýšenie škálovateľnosti klastra pre operácie čítania.
  • Podpora vlastnej formy transakcií na základe kombinovania príkazov v jednej požiadavke (transakcie založené na BEGIN, COMMIT, ROLLBACK, SAVEPOINT a RELEASE nie sú podporované).
  • Podpora vytvárania horúcich záloh.

Nové vydanie prináša významné architektonické zmeny zamerané na zvýšenie spoľahlivosti klastra zlepšením procesu smerovania požiadaviek na čítanie a zápis do správnych uzlov klastra. Uzly rqlite môžu teraz medzi sebou multiplexovať viacero logických spojení pomocou TCP spojení vytvorených medzi uzlami protokolom Raft. Ak požiadavka vyžaduje oprávnenie vedúceho, ale je odoslaná sekundárnemu uzlu, sekundárny uzol môže určiť adresu vedúceho a odovzdať ju klientovi bez vykonania výpočtov konsenzu Raft.

Zmena tiež eliminovala potrebu samostatného komponentu na synchronizáciu metadát a eliminovala oddelené zaobchádzanie so stavom a metadátami Raft. Sekundárne uzly teraz posielajú požiadavky vedúcemu uzlu iba v prípade potreby, keď potrebujú zistiť adresu vedúceho uzla. API poskytuje možnosť získať informácie o stave ostatných uzlov v klastri. Do rozhrania príkazového riadka bol pridaný príkaz ".sysdump".

Zdroj: opennet.ru

Pridať komentár