Udgivelse af rqlite 6.0, en distribueret fejltolerant database baseret på SQLite

Den distribuerede DBMS rqlite 6.0 er udgivet, som bruger SQLite som lagermotor og muliggør etablering af en klynge af synkroniserede lagre. Rqlite fremhæver enkel installation, implementering og vedligeholdelse af et distribueret fejltolerant lager, der minder om etcd og Consul, men som bruger en relationel datamodel i stedet for et nøgle/værdi-format. Projektets kode er skrevet i Go og distribueres under MIT-licensen.

For at holde alle noder synkroniseret anvendes Raft-konsensus algoritmen. Rqlite bruger den originale SQLite-bibliotek og standard driveren go-sqlite3, hvorpå en lag oprettes, der behandler klientanmodninger, udfører replikation til andre noder og overvåger opnåelsen af konsensus i valget af ledernod.

Ændringer i databasen kan kun foretages af noden, der er valgt som leder, men forbindelser til skriveoperationer kan rettes mod andre noder i klyngen, som returnerer adressen på lederen for at gentage anmodningen (i den næste version lovede de at tilføje automatisk omdirigering til lederen). Hovedvægten lægges på fejltolerance, så DBMS'en skalerer kun efter læseoperationer, mens skriveoperationer er flaskehalse. Det er muligt at starte en rqlite-klynge fra en enkelt node, og en sådan løsning kan bruges til at give adgang til SQLite over HTTP uden at tilbyde fejltolerance.

Dataene i SQLite på hver node opbevares ikke i en fil, men i hukommelsen. På niveauet for lag med Raft-protokollen føres der en log over alle SQLite-kommandoer, der fører til ændringer i databasen. Denne log bruges ved replikation (replikation ved at afspille anmodninger på andre noder), ved opstart af en ny node eller ved genopretning efter tab af forbindelse. For at reducere loggens størrelse anvendes automatisk komprimering, som startes efter et angivet antal ændringer og resulterer i gemmelsen af et snapshot på disken, hvorefter der føres en ny log (databasens tilstand i hukommelsen er identisk med snapshot'et + den akkumulerede log over ændringer).

Egenskaber ved rqlite:

  • Nem opsætning af kluster uden behov for separat installation af SQLite.
  • Mulighed for hurtigt at få et replikeret SQL-lager.
  • Klar til brug i produktionsprojekter (Production-grade).
  • Tilgængelighed af HTTP(S) API, der muliggør opdatering af data i batch og bestemmelse af den førende node i klyngen. Der tilbydes også et kommandolinjeinterface og mulighed for at bruge forskellige klientbiblioteker, der er oprettet til SQLite.
  • Tilstedeværelsen af en service til at identificere andre noder, hvilket muliggør dynamisk oprettelse af klynger.
  • Understøttelse af kryptering af dataudveksling mellem noder.
  • Mulighed for at konfigurere niveauet for validering af aktualitet og konsistens af data ved læsning.
  • Valgfri mulighed for at tilslutte noder i skrivebeskyttet mode, der ikke deltager i konsensusbestemmelse og bruges til at øge klyngens skalerbarhed for læseoperationer.
  • Understøttelse af en brugerdefineret transaktionsform baseret på samling af kommandoer i én forespørgsel (transaktioner baseret på BEGIN, COMMIT, ROLLBACK, SAVEPOINT og RELEASE understøttes ikke).
  • Understøttelse af oprettelse af varme sikkerhedskopier.

Den nye version indeholder betydelige arkitekturændringer, der sigter mod at forbedre klyngens pålidelighed ved at forbedre processen med at dirigere læse- og skriveanmodninger til de rigtige noder i klyngen. rqlite-noder kan nu multiplexere mellem flere logiske forbindelser ved hjælp af TCP-forbindelser etableret mellem noderne via Raft-protokollen. Hvis en anmodning kræver beføjelser fra den ledende node, men sendes til en sekundær node, kan den sekundære node bestemme lederens adresse og videregive denne til klienten uden at udføre konsensusberegning via Raft-protokollen.

Ændringen har også gjort det muligt at fjerne en separat komponent til synkronisering af metadata og eliminere den separate behandling af Raft-status og metadata. Sekundære noder dirigerer nu anmodninger til lederen kun efter behov, når det er nødvendigt at få lederens adresse. API'et giver mulighed for at få information om tilstanden af andre noder i klyngen. Der er tilføjet en kommando '.sysdump' til kommandolinjeinterfacet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster