Išleista rqlite 7.0, paskirstyta, gedimams atspari DBVS, pagrįsta SQLite

Buvo išleista paskirstyta DBMS rqlite 7.0, kuri naudoja SQLite kaip saugyklos variklį ir leidžia organizuoti klasterio darbą iš tarpusavyje sinchronizuojamų saugyklų. Viena iš rqlite ypatybių yra paskirstytos gedimams atsparios saugyklos, šiek tiek panašios į etcd ir Consul, diegimo, diegimo ir priežiūros paprastumas, tačiau naudojant reliacinį duomenų modelį, o ne rakto / vertės formatą. Projekto kodas parašytas Go ir platinamas pagal MIT licenciją.

Kad visi mazgai būtų sinchronizuoti, naudojamas „Raft“ konsensuso algoritmas. Rqlite naudoja originalią SQLite biblioteką ir go-sqlite3 tvarkyklę, ant kurios paleidžiamas sluoksnis, apdorojantis klientų užklausas, atliekantis replikaciją į kitus mazgus ir stebintis, ar pasiektas sutarimas dėl pagrindinio mazgo pasirinkimo.

Duomenų bazės pakeitimus gali atlikti tik tas mazgas, kuris pasirinktas kaip lyderis, tačiau ryšius su rašymo operacijomis galima siųsti ir į kitus klasterio mazgus, kurie grąžins lyderio adresą, kad būtų galima pakartoti užklausą (kitoje versijoje jie pažadas pridėti automatinį užklausų persiuntimą vadovui). Pagrindinis dėmesys skiriamas gedimų tolerancijai, todėl DBVS keičiasi tik skaitymo operacijomis, o rašymo operacijos yra kliūtis. Galima paleisti rqlite klasterį iš vieno mazgo ir šis sprendimas gali būti naudojamas norint suteikti prieigą prie SQLite per HTTP, nenustatant gedimų tolerancijos.

SQLite duomenys kiekviename mazge saugomi ne faile, o atmintyje. Sluoksnio lygiu, kai įdiegiamas „Raft“ protokolas, saugomas visų SQLite komandų, kurios lemia duomenų bazės pakeitimus, žurnalas. Šis žurnalas naudojamas replikacijos metu (replikacija užklausų atkūrimo kituose mazguose lygiu), paleidžiant naują mazgą arba norint atsigauti po ryšio praradimo. Žurnalo dydžiui sumažinti naudojamas automatinis pakavimas, kuris prasideda po tam tikro skaičiaus pakeitimų ir fiksuoja momentinę nuotrauką, dėl kurios pradedamas tvarkyti naujas žurnalas (duomenų bazės būsena atmintyje yra identiškas momentinei nuotraukai + sukauptam pakeitimų žurnalui).

Rqlite savybės:

  • Lengva įdiegti klasterį, nereikia atskiro SQLite diegimo.
  • Galimybė greitai gauti pakartotinę SQL saugyklą.
  • Paruošta naudoti gamybiniuose projektuose (gamybinio lygio).
  • HTTP(S) API, leidžianti atnaujinti duomenis paketiniu režimu ir nustatyti pagrindinį klasterio mazgą, buvimas. Taip pat pateikiama komandų eilutės sąsaja ir klientų bibliotekos įvairioms programavimo kalboms.
  • Galimybė naudotis paslauga, skirta identifikuoti kitus mazgus, leidžiančius dinamiškai kurti grupes.
  • Duomenų mainų tarp mazgų šifravimo palaikymas.
  • Galimybė konfigūruoti duomenų tinkamumo ir nuoseklumo tikrinimo lygį skaitant.
  • Neprivaloma galimybė prijungti mazgus tik skaitymo režimu, kurie nedalyvauja nustatant konsensusą ir yra naudojami siekiant padidinti klasterio mastelį skaitymo operacijoms.
  • Jūsų pačių operacijų formos palaikymas, pagrįstas komandų sujungimu vienoje užklausoje (operacijos, pagrįstos BEGIN, COMMIT, ROLLBACK, SAVEPOINT ir RELEASE, nepalaikomos).
  • Palaikymas kuriant karštas atsargines kopijas.

Naujame leidime:

  • Pridėtas automatinio rqlite klasterizavimo palaikymas naudojant naują mazgų aptikimo paslaugą, kuri gali veikti Consul ir etcd paskirstytos saugyklos pagrindu. Paslauga leidžia rqlite mazgams automatiškai rasti vienas kitą – administratoriui tereikia paleisti kelis mazgus skirtinguose serveriuose, nurodant bendrą Consul arba etcd klasterio adresą (pvz., „example.com:8500“), ir mazgai bus automatiškai sujungti į klasterį. Pagrindinis mazgas periodiškai atnaujina informaciją apie savo adresą „Consul“ arba „etcd“ saugykloje, o tai leidžia vėliau pakeisti lyderį, nereikia perkonfigūruoti kitų mazgų, taip pat pridėti naujų mazgų net pakeitus lyderį. Sena „Discovery“ režimo paslauga, veikianti „AWS Lambda“, buvo nutraukta.
  • CLI sąsaja leidžia nurodyti kelis pagrindinius kompiuterius vienu metu – jei pirmasis mazgas nepasiekiamas, bus susisiekta su kitais.
  • Rqlited komandinės eilutės argumentų analizės kodas buvo perdarytas.
  • Pasenęs protobuf paketas buvo nutrauktas.
  • „BoltDB“ saugykla, naudojama įgyvendinant „Raft“ protokolą, buvo pakeista „bbolt“, šakute iš etcd projekto.

Šaltinis: opennet.ru

Добавить комментарий