UtgÄvan av den distribuerade databashanteraren rqlite 6.0 har presenterats, som anvÀnder SQLite som lagringsmotor och möjliggör att organisera en kluster av synkroniserade lagringssystem. Bland rqlites egenskaper mÀrks enkel installation, distribution och underhÄll av ett distribuerat och felresistent lagringssystem, liknande etcd och Consul, men som anvÀnder en relationsmodell för databehandling istÀllet för nyckel/vÀrde-formatet. Projektets kod Àr skriven i Go och distribueras under MIT-licensen.
För att hÄlla alla noder i synkroniserat tillstÄnd anvÀnds Raft-konsensusalgoritmen. Rqlite anvÀnder den ursprungliga SQLite-biblioteket och den inbyggda drivrutinen go-sqlite3, ovanpÄ vilket en mellanlager körs som hanterar klientförfrÄgningar, utför replikering till andra noder och övervakar uppnÄendet av konsensus för val av ledande nod.
Ăndringar i databasen kan endast göras av den nod som valts som ledande, men förbindelser med skrivoperationer kan riktas mot andra noder i klustret, som kommer att returnera adressen till ledaren för att upprepa förfrĂ„gan (i nĂ€sta version lovas automatisk vidarebefordran till ledaren). Huvudfokus ligger pĂ„ felresistens, vilket innebĂ€r att databashanteraren bara kan skalas upp för lĂ€soperationer, medan skrivoperationer Ă€r ett flaskhals. Det Ă€r möjligt att starta en rqlite-kluster frĂ„n en enda nod, och denna lösning kan anvĂ€ndas för att organisera Ă„tkomst till SQLite över HTTP utan att erbjuda felresistens.
SQLite-data pÄ varje nod lagras inte i en fil utan i minnet. PÄ nivÄn för Raft-protokollets implementering finns en logg över alla SQLite-kommando som leder till förÀndringar i databasen. Denna logg anvÀnds vid replikering (replikering pÄ nivÄ med att Äterge förfrÄgningar pÄ andra noder), start av en ny nod eller ÄterstÀllning efter förlust av anslutning. För att minska loggens storlek tillÀmpas automatisk paketering, som startar efter ett angivet antal förÀndringar och leder till att ett snapshot skrivs till disk, vilket det nya logget baseras pÄ (databasens tillstÄnd i minnet Àr identiskt med snapshotet + den ackumulerade förÀndringsloggen).
Features of rqlite:
- Ease of deploying the cluster without needing a separate SQLite installation.
- Möjlighet att snabbt fÄ ett replikerat SQL-lager.
- Klar för anvÀndning i arbetsprojekt (Production-grade).
- TillgÄng till ett HTTP(S) API som möjliggör uppdatering av data i batch och definiering av ledande nod i klustret. En kommandoradsgrÀnssnitt och möjlighet att anvÀnda olika klientbibliotek skapade för SQLite tillhandahÄlls ocksÄ.
- TillgÄng till en tjÀnst för att identifiera andra noder, vilket möjliggör dynamisk skapande av kluster.
- Stöd för kryptering av datakommunikation mellan noder.
- Möjlighet att konfigurera nivÄn av giltighets- och konsistenskontroll vid lÀsning.
- Valfri möjlighet att koppla noder i skrivskyddat lÀge, som inte deltar i konsensusbestÀmningen och anvÀnds för att öka klustrets skalbarhet vid lÀsoperationer.
- Stöd för egendefinierade transaktionsformer baserade pÄ sammanslagning av kommandon i en förfrÄgan (transaktioner baserade pÄ BEGIN, COMMIT, ROLLBACK, SAVEPOINT och RELEASE stöds inte).
- Stöd för skapande av heta sÀkerhetskopior.
I den nya utgÄvan har betydande arkitektoniska förÀndringar gjorts för att öka klustrets tillförlitlighet genom att förbÀttra processen för att dirigera lÀs- och skrivförfrÄgningar till korrekta noder i klustret. Rqlite-noder kan nu multiplexera flera logiska anslutningar mellan varandra, med hjÀlp av TCP-anslutningar som upprÀttats mellan noderna via Raft-protokollet. Om en begÀran krÀver behörigheter frÄn den ledande noden men skickas till en sekundÀr nod, kan den sekundÀra noden bestÀmma ledarens adress och vidarebefordra den till klienten utan att utföra konsensusberÀkningen enligt Raft-protokollet.
Ăndringen har ocksĂ„ möjliggjort att man kan eliminera en separat komponent för synkronisering av metadata och utesluta separat behandling av Raft-tillstĂ„nd och metadata. SekundĂ€ra noder riktar nu förfrĂ„gningar till ledarnoden endast vid behov, nĂ€r det Ă€r nödvĂ€ndigt att ta reda pĂ„ adressen till den ledande noden. API:et erbjuder möjlighet att hĂ€mta information om tillstĂ„ndet för andra noder i klustret. Ett nytt kommando " .sysdump " har lagts till i kommandoradsgrĂ€nssnittet.
KĂ€lla: opennet.ru
