Veröffentlichung von rqlite 7.0, einer verteilten, fehlertoleranten Datenbank auf Basis von SQLite.

Die verteilte Datenbank rqlite 7.0 wurde veröffentlicht, die SQLite als Speichermotor verwendet und die Organisation eines Clusters aus untereinander synchronisierten Speichern ermöglicht. Zu den Eigenschaften von rqlite zÀhlen die Einfachheit der Installation, Bereitstellung und Wartung eines verteilten fehlertoleranten Speichers, Àhnlich wie bei etcd und Consul, jedoch mit einem relationalen Datenmodell anstelle des Key/Value-Formats. Der Projektcode ist in Go geschrieben und wird unter der MIT-Lizenz verbreitet.

Zur Aufrechterhaltung aller Knoten in synchronisiertem Zustand wird der Konsensalgorithmus Raft verwendet. Rqlite nutzt die originale SQLite-Bibliothek und den Treiber go-sqlite3, auf denen eine Schnittstelle lĂ€uft, die die Clientanfragen verarbeitet, die Replikation auf andere Knoten durchfĂŒhrt und den Konsens ĂŒber die Wahl des fĂŒhrenden Knotens verfolgt.

Änderungen an der Datenbank können nur von dem Knoten vorgenommen werden, der als fĂŒhrend ausgewĂ€hlt wurde, jedoch können Verbindungen fĂŒr Schreiboperationen auch an andere Knoten im Cluster gerichtet werden, die die Adresse des Leaders zur Wiederholung der Anfrage zurĂŒckgeben. In der nĂ€chsten Version wird versprochen, die automatische Weiterleitung von Anfragen an den Leader hinzuzufĂŒgen. Der Hauptfokus liegt auf der Fehlertoleranz, daher skaliert die Datenbank nur bei Leseoperationen, wĂ€hrend Schreiboperationen ein Engpass darstellen. Es ist möglich, ein rqlite-Cluster mit einem einzigen Knoten zu starten, und dieses Setup kann verwendet werden, um auf SQLite ĂŒber HTTP zuzugreifen, ohne Fehlertoleranz bereitzustellen.

Die SQLite-Daten werden auf jedem Knoten nicht in einer Datei, sondern im Arbeitsspeicher gespeichert. Auf der Ebene des Raft-Protokolls wird ein Protokoll aller SQLite-Befehle gefĂŒhrt, die zu Änderungen der Datenbank fĂŒhren. Dieses Protokoll wird bei der Replikation (Replikation auf der Ebene der Wiederholung von Abfragen auf anderen Knoten), beim Start eines neuen Knotens oder zur Wiederherstellung nach einem Verbindungsverlust verwendet. Zur Reduzierung der ProtokollgrĂ¶ĂŸe wird eine automatische Kompression angewendet, die nach einer bestimmten Anzahl von Änderungen ausgelöst wird und einen Snapshot erstellt, auf dessen Grundlage ein neues Protokoll gefĂŒhrt wird (der Zustand der Datenbank im Speicher entspricht dem Snapshot plus dem angefallenen Änderungsprotokoll).

Merkmale von rqlite:

  • Einfache Bereitstellung des Clusters, ohne dass eine separate Installation von SQLite erforderlich ist.
  • Die Möglichkeit, schnell ein repliziertes SQL-Speicher zu erhalten.
  • Bereit fĂŒr den Einsatz in Arbeitsprojekten (Production-Grade).
  • Vorhandensein einer HTTP(S) API, die das Aktualisieren von Daten im Batch-Modus ermöglicht und den fĂŒhrenden Knoten des Clusters bestimmt. Es stehen auch eine KommandozeilenoberflĂ€che und Client-Bibliotheken fĂŒr verschiedene Programmiersprachen zur VerfĂŒgung.
  • Vorhandensein eines Dienstes zur Bestimmung anderer Knoten, der es ermöglicht, Cluster dynamisch zu erstellen.
  • UnterstĂŒtzung der VerschlĂŒsselung des Datenaustauschs zwischen Knoten.
  • Möglichkeit zur Anpassung des PrĂŒfniveaus der Relevanz und Konsistenz von Daten beim Lesen.
  • Optionale Möglichkeit, Knoten im Nur-Lese-Modus anzuschließen, die nicht an der Bestimmung des Konsenses teilnehmen und zur Skalierung des Clusters fĂŒr LesevorgĂ€nge verwendet werden.
  • UnterstĂŒtzung einer eigenen Form von Transaktionen auf Basis der ZusammenfĂŒhrung von Befehlen in einer Anfrage (Transaktionen auf Basis von BEGIN, COMMIT, ROLLBACK, SAVEPOINT und RELEASE werden nicht unterstĂŒtzt).
  • UnterstĂŒtzung fĂŒr die Erstellung von Hot-Backups.

In der neuen Version:

  • UnterstĂŒtzung fĂŒr automatisches Clustering von rqlite mit dem neuen Dienst zur Bestimmung von Knoten, der auf verteilten Speichern wie Consul und etcd arbeiten kann, wurde hinzugefĂŒgt. Der Dienst ermöglicht es rqlite-Knoten, sich automatisch zu finden – der Administrator muss nur einige Knoten auf verschiedenen Servern, angeben einer gemeinsamen Adresse des Consul- oder etcd-Clusters (zum Beispiel „example.com:8500“), und die Knoten werden automatisch zu einem Cluster verbunden. Der fĂŒhrende Knoten aktualisiert regelmĂ€ĂŸig die Informationen ĂŒber seine Adresse im Consul- oder etcd-Speicher, was es ermöglicht, den FĂŒhrenden spĂ€ter zu Ă€ndern, ohne dass eine Neukonfiguration der anderen Knoten erforderlich ist, und neue Knoten hinzuzufĂŒgen, selbst nach einer Änderung des FĂŒhrenden. Der alte Dienst zur Bestimmung von Knoten (Discovery-Modus), der auf AWS Lambda basierte, wurde eingestellt.
  • Im CLI-Interface ist es erlaubt, mehrere Hosts gleichzeitig anzugeben – wenn der erste Knoten nicht verfĂŒgbar ist, wird auf die nĂ€chsten Hosts zugegriffen.
  • Der Code zur Analyse der Kommandozeilenargumente von rqlited wurde ĂŒberarbeitet.
  • Die Verwendung des veralteten Protokollpakets wurde eingestellt.
  • Der BoltDB-Speicher, der in der Implementierung des Raft-Protokolls verwendet wurde, wurde durch bbolt ersetzt, einen Fork des Projekts etcd.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster