Kutolewa kwa rqlite 7.0, DBMS iliyosambazwa, inayostahimili makosa kulingana na SQLite

Kutolewa kwa DBMS rqlite 7.0 iliyosambazwa kulifanyika, ambayo hutumia SQLite kama injini ya kuhifadhi na hukuruhusu kupanga kazi ya kikundi kutoka kwa hifadhi zilizosawazishwa. Mojawapo ya vipengele vya rqlite ni urahisi wa usakinishaji, upelekaji na matengenezo ya hifadhi iliyosambazwa inayostahimili hitilafu, inayofanana kwa kiasi na etcd na Consul, lakini kwa kutumia modeli ya data ya uhusiano badala ya umbizo la ufunguo/thamani. Nambari ya mradi imeandikwa kwa Go na kusambazwa chini ya leseni ya MIT.

Ili kuweka nodi zote katika hali iliyosawazishwa, algorithm ya makubaliano ya Raft hutumiwa. Rqlite hutumia maktaba asilia ya SQLite na kiendeshi cha go-sqlite3, ambayo juu yake safu imezinduliwa ambayo huchakata maombi ya mteja, hufanya urudufishaji kwa nodi zingine, na hufuatilia mafanikio ya makubaliano juu ya uchaguzi wa nodi inayoongoza.

Mabadiliko kwenye hifadhidata yanaweza tu kufanywa na nodi ambayo imechaguliwa kama kiongozi, lakini viunganisho na shughuli za uandishi vinaweza pia kutumwa kwa nodi zingine kwenye nguzo, ambayo itarudisha anwani ya kiongozi kurudia ombi (katika toleo linalofuata wao. ahadi ya kuongeza usambazaji otomatiki wa maombi kwa kiongozi). Msisitizo kuu ni uvumilivu wa makosa, kwa hivyo mizani ya DBMS ina shughuli za kusoma tu, na shughuli za uandishi ndio kizuizi. Inawezekana kuendesha nguzo ya rqlite kutoka kwa nodi moja na suluhisho hili linaweza kutumika kutoa ufikiaji wa SQLite kupitia HTTP bila kutoa uvumilivu wa makosa.

Data ya SQLite kwenye kila nodi haijahifadhiwa kwenye faili, lakini kwenye kumbukumbu. Katika ngazi ya safu na utekelezaji wa itifaki ya Raft, logi ya amri zote za SQLite zinazosababisha mabadiliko kwenye hifadhidata huwekwa. Logi hii hutumiwa wakati wa kurudia (kuiga katika kiwango cha maombi ya kuzaliana kwenye nodi zingine), wakati wa kuanza nodi mpya, au kupona kutokana na upotezaji wa muunganisho. Ili kupunguza saizi ya logi, kufunga kiotomatiki hutumiwa, ambayo huanza baada ya idadi maalum ya mabadiliko na kusababisha urekebishaji wa picha ndogo, kuhusiana na ambayo logi mpya huanza kudumishwa (hali ya hifadhidata kwenye kumbukumbu ni. sawa na kijipicha + logi ya mabadiliko iliyokusanywa).

Vipengele vya rqlite:

  • Rahisi kupeleka nguzo, bila hitaji la usakinishaji tofauti wa SQLite.
  • Uwezo wa kupata haraka uhifadhi wa SQL uliorudiwa.
  • Tayari kwa matumizi katika miradi ya uzalishaji (daraja la uzalishaji).
  • Uwepo wa API ya HTTP(S) inayokuruhusu kusasisha data katika hali ya bechi na kubainisha nodi inayoongoza ya nguzo. Kiolesura cha mstari wa amri na maktaba za mteja kwa lugha mbalimbali za programu pia hutolewa.
  • Upatikanaji wa huduma ya kutambua nodi zingine, hukuruhusu kuunda vikundi kwa nguvu.
  • Usaidizi wa kusimba ubadilishanaji wa data kati ya nodi.
  • Uwezo wa kusanidi kiwango cha kuangalia umuhimu na uthabiti wa data wakati wa kusoma.
  • Uwezo wa hiari wa kuunganisha nodi katika hali ya kusoma tu, ambayo haishiriki katika kuamua makubaliano na hutumiwa kuongeza kasi ya kikundi kwa shughuli za kusoma.
  • Usaidizi wa aina yako mwenyewe ya miamala kulingana na kuchanganya amri katika ombi moja (shughuli kulingana na BEGIN, COMMIT, ROLLBACK, SAVEPOINT na RELEASE hazitumiki).
  • Msaada wa kuunda chelezo moto.

Katika toleo jipya:

  • Usaidizi ulioongezwa wa kuunganisha rqlite kiotomatiki kwa kutumia huduma mpya ya kutambua nodi ambayo inaweza kufanya kazi kwa misingi ya Consul na hifadhi iliyosambazwa etcd. Huduma huruhusu nodi za rqlite kupatana kiotomatiki - msimamizi anahitaji tu kuzindua nodi kadhaa kwenye seva tofauti, akibainisha anwani ya kawaida ya Balozi au nkd (kwa mfano, "example.com:8500"), na nodi zitakuwa moja kwa moja. kuunganishwa katika nguzo. Nodi inayoongoza mara kwa mara inasasisha habari kuhusu anwani yake katika Uhifadhi wa Balozi au nk, ambayo inakuwezesha kubadilisha kiongozi bila hitaji la kusanidi upya nodi zingine, na pia kuongeza nodi mpya hata baada ya kubadilisha kiongozi. Huduma ya hali ya ugunduzi wa urithi inayoendeshwa kwenye AWS Lambda imekomeshwa.
  • Kiolesura cha CLI kinaruhusu kubainisha wapangishi kadhaa mara moja - ikiwa nodi ya kwanza haipatikani, wapangishi wanaofuata watawasiliana.
  • Msimbo wa kuchanganua hoja za mstari wa amri rqlited umefanyiwa kazi upya.
  • Kifurushi cha protobuf kilichoacha kutumika kimekatishwa.
  • Hifadhi ya BoltDB iliyotumiwa katika utekelezaji wa itifaki ya Raft imebadilishwa na bbolt, uma kutoka kwa mradi wa etcd.

Chanzo: opennet.ru

Kuongeza maoni