Llançament de rqlite 7.0, un SGBD distribuït tolerant a errors basat en SQLite

Va tenir lloc el llançament del DBMS distribuït rqlite 7.0, que utilitza SQLite com a motor d'emmagatzematge i permet organitzar el treball d'un clúster a partir d'emmagatzematges sincronitzats entre si. Una de les característiques de rqlite és la facilitat d'instal·lació, desplegament i manteniment d'un emmagatzematge distribuït tolerant a fallades, una mica similar a etcd i Consul, però utilitzant un model de dades relacionals en lloc d'un format clau/valor. El codi del projecte està escrit a Go i es distribueix sota la llicència MIT.

Per mantenir tots els nodes en un estat sincronitzat, s'utilitza l'algoritme de consens Raft. Rqlite utilitza la biblioteca SQLite original i el controlador go-sqlite3, a la part superior del qual es llança una capa que processa les sol·licituds dels clients, realitza la replicació a altres nodes i supervisa l'assoliment del consens sobre l'elecció d'un node líder.

Els canvis a la base de dades només els pot fer el node seleccionat com a líder, però les connexions amb operacions d'escriptura també es poden enviar a altres nodes del clúster, que retornarà l'adreça del líder per repetir la sol·licitud (en la següent versió promet afegir el reenviament automàtic de sol·licituds al líder). L'èmfasi principal està en la tolerància a errors, de manera que el SGBD només s'escala amb operacions de lectura, i les operacions d'escriptura són el coll d'ampolla. És possible executar un clúster rqlite des d'un sol node i aquesta solució es pot utilitzar per proporcionar accés a SQLite mitjançant HTTP sense proporcionar tolerància a errors.

Les dades SQLite de cada node no s'emmagatzemen en un fitxer, sinó a la memòria. A nivell de capa amb la implementació del protocol Raft, es manté un registre de totes les ordres SQLite que condueixen a canvis a la base de dades. Aquest registre s'utilitza durant la replicació (replicació a nivell de reproducció de peticions en altres nodes), quan s'inicia un nou node o per recuperar-se d'una pèrdua de connectivitat. Per reduir la mida del registre, s'utilitza l'empaquetament automàtic, que comença després d'un nombre determinat de canvis i condueix a la fixació d'una instantània, en relació a la qual es comença a mantenir un registre nou (l'estat de la base de dades a la memòria és idèntic a la instantània + el registre de canvis acumulat).

Característiques de rqlite:

  • Fàcil de desplegar un clúster, sense necessitat d'una instal·lació SQLite independent.
  • Capacitat d'obtenir ràpidament emmagatzematge SQL replicat.
  • A punt per al seu ús en projectes de producció (nivell de producció).
  • La presència d'una API HTTP(S) que us permet actualitzar les dades en mode per lots i determinar el node principal del clúster. També es proporciona una interfície de línia d'ordres i biblioteques de client per a diversos llenguatges de programació.
  • Disponibilitat d'un servei d'identificació d'altres nodes, que permet crear clústers de forma dinàmica.
  • Suport per xifrar l'intercanvi de dades entre nodes.
  • Capacitat de configurar el nivell de comprovació de la rellevància i la coherència de les dades en llegir.
  • Capacitat opcional de connectar nodes en mode de només lectura, que no participen en la determinació del consens i s'utilitzen per augmentar l'escalabilitat del clúster per a operacions de lectura.
  • Suport per a la vostra pròpia forma de transaccions basada en la combinació d'ordres en una sol·licitud (les transaccions basades en BEGIN, COMMIT, ROLLBACK, SAVEPOINT i RELEASE no s'admeten).
  • Suport per a la creació de còpies de seguretat en calent.

A la nova versió:

  • S'ha afegit suport per a l'agrupació automàtica de rqlite mitjançant un nou servei de detecció de nodes que pot funcionar sobre la base de l'emmagatzematge distribuït Consul i etcd. El servei permet que els nodes rqlite es trobin automàticament entre ells: l'administrador només ha de llançar diversos nodes en diferents servidors, especificant l'adreça comuna del clúster Consul o etcd (per exemple, "example.com:8500"), i els nodes seran automàticament. combinat en un clúster. El node líder actualitza periòdicament la informació sobre la seva adreça a l'emmagatzematge Cònsol o etcd, la qual cosa us permet canviar posteriorment el líder sense necessitat de reconfigurar altres nodes, així com afegir nous nodes fins i tot després de canviar el líder. El servei de mode Discovery heretat que s'executa a AWS Lambda s'ha interromput.
  • La interfície CLI permet especificar diversos amfitrions alhora; si el primer node no està disponible, es contactarà amb els següents amfitrions.
  • S'ha reelaborat el codi per analitzar els arguments de la línia d'ordres rqlited.
  • El paquet protobuf obsolet s'ha deixat de fabricar.
  • L'emmagatzematge BoltDB utilitzat en la implementació del protocol Raft ha estat substituït per bbolt, una forquilla del projecte etcd.

Font: opennet.ru

Afegeix comentari