Rqlite 7.0 izplatÄ«Å”ana, pret defektiem izturÄ«ga DBVS, kuras pamatā ir SQLite

Notika izplatÄ«tās DBMS rqlite 7.0 izlaiÅ”ana, kas izmanto SQLite kā krātuves dzinēju un ļauj organizēt klastera darbu no savā starpā sinhronizētām krātuvēm. Viena no rqlite funkcijām ir dalÄ«tas, kļūdu izturÄ«gas krātuves uzstādÄ«Å”anas, izvietoÅ”anas un uzturÄ“Å”anas vienkārŔība, kas ir nedaudz lÄ«dzÄ«ga etcd un Consul, taču atslēgas/vērtÄ«bas formāta vietā tiek izmantots relāciju datu modelis. Projekta kods ir rakstÄ«ts Go un izplatÄ«ts saskaņā ar MIT licenci.

Lai saglabātu visus mezglus sinhronizētā stāvoklÄ«, tiek izmantots Raft konsensa algoritms. Rqlite izmanto oriÄ£inālo SQLite bibliotēku un go-sqlite3 draiveri, virs kura tiek palaists slānis, kas apstrādā klientu pieprasÄ«jumus, veic replikāciju citos mezglos un uzrauga, vai tiek panākta vienprātÄ«ba par vadoŔā mezgla izvēli.

Izmaiņas datu bāzē var veikt tikai mezgls, kas ir izvēlēts kā lÄ«deris, bet savienojumus ar rakstÄ«Å”anas operācijām var nosÅ«tÄ«t arÄ« uz citiem klastera mezgliem, kas atgriezÄ«s lÄ«dera adresi, lai atkārtotu pieprasÄ«jumu (nākamajā versijā tie solÄ«jums pievienot automātisku pieprasÄ«jumu pārsÅ«tÄ«Å”anu vadÄ«tājam). Galvenais uzsvars tiek likts uz kļūdu toleranci, tāpēc DBVS mērogojas tikai ar lasÄ«Å”anas operācijām, un rakstÄ«Å”anas darbÄ«bas ir saÅ”aurinājums. Ir iespējams palaist rqlite klasteru no viena mezgla, un Å”o risinājumu var izmantot, lai nodroÅ”inātu piekļuvi SQLite, izmantojot HTTP, nenodroÅ”inot kļūdu toleranci.

SQLite dati katrā mezglā netiek glabāti failā, bet gan atmiņā. Slāņa lÄ«menÄ« ar Raft protokola ievieÅ”anu tiek saglabāts visu SQLite komandu žurnāls, kas noved pie izmaiņām datu bāzē. Å is žurnāls tiek izmantots replikācijas laikā (replicÄ“Å”ana pieprasÄ«jumu reproducÄ“Å”anas lÄ«menÄ« citos mezglos), startējot jaunu mezglu vai lai atgÅ«tu savienojumu pēc savienojuma zuduma. Lai samazinātu žurnāla lielumu, tiek izmantota automātiskā pakoÅ”ana, kas sākas pēc noteikta skaita izmaiņu un noved pie momentuzņēmuma fiksācijas, saistÄ«bā ar kuru sāk uzturēt jaunu žurnālu (atmiņā esoŔās datu bāzes stāvoklis ir identisks momentuzņēmumam + uzkrātajam izmaiņu žurnālam).

Rqlite funkcijas:

  • VienkārÅ”a klastera izvietoÅ”ana, bez nepiecieÅ”amÄ«bas pēc atseviŔķas SQLite instalÄ“Å”anas.
  • Spēja ātri iegÅ«t replicētu SQL krātuvi.
  • Gatavs izmantoÅ”anai ražoÅ”anas projektos (ražoÅ”anas pakāpe).
  • HTTP(S) API klātbÅ«tne, kas ļauj atjaunināt datus pakeÅ”u režīmā un noteikt klastera vadoÅ”o mezglu. Tiek nodroÅ”ināts arÄ« komandrindas interfeiss un klientu bibliotēkas dažādām programmÄ“Å”anas valodām.
  • Pakalpojuma pieejamÄ«ba citu mezglu identificÄ“Å”anai, ļaujot dinamiski izveidot klasterus.
  • Atbalsts datu apmaiņas Å”ifrÄ“Å”anai starp mezgliem.
  • Spēja konfigurēt datu atbilstÄ«bas un konsekvences pārbaudes lÄ«meni lasÄ«Å”anas laikā.
  • Izvēles iespēja savienot mezglus tikai lasÄ«Å”anas režīmā, kas nepiedalās vienprātÄ«bas noteikÅ”anā un tiek izmantoti, lai palielinātu klastera mērogojamÄ«bu lasÄ«Å”anas operācijām.
  • Atbalsts jÅ«su paÅ”u darÄ«jumu veidiem, pamatojoties uz komandu apvienoÅ”anu vienā pieprasÄ«jumā (darÄ«jumi, kuru pamatā ir BEGIN, COMMIT, ROLLBACK, SAVEPOINT un RELEASE, netiek atbalstÄ«ti).
  • Atbalsts karstu dublējumu izveidei.

Jaunajā laidienā:

  • Pievienots atbalsts automātiskai rqlite klasterizācijai, izmantojot jaunu mezglu noteikÅ”anas pakalpojumu, kas var darboties, pamatojoties uz Consul un etcd izplatÄ«to krātuvi. Pakalpojums ļauj rqlite mezgliem automātiski atrast vienam otru ā€“ administratoram atliek tikai palaist vairākus mezglus dažādos serveros, norādot kopējo Consul vai etcd klastera adresi (piemēram, ā€œexample.com:8500ā€), un mezgli tiks automātiski apvienoti klasterÄ«. VadoÅ”ais mezgls periodiski atjaunina informāciju par savu adresi Consul vai etcd krātuvē, kas ļauj pēc tam mainÄ«t vadÄ«tāju bez nepiecieÅ”amÄ«bas pārkonfigurēt citus mezglus, kā arÄ« pievienot jaunus mezglus pat pēc lÄ«dera maiņas. Mantotais Discovery režīma pakalpojums, kas darbojas ar AWS Lambda, ir pārtraukts.
  • CLI interfeiss ļauj norādÄ«t vairākus hostus vienlaikus ā€“ ja pirmais mezgls nav pieejams, tiks sazināties ar nākamajiem resursdatoriem.
  • Kods rqlited komandrindas argumentu parsÄ“Å”anai ir pārstrādāts.
  • NovecojuŔās protobuf pakotnes darbÄ«ba ir pārtraukta.
  • Raft protokola ievieÅ”anā izmantotā BoltDB krātuve ir aizstāta ar bbolt, fork no etcd projekta.

Avots: opennet.ru

Pievieno komentāru