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

Prebehlo vydanie distribuovaného DBMS rqlite 7.0, ktorý využíva SQLite ako ukladací mechanizmus a umožňuje organizovať prácu klastra zo vzájomne 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 algoritmus Raft konsenzu. Rqlite využíva pôvodnú knižnicu SQLite a 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ácia na úrovni reprodukovania požiadaviek na iných uzloch), pri spúšťaní nového uzla alebo na zotavenie zo straty pripojenia. Na zmenšenie veľkosti logu sa používa automatické balenie, ktoré sa spustí po určenom počte zmien a vedie k fixácii snapshotu, vo vzťahu ku ktorému sa začne udržiavať nový log (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 vo výrobných projektoch (produkčný stupeň).
  • Prítomnosť HTTP(S) API, ktoré vám umožňuje aktualizovať údaje v dávkovom režime a určiť vedúci uzol klastra. K dispozícii je aj rozhranie príkazového riadka a klientske knižnice pre rôzne programovacie jazyky.
  • 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.

V novom vydaní:

  • Pridaná podpora pre automatické klastrovanie rqlite pomocou novej služby detekcie uzlov, ktorá môže fungovať na báze distribuovaného úložiska Consul a etcd. Služba umožňuje, aby sa uzly rqlite navzájom automaticky našli – administrátorovi stačí spustiť niekoľko uzlov na rôznych serveroch, pričom uvedie spoločnú adresu klastra Consul alebo etcd (napríklad „example.com:8500“) a uzly budú automaticky spojené do zhluku. Vedúci uzol periodicky aktualizuje informácie o svojej adrese v úložisku Consul alebo etcd, čo umožňuje následnú zmenu vedúceho bez potreby prekonfigurovania iných uzlov, ako aj pridávanie nových uzlov aj po zmene vedúceho. Staršia služba režimu Discovery spustená na AWS Lambda bola ukončená.
  • Rozhranie CLI umožňuje zadať niekoľko hostiteľov naraz - ak je prvý uzol nedostupný, budú kontaktovaní ďalší hostitelia.
  • Kód na analýzu argumentov príkazového riadka rqlited bol prepracovaný.
  • Zastaraný balík protobuf bol ukončený.
  • Úložisko BoltDB používané pri implementácii protokolu Raft bolo nahradené bbolt, vidlicou z projektu etcd.

Zdroj: opennet.ru

Pridať komentár