Lansarea rqlite 7.0, un SGBD distribuit, tolerant la erori, bazat pe SQLite

A avut loc lansarea DBMS distribuită rqlite 7.0, care folosește SQLite ca motor de stocare și vă permite să organizați munca unui cluster din depozite sincronizate între ele. Una dintre caracteristicile rqlite este ușurința instalării, implementării și întreținerii unui stocare distribuit tolerant la erori, oarecum similar cu etcd și Consul, dar folosind un model de date relaționale în locul unui format cheie/valoare. Codul proiectului este scris în Go și distribuit sub licența MIT.

Pentru a menține toate nodurile într-o stare sincronizată, se folosește algoritmul de consens Raft. Rqlite folosește biblioteca originală SQLite și driverul go-sqlite3, deasupra cărora este lansat un strat care procesează cererile clienților, efectuează replicarea către alte noduri și monitorizează obținerea consensului privind alegerea unui nod principal.

Modificările în baza de date pot fi făcute doar de către nodul care este selectat ca lider, dar conexiunile cu operații de scriere pot fi trimise și către alte noduri din cluster, care vor returna adresa liderului pentru a repeta cererea (în versiunea următoare se vor face promisiunea de a adăuga redirecționarea automată a cererilor către lider). Accentul principal este pe toleranța la erori, astfel încât SGBD-ul se scalează doar cu operațiuni de citire, iar operațiunile de scriere sunt blocajul. Este posibil să rulați un cluster rqlite dintr-un singur nod și această soluție poate fi utilizată pentru a oferi acces la SQLite prin HTTP fără a oferi toleranță la erori.

Datele SQLite de pe fiecare nod nu sunt stocate într-un fișier, ci în memorie. La nivel de strat cu implementarea protocolului Raft, se păstrează un jurnal al tuturor comenzilor SQLite care duc la modificări ale bazei de date. Acest jurnal este utilizat în timpul replicării (replicarea la nivelul reproducerii cererilor pe alte noduri), la pornirea unui nou nod sau pentru a recupera de la o pierdere a conectivității. Pentru a reduce dimensiunea jurnalului, se utilizează împachetarea automată, care începe după un anumit număr de modificări și duce la fixarea unui instantaneu, în raport cu care începe să se mențină un nou jurnal (starea bazei de date în memorie este identic cu instantaneul + jurnalul de modificări acumulat).

Caracteristicile rqlite:

  • Ușor de implementat un cluster, fără a fi nevoie de o instalare separată SQLite.
  • Abilitatea de a obține rapid stocare SQL replicată.
  • Gata de utilizare în proiecte de producție (producție).
  • Prezența unui API HTTP(S) care vă permite să actualizați datele în modul lot și să determinați nodul principal al clusterului. De asemenea, sunt furnizate o interfață de linie de comandă și biblioteci client pentru diferite limbaje de programare.
  • Disponibilitatea unui serviciu pentru identificarea altor noduri, permițându-vă să creați clustere în mod dinamic.
  • Suport pentru criptarea schimbului de date între noduri.
  • Abilitatea de a configura nivelul de verificare a relevanței și coerenței datelor la citire.
  • Abilitatea opțională de a conecta noduri în modul doar citire, care nu participă la determinarea consensului și sunt utilizate pentru a crește scalabilitatea clusterului pentru operațiunile de citire.
  • Suport pentru propria formă de tranzacții bazată pe combinarea comenzilor într-o singură cerere (tranzacțiile bazate pe BEGIN, COMMIT, ROLLBACK, SAVEPOINT și RELEASE nu sunt acceptate).
  • Suport pentru crearea de copii de rezervă la cald.

În noua versiune:

  • S-a adăugat suport pentru clustering automat rqlite folosind un nou serviciu de detectare a nodurilor care poate funcționa pe baza stocării distribuite Consul și etcd. Serviciul permite nodurilor rqlite să se găsească automat între ele - administratorul trebuie doar să lanseze mai multe noduri pe servere diferite, specificând adresa comună a clusterului Consul sau etcd (de exemplu, „example.com:8500”), iar nodurile vor fi automat combinate într-un cluster. Nodul lider actualizează periodic informațiile despre adresa sa în stocarea Consul sau etcd, ceea ce vă permite să schimbați ulterior liderul fără a fi nevoie să reconfigurați alte noduri, precum și să adăugați noduri noi chiar și după schimbarea liderului. Vechiul serviciu în modul Discovery care rulează pe AWS Lambda a fost întrerupt.
  • Interfața CLI permite specificarea mai multor gazde simultan - dacă primul nod este indisponibil, următoarele gazde vor fi contactate.
  • Codul pentru analizarea argumentelor liniei de comandă rqlited a fost reproiectat.
  • Pachetul protobuf depreciat a fost întrerupt.
  • Stocarea BoltDB folosită în implementarea protocolului Raft a fost înlocuită cu bbolt, o furcă din proiectul etcd.

Sursa: opennet.ru

Adauga un comentariu