Liberigo de rqlite 7.0, distribuita mistolerema DBMS bazita sur SQLite

Okazis la liberigo de la distribuita DBMS rqlite 7.0, kiu uzas SQLite kiel stokan motoron kaj ebligas al vi organizi la laboron de areto el stokoj sinkronigitaj unu kun la alia. Unu el la trajtoj de rqlite estas la facileco de instalado, deplojo kaj prizorgado de distribuita mistolerema stokado, iom simila al etcd kaj Consul, sed uzante interrilatan datummodelon anstataŭ ŝlosila/valorformato. La projektkodo estas skribita en Go kaj distribuita sub la MIT-licenco.

Por konservi ĉiujn nodojn en sinkronigita stato, la Raft-interkonsenta algoritmo estas uzata. Rqlite uzas la originan SQLite-bibliotekon kaj la ŝoforon go-sqlite3, sur kiuj estas lanĉita tavolo, kiu prilaboras klientajn petojn, plenumas reproduktadon al aliaj nodoj kaj kontrolas la atingon de konsento pri la elekto de gvida nodo.

Ŝanĝoj al la datumbazo povas esti faritaj nur per la nodo, kiu estas elektita kiel la gvidanto, sed ligoj kun skribaj operacioj ankaŭ povas esti senditaj al aliaj nodoj en la areto, kiuj resendos la adreson de la gvidanto por ripeti la peton (en la sekva versio ili promeso aldoni aŭtomatan plusendon de petoj al la gvidanto). La ĉefa emfazo estas sur faŭltoleremo, do la DBMS skalas nur kun legado de operacioj, kaj skribaj operacioj estas la proplemkolo. Eblas ruli rqlite-grupon de ununura nodo kaj ĉi tiu solvo povas esti uzata por havigi aliron al SQLite per HTTP sen provizi misfunkciadon.

La SQLite-datumoj sur ĉiu nodo ne estas konservitaj en dosiero, sed en memoro. Ĉe la tavolnivelo kun la efektivigo de la Raft-protokolo, estas konservata protokolo de ĉiuj SQLite-komandoj, kiuj kondukas al ŝanĝoj al la datumbazo. Ĉi tiu protokolo estas uzata dum reproduktado (reproduktado je la nivelo de reproduktado de petoj sur aliaj nodoj), dum komencado de nova nodo, aŭ por renormaliĝi post perdo de konektebleco. Por redukti la grandecon de la protokolo, oni uzas aŭtomatan pakadon, kiu komenciĝas post difinita nombro da ŝanĝoj kaj kondukas al fiksado de momentfoto, rilate al kiu nova protokolo komencas esti konservita (la stato de la datumbazo en memoro estas identa al la momentfoto + la amasigita ŝanĝprotokolo).

Karakterizaĵoj de rqlite:

  • Facile disfaldi areton, sen la bezono de aparta instalado de SQLite.
  • Kapablo rapide akiri reproduktitan SQL-stokadon.
  • Preta por uzo en produktadprojektoj (produktad-grado).
  • La ĉeesto de HTTP(S) API, kiu ebligas al vi ĝisdatigi datumojn en bata reĝimo kaj determini la gvidan nodon de la areto. Komandlinia interfaco kaj klientbibliotekoj por diversaj programlingvoj ankaŭ estas provizitaj.
  • Havebleco de servo por identigi aliajn nodojn, permesante al vi krei aretojn dinamike.
  • Subteno por ĉifrado de datumoj interŝanĝo inter nodoj.
  • Kapablo agordi la nivelon de kontrolado de la graveco kaj konsistenco de datumoj dum legado.
  • Laŭvola kapablo ligi nodojn en nurlegebla reĝimo, kiuj ne partoprenas en determinado de konsento kaj estas uzataj por pliigi la skaleblon de la areto por legaj operacioj.
  • Subteno por via propra formo de transakcioj bazita sur kombinado de komandoj en unu peto (transakcioj bazitaj sur BEGIN, COMMIT, ROLLBACK, SAVEPOINT kaj RELEASE ne estas subtenataj).
  • Subteno por krei varmajn sekurkopiojn.

En la nova eldono:

  • Aldonita subteno por aŭtomata rqlite clustering uzanta novan nodan detektoservon kiu povas funkcii surbaze de Consul kaj etcd distribuita stokado. La servo permesas al rqlite-nodoj aŭtomate trovi unu la alian - la administranto nur bezonas lanĉi plurajn nodojn sur malsamaj serviloj, specifante la komunan konsulon aŭ etcd-grupo-adreson (ekzemple, "example.com:8500"), kaj la nodoj aŭtomate estos kombinita en areton. La gvida nodo periode ĝisdatigas informojn pri sia adreso en la Konsulo aŭ etcd-stokado, kio ebligas al vi poste ŝanĝi la gvidanton sen bezono reagordi aliajn nodojn, kaj aldoni novajn nodojn eĉ post ŝanĝi la ĉefon. La hereda servo de Discovery-reĝimo funkcianta sur AWS Lambda estis ĉesigita.
  • La CLI-interfaco permesas specifi plurajn gastigantojn samtempe - se la unua nodo estas neatingebla, la sekvaj gastigantoj estos kontaktitaj.
  • La kodo por analizado de rqlititaj komandliniaj argumentoj estis reverkita.
  • La malrekomendita protobuf-pakaĵo estis nuligita.
  • La BoltDB-stokado uzata en la efektivigo de la Raft-protokolo estis anstataŭigita per bbolt, forko de la projekto etcd.

fonto: opennet.ru

Aldoni komenton