Rilascio di rqlite 7.0, un DBMS distribuito e ridondante basato su SQLite

È stato rilasciato rqlite 7.0, un database distribuito che utilizza SQLite come motore di archiviazione e consente di organizzare il lavoro di un cluster di archivi sincronizzati. Tra le caratteristiche di rqlite si sottolineano la semplicità di installazione, distribuzione e manutenzione di un archivio distribuito e a tolleranza di guasto, simile a etcd e Consul, ma che utilizza un modello relazionale per la gestione dei dati invece del formato chiave/valore. Il codice del progetto è scritto in Go e distribuito con licenza MIT.

Per mantenere tutti i nodi in uno stato sincronizzato, viene utilizzato l'algoritmo di consenso Raft. Rqlite utilizza l'originale libreria SQLite e il driver go-sqlite3, sopra cui viene eseguito un livello che gestisce le richieste dei clienti, effettuando la replica su altri nodi e monitorando il raggiungimento del consenso per la scelta del nodo leader.

Le modifiche al database possono essere effettuate solo dal nodo scelto come leader, ma le connessioni per le operazioni di scrittura possono essere dirette anche ad altri nodi del cluster, che restituiranno l'indirizzo del leader per ripetere la richiesta (nella prossima versione promettono di aggiungere un'inoltro automatico della richiesta al leader). L'accento è posto sulla resilienza, pertanto il DBMS si scalda solamente per le operazioni di lettura, mentre le operazioni di scrittura costituiscono un collo di bottiglia. È possibile avviare un cluster rqlite da un singolo nodo e questa soluzione può essere utilizzata per organizzare l'accesso a SQLite tramite HTTP senza fornire resilienza.

I dati SQLite su ogni nodo vengono archiviati non in un file, ma in memoria. A livello dello strato che implementa il protocollo Raft, viene mantenuto un registro di tutti i comandi SQLite che portano a modifiche nel database. Questo registro è utilizzato nella replicazione (replicazione a livello di riproduzione delle query sugli altri nodi), all'avvio di un nuovo nodo o per il recupero dopo una perdita di connettività. Per ridurre la dimensione del registro, viene applicato un imballaggio automatico, che si attiva dopo un numero prestabilito di modifiche e porta a un'istantanea, rispetto alla quale inizia a essere mantenuto un nuovo registro (lo stato del database in memoria è identico all'istantanea + il registro delle modifiche accumulate).

Caratteristiche di rqlite:

  • Semplicità nel dispiegamento di un cluster, senza necessità di installare SQLite separatamente.
  • Possibilità di ottenere rapidamente uno storage SQL replicato.
  • Pronto per l'uso in progetti lavorativi (produzione).
  • Disponibilità di un'API HTTP(S) che consente di aggiornare i dati in modalità batch e di determinare il nodo leader del cluster. Sono inoltre forniti un'interfaccia a riga di comando e librerie client per vari linguaggi di programmazione.
  • Disponibilità di un servizio per l'individuazione di altri nodi, che consente di creare cluster dinamicamente.
  • Supporto per la crittografia della comunicazione dei dati tra i nodi.
  • Possibilità di configurare il livello di verifica della validità e coerenza dei dati durante la lettura.
  • Opzione per collegare nodi in modalità di sola lettura, che non partecipano alla definizione del consenso e sono utilizzati per aumentare la scalabilità del cluster per le operazioni di lettura.
  • Supporto per una forma personalizzata di transazioni basata sulla combinazione di comandi in un'unica richiesta (non sono supportate transazioni basate su BEGIN, COMMIT, ROLLBACK, SAVEPOINT e RELEASE).
  • Supporto per la creazione di backup a caldo.

Nel nuovo rilascio:

  • Aggiunto il supporto per il clustering automatico di rqlite utilizzando un nuovo servizio di individuazione dei nodi, che può funzionare con archivi distribuiti come Consul ed etcd. Il servizio consente ai nodi rqlite di trovarsi automaticamente—l'amministratore deve solo avviare alcuni nodi su macchine diverse. server, specificando l'indirizzo generale del cluster Consul o etcd (ad esempio, «example.com:8500»), i nodi verranno automaticamente uniti nel cluster. Il nodo leader aggiorna periodicamente nella memoria di Consul o etcd le informazioni sul proprio indirizzo, permettendo in seguito di cambiare il leader senza dover riconfigurare gli altri nodi, e di aggiungere nuovi nodi anche dopo il cambio di leader. Il supporto per il vecchio servizio di rilevamento dei nodi (Discovery mode) basato su AWS Lambda è stato interrotto.
  • Nell'interfaccia CLI è consentito specificare più host contemporaneamente: se il primo nodo risulta non disponibile, verranno contattati i successivi.
  • Il codice per l'analisi degli argomenti della riga di comando rqlited è stato rielaborato.
  • È stato interrotto l'uso del pacchetto protobuf obsoleto.
  • Il database BoltDB, utilizzato nell'implementazione del protocollo Raft, è stato sostituito con bbolt, un fork del progetto etcd.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster