Rqlite 7.0:n julkaisu, hajautettu vikasietoinen SQLiteen perustuva DBMS

Julkaisussa tapahtui hajautettu DBMS rqlite 7.0, joka käyttää SQLitea tallennusmoottorina ja mahdollistaa klusterin työn organisoinnin toistensa kanssa synkronoiduista varastoista. Yksi rqliten ominaisuuksista on hajautetun vikasietoisen tallennustilan asennuksen, käyttöönoton ja ylläpidon helppous, joka on hieman samanlainen kuin etcd ja Consul, mutta käyttää relaatiotietomallia avain/arvo-muodon sijaan. Projektikoodi on kirjoitettu Go-kielellä ja jaettu MIT-lisenssillä.

Kaikkien solmujen pitämiseksi synkronoidussa tilassa käytetään Raft-konsensusalgoritmia. Rqlite käyttää alkuperäistä SQLite-kirjastoa ja go-sqlite3-ajuria, jonka päälle käynnistetään kerros, joka käsittelee asiakaspyyntöjä, suorittaa replikoinnin muihin solmuihin ja valvoo konsensuksen saavuttamista johtavan solmun valinnassa.

Muutoksia tietokantaan voi tehdä vain johtajaksi valittu solmu, mutta kirjoitusoperaatioita sisältäviä yhteyksiä voidaan lähettää myös muille klusterin solmuille, jotka palauttavat johtajan osoitteen toistaakseen pyynnön (seuraavassa versiossa ne lupaus lisätä pyyntöjen automaattinen välitys johtajalle). Pääpaino on vikasietoisuudessa, joten DBMS skaalautuu vain lukuoperaatioilla ja kirjoitustoiminnot ovat pullonkaula. On mahdollista ajaa rqlite-klusteri yhdestä solmusta, ja tällä ratkaisulla voidaan tarjota pääsy SQLiteen HTTP:n kautta ilman vikasietoisuutta.

Kunkin solmun SQLite-tietoja ei tallenneta tiedostoon, vaan muistiin. Raft-protokollan toteutuksen kerrostasolla pidetään lokia kaikista SQLite-komennoista, jotka johtavat tietokantaan muutoksiin. Tätä lokia käytetään replikoinnin aikana (replikointi muiden solmujen pyyntöjen toistamisen tasolla), käynnistettäessä uutta solmua tai toipumaan yhteyden katkeamisesta. Lokin koon pienentämiseksi käytetään automaattista pakkausta, joka alkaa tietyn määrän muutosten jälkeen ja johtaa tilannevedoksen kiinnittymiseen, jonka suhteen aletaan ylläpitää uutta lokia (tietokannan tila muistissa on identtinen tilannekuvan + kertyneen muutoslokin kanssa).

rqliten ominaisuudet:

  • Helppo ottaa käyttöön klusteri ilman erillistä SQLite-asennusta.
  • Mahdollisuus saada nopeasti replikoitu SQL-tallennustila.
  • Valmis käytettäväksi tuotantoprojekteissa (tuotantoluokka).
  • HTTP(S) API:n olemassaolo, jonka avulla voit päivittää tietoja erätilassa ja määrittää klusterin johtavan solmun. Saatavilla on myös komentorivikäyttöliittymä ja asiakaskirjastot eri ohjelmointikielille.
  • Palvelun saatavuus muiden solmujen tunnistamiseen, jolloin voit luoda klustereita dynaamisesti.
  • Tuki solmujen välisen tiedonsiirron salaamiseen.
  • Kyky määrittää tietojen relevanssin ja johdonmukaisuuden tarkistamisen taso luettaessa.
  • Valinnainen mahdollisuus yhdistää solmuja vain luku -tilassa, jotka eivät osallistu konsensuksen määrittämiseen ja joita käytetään lisäämään klusterin skaalautuvuutta lukutoimintoja varten.
  • Tuki omalle tapahtumamuodolle, joka perustuu komentojen yhdistämiseen yhteen pyyntöön (ALOITA, COMMIT, ROLLBACK, SAVEPOINT ja RELEASE perustuvia tapahtumia ei tueta).
  • Tuki kuuman varmuuskopion luomiseen.

Uudessa julkaisussa:

  • Lisätty tuki automaattiselle rqlite-klusteroinnille käyttämällä uutta solmuntunnistuspalvelua, joka voi toimia Consul- ja etcd-hajautetun tallennustilan pohjalta. Palvelun avulla rqlite-solmut voivat löytää toisensa automaattisesti - järjestelmänvalvojan tarvitsee vain käynnistää useita solmuja eri palvelimilla ja määrittää yhteinen konsulin tai etcd-klusterin osoite (esimerkiksi "example.com:8500"), jolloin solmut tulevat automaattisesti yhdistetty klusteriksi. Johtava solmu päivittää ajoittain tietoja osoitteestaan ​​Consul- tai etcd-muistissa, minkä avulla voit myöhemmin vaihtaa johtajaa ilman, että sinun tarvitsee määrittää muita solmuja, sekä lisätä uusia solmuja jopa johtajan vaihtamisen jälkeen. Vanha Discovery-tilapalvelu, joka toimii AWS Lambdalla, on lopetettu.
  • CLI-rajapinta mahdollistaa useiden isäntien määrittämisen kerralla - jos ensimmäinen solmu ei ole käytettävissä, otetaan yhteyttä seuraaviin isänteihin.
  • Rqlited-komentoriviargumenttien jäsennyskoodi on muokattu.
  • Vanhentunut protobuf-paketti on lopetettu.
  • Raft-protokollan toteutuksessa käytetty BoltDB-tallennustila on korvattu etcd-projektin forkilla bbolt.

Lähde: opennet.ru

Lisää kommentti