Sortie de rqlite 7.0, une base de données distribué et résiliente fondée sur SQLite

La version 7.0 de la base de données distribuée rqlite a été publiée. Elle utilise SQLite comme moteur de stockage et permet de structurer un cluster d'entrepÎts synchronisés. Parmi les caractéristiques de rqlite, on note la simplicité d'installation, de déploiement et d'entretien d'un entrepÎt distribué tolérant aux pannes, similaire à etcd et Consul, mais adoptant un modÚle relationnel de travail avec les données au lieu d'un format clé/valeur. Le code du projet est écrit en Go et est distribué sous licence MIT.

Pour maintenir tous les nƓuds en Ă©tat synchronisĂ©, l'algorithme de consensus Raft est utilisĂ©. Rqlite utilise la bibliothĂšque SQLite originale et le pilote go-sqlite3, sur lesquels s'exĂ©cute une couche traitant les requĂȘtes des clients, rĂ©alisant la rĂ©plication vers d'autres nƓuds et surveillant l'atteinte du consensus pour le choix du nƓud leader.

Les modifications de la base de donnĂ©es ne peuvent ĂȘtre apportĂ©es que par le nƓud dĂ©signĂ© comme leader, mais les connexions pour les opĂ©rations d'Ă©criture peuvent ĂȘtre envoyĂ©es Ă  d'autres nƓuds du cluster, qui renverront l'adresse du leader pour rĂ©pĂ©ter la requĂȘte (la prochaine version promet d'ajouter un passage automatique Ă  l'adresse du leader). L'accent est mis sur la tolĂ©rance aux pannes, c'est pourquoi la base de donnĂ©es ne se dĂ©veloppe que pour les opĂ©rations de lecture, tandis que les opĂ©rations d'Ă©criture constituent un goulet d'Ă©tranglement. Un cluster rqlite peut ĂȘtre lancĂ© Ă  partir d'un seul nƓud, ce qui peut ĂȘtre utilisĂ© pour organiser l'accĂšs Ă  SQLite via HTTP sans garantir de tolĂ©rance aux pannes.

Les donnĂ©es SQLite sur chaque nƓud ne sont pas stockĂ©es dans un fichier, mais en mĂ©moire. Au niveau de la couche implĂ©mentant le protocole Raft, un journal de toutes les commandes SQLite entraĂźnant des modifications de la base de donnĂ©es est tenu. Ce journal est utilisĂ© lors de la rĂ©plication (rĂ©plication au niveau de la reproduction des requĂȘtes sur d'autres nƓuds), au lancement d'un nouveau nƓud ou pour la rĂ©cupĂ©ration aprĂšs une perte de connectivitĂ©. Pour rĂ©duire la taille du journal, une compression automatique est appliquĂ©e, qui se dĂ©clenche aprĂšs un certain nombre de modifications et conduit Ă  la fixation d'un instantanĂ©, par rapport auquel un nouveau journal commence Ă  ĂȘtre tenu (l'Ă©tat de la base en mĂ©moire est identique Ă  l'instantanĂ© + le journal des modifications accumulĂ©es).

Caractéristiques de rqlite :

  • SimplicitĂ© de dĂ©ploiement du cluster, sans nĂ©cessiter d'installation sĂ©parĂ©e de SQLite.
  • PossibilitĂ© d'obtenir rapidement un stockage SQL rĂ©pliquĂ©.
  • PrĂȘt Ă  ĂȘtre utilisĂ© dans des projets de production.
  • DisponibilitĂ© d'une API HTTP(S) permettant de mettre Ă  jour les donnĂ©es par lots et de dĂ©finir le nƓud principal du cluster. Une interface en ligne de commande et des bibliothĂšques clientes pour divers langages de programmation sont Ă©galement fournies.
  • DisponibilitĂ© d'un service pour identifier d'autres nƓuds, permettant de crĂ©er des clusters de maniĂšre dynamique.
  • Support du chiffrement des Ă©changes de donnĂ©es entre les nƓuds.
  • PossibilitĂ© de configurer le niveau de vĂ©rification de l'actualitĂ© et de la cohĂ©rence des donnĂ©es lors de la lecture.
  • PossibilitĂ© optionnelle de connecter des nƓuds en mode lecture seule, ne participant pas Ă  la dĂ©termination du consensus et utilisĂ©s pour augmenter la scalabilitĂ© du cluster pour les opĂ©rations de lecture.
  • Support d'une forme propre des transactions basĂ©e sur la fusion de commandes dans une seule requĂȘte (les transactions basĂ©es sur BEGIN, COMMIT, ROLLBACK, SAVEPOINT et RELEASE ne sont pas supportĂ©es).
  • Support de la crĂ©ation de sauvegardes Ă  chaud.

Dans cette nouvelle version :

  • Ajout du support du clustering automatique rqlite utilisant un nouveau service d'identification des nƓuds, pouvant fonctionner sur des stockages distribuĂ©s Consul et etcd. Le service permet aux nƓuds rqlite de se trouver automatiquement — l'administrateur n'a qu'Ă  lancer plusieurs nƓuds sur diffĂ©rents serveurs, en indiquant l'adresse commune du cluster Consul ou etcd (par exemple, « example.com:8500 »), et les nƓuds seront automatiquement groupĂ©s en cluster. Le nƓud principal met rĂ©guliĂšrement Ă  jour dans le stockage Consul ou etcd son adresse, permettant de changer ensuite de leader sans reconfiguration des autres nƓuds, ainsi que d'ajouter de nouveaux nƓuds mĂȘme aprĂšs un changement de leader. Le support de l'ancien service d'identification des nƓuds (Discovery mode) fonctionnant sur AWS Lambda est interrompu.
  • Dans l'interface CLI, il est maintenant possible d'indiquer plusieurs hĂŽtes — si le premier nƓud est inaccessible, l'appel se fera aux hĂŽtes suivants.
  • Le code pour l'analyse des arguments de ligne de commande rqlited a Ă©tĂ© retravaillĂ©.
  • L'utilisation du paquet obsolĂšte protobuf a Ă©tĂ© abandonnĂ©e.
  • Le stockage BoltDB, utilisĂ© dans la mise en Ɠuvre du protocole Raft, a Ă©tĂ© remplacĂ© par bbolt, un fork du projet etcd.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster