Vydání rqlite 7.0, distribuované DBMS odolné proti chybám založené na SQLite

Proběhlo vydání distribuovaného DBMS rqlite 7.0, který využívá SQLite jako storage engine a umožňuje organizovat práci clusteru ze vzájemně synchronizovaných úložišť. Jednou z vlastností rqlite je snadná instalace, nasazení a údržba distribuovaného úložiště odolného proti chybám, poněkud podobnému jako etcd a Consul, ale místo formátu klíč/hodnota používá relační datový model. Kód projektu je napsán v Go a distribuován pod licencí MIT.

K udržení všech uzlů v synchronizovaném stavu se používá algoritmus Raft consensus. Rqlite využívá původní knihovnu SQLite a ovladač go-sqlite3, nad nimiž je spuštěna vrstva, která zpracovává požadavky klientů, provádí replikaci do jiných uzlů a monitoruje dosažení konsensu o volbě vedoucího uzlu.

Změny v databázi může provádět pouze uzel, který je vybrán jako vedoucí, ale spojení s operacemi zápisu lze posílat i dalším uzlům v clusteru, které vrátí adresu vedoucího pro opakování požadavku (v další verzi slib přidat automatické přeposílání požadavků vedoucímu). Hlavní důraz je kladen na odolnost proti chybám, takže DBMS se škáluje pouze pomocí operací čtení a operace zápisu jsou úzkým hrdlem. Cluster rqlite je možné provozovat z jednoho uzlu a toto řešení lze použít k poskytování přístupu k SQLite přes HTTP bez zajištění odolnosti proti chybám.

Data SQLite na každém uzlu nejsou uložena v souboru, ale v paměti. Na úrovni vrstvy s implementací protokolu Raft je veden protokol všech SQLite příkazů, které vedou ke změnám v databázi. Tento protokol se používá během replikace (replikace na úrovni reprodukce požadavků na jiných uzlech), při spouštění nového uzlu nebo k zotavení ze ztráty připojení. Pro zmenšení velikosti logu se používá automatické sbalování, které se spustí po zadaném počtu změn a vede k fixaci snapshotu, ve vztahu k němuž se začne udržovat nový log (stav databáze v paměti je identické se snímkem + akumulovaným protokolem změn).

Vlastnosti rqlite:

  • Snadné nasazení clusteru bez nutnosti samostatné instalace SQLite.
  • Schopnost rychle získat replikované úložiště SQL.
  • Připraveno pro použití ve výrobních projektech (produkční stupeň).
  • Přítomnost HTTP(S) API, které vám umožňuje aktualizovat data v dávkovém režimu a určit vedoucí uzel clusteru. K dispozici je také rozhraní příkazového řádku a klientské knihovny pro různé programovací jazyky.
  • Dostupnost služby pro identifikaci dalších uzlů, která vám umožní dynamicky vytvářet clustery.
  • Podpora šifrování výměny dat mezi uzly.
  • Možnost konfigurovat úroveň kontroly relevance a konzistence dat při čtení.
  • Volitelná možnost připojení uzlů v režimu pouze pro čtení, které se nepodílejí na určování konsensu a slouží ke zvýšení škálovatelnosti clusteru pro operace čtení.
  • Podpora vlastní formy transakcí na základě kombinování příkazů v jednom požadavku (transakce založené na BEGIN, COMMIT, ROLLBACK, SAVEPOINT a RELEASE nejsou podporovány).
  • Podpora pro vytváření horkých záloh.

V novém vydání:

  • Přidána podpora automatického shlukování rqlite pomocí nové služby detekce uzlů, která může fungovat na bázi distribuovaného úložiště Consul a etcd. Služba umožňuje rqlite uzlům, aby se navzájem automaticky nacházely – administrátorovi stačí spustit několik uzlů na různých serverech, specifikovat společnou adresu clusteru Consul nebo etcd (například „example.com:8500“) a uzly budou automaticky sloučeny do shluku. Vedoucí uzel pravidelně aktualizuje informace o své adrese v úložišti Consul nebo etcd, což umožňuje následně změnit vedoucí bez nutnosti překonfigurování dalších uzlů a také přidávat nové uzly i po změně vedoucího. Starší služba režimu Discovery běžící na AWS Lambda byla ukončena.
  • Rozhraní CLI umožňuje zadat několik hostitelů najednou - pokud je první uzel nedostupný, budou kontaktováni další hostitelé.
  • Kód pro analýzu argumentů příkazového řádku rqlited byl přepracován.
  • Zastaralý balíček protobuf byl ukončen.
  • Úložiště BoltDB používané při implementaci protokolu Raft bylo nahrazeno bbolt, vidlicí z projektu etcd.

Zdroj: opennet.ru

Přidat komentář