Udgivelse af rqlite 7.0, en distribueret fejltolerant DBMS baseret på SQLite

Udgivelsen af ​​det distribuerede DBMS rqlite 7.0 fandt sted, som bruger SQLite som en storage-motor og giver dig mulighed for at organisere arbejdet i en klynge fra lager, der er synkroniseret med hinanden. En af funktionerne ved rqlite er den lette installation, udrulning og vedligeholdelse af et distribueret fejltolerant lager, der ligner etcd og Consul, men bruger en relationel datamodel i stedet for et nøgle/værdi-format. Projektkoden er skrevet i Go og distribueret under MIT-licensen.

For at holde alle noder i en synkroniseret tilstand, bruges Raft-konsensusalgoritmen. Rqlite bruger det originale SQLite-bibliotek og go-sqlite3-driveren, hvorpå der lanceres et lag, der behandler klientanmodninger, udfører replikering til andre noder og overvåger opnåelsen af ​​konsensus om valget af en førende node.

Ændringer i databasen kan kun foretages af den node, der er valgt som leder, men forbindelser med skriveoperationer kan også sendes til andre noder i klyngen, som vil returnere lederens adresse for at gentage anmodningen (i næste version de lover at tilføje automatisk videresendelse af anmodninger til lederen). Hovedvægten er på fejltolerance, så DBMS skalerer kun med læseoperationer, og skriveoperationer er flaskehalsen. Det er muligt at køre en rqlite-klynge fra en enkelt node, og denne løsning kan bruges til at give adgang til SQLite over HTTP uden at give fejltolerance.

SQLite-dataene på hver node er ikke lagret i en fil, men i hukommelsen. På lagniveau med implementeringen af ​​Raft-protokollen føres en log over alle SQLite-kommandoer, der fører til ændringer i databasen. Denne log bruges under replikering (replikering på niveau med reproduktion af anmodninger på andre noder), når du starter en ny node eller til at gendanne efter et tab af forbindelse. For at reducere størrelsen af ​​loggen anvendes automatisk pakning, som starter efter et specificeret antal ændringer og fører til fiksering af et snapshot, i forhold til hvilket en ny log begynder at blive vedligeholdt (databasens tilstand i hukommelsen er identisk med øjebliksbilledet + den akkumulerede ændringslog).

Funktioner af rqlite:

  • Let at implementere en klynge uden behov for en separat SQLite-installation.
  • Evne til hurtigt at opnå replikeret SQL-lagring.
  • Klar til brug i produktionsprojekter (produktionsgrad).
  • Tilstedeværelsen af ​​en HTTP(S) API, der giver dig mulighed for at opdatere data i batch-tilstand og bestemme den førende node i klyngen. En kommandolinjegrænseflade og klientbiblioteker til forskellige programmeringssprog er også tilvejebragt.
  • Tilgængeligheden af ​​en service til at identificere andre noder, så du kan oprette klynger dynamisk.
  • Understøttelse af kryptering af dataudveksling mellem noder.
  • Evne til at konfigurere niveauet for kontrol af relevansen og konsistensen af ​​data ved læsning.
  • Valgfri mulighed for at forbinde noder i skrivebeskyttet tilstand, som ikke deltager i at bestemme konsensus og bruges til at øge skalerbarheden af ​​klyngen til læseoperationer.
  • Understøttelse af din egen form for transaktioner baseret på at kombinere kommandoer i én anmodning (transaktioner baseret på BEGIN, COMMIT, ROLLBACK, SAVEPOINT og RELEASE understøttes ikke).
  • Support til oprettelse af hot backups.

I den nye udgivelse:

  • Tilføjet understøttelse af automatisk rqlite clustering ved hjælp af en ny node detektionstjeneste, der kan arbejde på basis af Consul og etcd distribueret lagring. Tjenesten gør det muligt for rqlite-noder automatisk at finde hinanden - administratoren skal blot starte flere noder på forskellige servere, angive den fælles Consul- eller etcd-klyngeadresse (f.eks. "example.com:8500"), og noderne bliver automatisk kombineret til en klynge. Den førende node opdaterer med jævne mellemrum information om sin adresse i Consul- eller etcd-lageret, hvilket giver dig mulighed for efterfølgende at ændre lederen uden at skulle omkonfigurere andre noder, samt tilføje nye noder, selv efter at du har skiftet leder. Den ældre Discovery Mode-tjeneste, der kører på AWS Lambda, er blevet afbrudt.
  • CLI-grænsefladen gør det muligt at specificere flere værter på én gang - hvis den første node ikke er tilgængelig, vil de næste værter blive kontaktet.
  • Koden til at parse rqlited kommandolinjeargumenter er blevet omarbejdet.
  • Den forældede protobuf-pakke er udgået.
  • BoltDB-lageret brugt i implementeringen af ​​Raft-protokollen er blevet erstattet af bbolt, en gaffel fra etcd-projektet.

Kilde: opennet.ru

Tilføj en kommentar