Vrystelling van rqlite 7.0, 'n verspreide foutverdraagsame DBMS gebaseer op SQLite

Die vrystelling van die verspreide DBMS rqlite 7.0 het plaasgevind, wat SQLite as 'n stoor-enjin gebruik en jou toelaat om die werk van 'n groepering te organiseer vanaf bergings wat met mekaar gesinchroniseer is. Een van die kenmerke van rqlite is die gemak van installasie, ontplooiing en instandhouding van 'n verspreide foutverdraagsame berging, ietwat soortgelyk aan etcd en Consul, maar met behulp van 'n relasionele datamodel in plaas van 'n sleutel/waarde-formaat. Die projekkode is in Go geskryf en onder die MIT-lisensie versprei.

Om alle nodusse in 'n gesinchroniseerde toestand te hou, word die Raft-konsensusalgoritme gebruik. Rqlite gebruik die oorspronklike SQLite-biblioteek en die go-sqlite3-bestuurder, waarop 'n laag geloods word wat kliëntversoeke verwerk, replikasie na ander nodusse uitvoer en die bereiking van konsensus oor die keuse van 'n leidende nodus monitor.

Veranderinge aan die databasis kan slegs gemaak word deur die nodus wat as die leier gekies is, maar verbindings met skryfbewerkings kan ook na ander nodusse in die groep gestuur word, wat die leier se adres sal terugstuur om die versoek te herhaal (in die volgende weergawe belowe om outomatiese aanstuur van versoeke aan die leier by te voeg). Die hoofklem is op fouttoleransie, so die DBMS skaal slegs met leesbewerkings, en skryfbewerkings is die bottelnek. Dit is moontlik om 'n rqlite-kluster vanaf 'n enkele nodus te laat loop en hierdie oplossing kan gebruik word om toegang tot SQLite oor HTTP te verskaf sonder om fouttoleransie te verskaf.

Die SQLite-data op elke nodus word nie in 'n lêer gestoor nie, maar in die geheue. Op die laagvlak met die implementering van die Raft-protokol word 'n log van alle SQLite-opdragte gehou wat tot veranderinge aan die databasis lei. Hierdie log word gebruik tydens replikasie (replikasie op die vlak van die replikasie van versoeke op ander nodusse), wanneer 'n nuwe nodus begin word, of om te herstel van 'n verlies aan konnektiwiteit. Om die grootte van die log te verminder, word outomatiese verpakking gebruik, wat begin na 'n gespesifiseerde aantal veranderinge en lei tot die vasstelling van 'n momentopname, in verhouding waarmee 'n nuwe log begin in stand gehou word (die toestand van die databasis in geheue is identies aan die momentopname + die opgehoopte veranderingslogboek).

Kenmerke van rqlite:

  • Maklik om 'n cluster te ontplooi, sonder die behoefte aan 'n aparte SQLite-installasie.
  • Vermoë om vinnig gerepliseerde SQL-berging te bekom.
  • Gereed vir gebruik in produksieprojekte (produksiegraad).
  • Die teenwoordigheid van 'n HTTP(S) API wat jou toelaat om data in bondelmodus op te dateer en die voorste nodus van die groepie te bepaal. 'n Opdragreël-koppelvlak en kliëntbiblioteke vir verskeie programmeertale word ook verskaf.
  • Beskikbaarheid van 'n diens vir die identifisering van ander nodusse, wat jou toelaat om groepe dinamies te skep.
  • Ondersteuning vir die enkripteer van data-uitruiling tussen nodusse.
  • Vermoë om die vlak van kontrolering van die relevansie en konsekwentheid van data tydens lees op te stel.
  • Opsionele vermoë om nodusse in leesalleenmodus te verbind, wat nie deelneem aan die bepaling van konsensus nie en wat gebruik word om die skaalbaarheid van die groepering vir leesbewerkings te verhoog.
  • Ondersteuning vir jou eie vorm van transaksies gebaseer op die kombinasie van opdragte in een versoek (transaksies gebaseer op BEGIN, COMMIT, ROLLBACK, SAVEPOINT en RELEASE word nie ondersteun nie).
  • Ondersteuning vir die skep van warm rugsteun.

In die nuwe vrystelling:

  • Bygevoeg ondersteuning vir outomatiese rqlite groepering met behulp van 'n nuwe nodus opsporing diens wat kan werk op die basis van Consul en etcd verspreide berging. Die diens laat rqlite-nodusse toe om mekaar outomaties te vind - die administrateur hoef net verskeie nodusse op verskillende bedieners te begin, en spesifiseer die algemene Consul of etcd cluster adres (byvoorbeeld, "example.com:8500"), en die nodusse sal outomaties wees gekombineer in 'n groepie. Die voorste nodus werk gereeld inligting oor sy adres op in die Consul of etcd-berging, wat jou toelaat om daarna die leier te verander sonder dat dit nodig is om ander nodusse te herkonfigureer, asook nuwe nodusse by te voeg selfs nadat jy die leier verander het. Die ou Discovery-modusdiens wat op AWS Lambda loop, is gestaak.
  • Die CLI-koppelvlak laat toe om verskeie gashere gelyktydig te spesifiseer - as die eerste nodus nie beskikbaar is nie, sal die volgende gashere gekontak word.
  • Die kode vir die ontleding van rqlited command line argumente is herwerk.
  • Die verouderde protobuf-pakket is gestaak.
  • Die BoltDB-berging wat in die implementering van die Raft-protokol gebruik word, is vervang deur bbolt, 'n vurk van die etcd-projek.

Bron: opennet.ru

Voeg 'n opmerking