Објавување на rqlite 7.0, дистрибуиран, толерантен на грешки DBMS базиран на SQLite

Се случи објавувањето на дистрибуираниот DBMS rqlite 7.0, кој користи SQLite како мотор за складирање и ви овозможува да ја организирате работата на кластерот од складишта синхронизирани едни со други. Една од карактеристиките на rqlite е леснотијата на инсталација, распоредување и одржување на дистрибуирано складирање толерантно на грешки, нешто слично на etcd и Consul, но со користење на модел на релациски податоци наместо формат на клуч/вредност. Проектниот код е напишан во Go и дистрибуиран под лиценцата MIT.

За да се задржат сите јазли во синхронизирана состојба, се користи алгоритам за консензус Raft. Rqlite ја користи оригиналната библиотека SQLite и двигателот go-sqlite3, на врвот на кој работи слој кој ги обработува барањата на клиентот, врши репликација на други јазли и го следи постигнувањето на консензус за изборот на водечки јазол.

Промените во базата на податоци може да се направат само од јазолот што е избран за лидер, но врските со операциите за пишување може да се испратат и до други јазли во кластерот, кои ќе ја вратат адресата на лидерот за да го повтори барањето (во следната верзија тие ветување дека ќе додаде автоматско препраќање барања до лидерот). Главниот акцент е на толеранцијата на грешки, така што DBMS скалира само со операции за читање, а операциите за пишување се тесно грло. Можно е да се изврши кластер rqlite од еден јазол и ова решение може да се користи за да се обезбеди пристап до SQLite преку HTTP без да се обезбеди толеранција на грешки.

Податоците SQLite на секој јазол не се чуваат во датотека, туку во меморија. На ниво на слој со имплементација на протоколот Raft, се чува дневник на сите SQLite команди кои водат до промени во базата на податоци. Овој дневник се користи за време на репликација (репликација на ниво на репродукција на барања на други јазли), при започнување нов јазол или за опоравување од губење на поврзувањето. За да се намали големината на дневникот, се користи автоматско пакување, кое започнува по одреден број промени и доведува до фиксирање на снимка, во однос на која започнува да се одржува нов дневник (состојбата на базата на податоци во меморијата е идентично со снимката + акумулираниот дневник за промени).

Карактеристики на rqlite:

  • Лесно се распоредува кластер, без потреба од посебна инсталација на SQLite.
  • Способност за брзо добивање на реплицирано складирање SQL.
  • Подготвен за употреба во производствени проекти (производство-одделение).
  • Присуство на HTTP(S) API што ви овозможува да ажурирате податоци во сериски режим и да го одредите водечкиот јазол на кластерот. Обезбедени се и интерфејс за командна линија и библиотеки на клиенти за различни програмски јазици.
  • Достапност на услуга за идентификација на други јазли, што ви овозможува динамично да креирате кластери.
  • Поддршка за шифрирање на размена на податоци помеѓу јазли.
  • Можност за конфигурирање на нивото на проверка на релевантноста и конзистентноста на податоците при читање.
  • Изборна можност за поврзување јазли во режим само за читање, кои не учествуваат во одредувањето на консензус и се користат за зголемување на приспособливоста на кластерот за операции за читање.
  • Поддршка за сопствена форма на трансакции врз основа на комбинирање на команди во едно барање (трансакции базирани на BEGIN, COMMIT, ROLLBACK, SAVEPOINT и RELEASE не се поддржани).
  • Поддршка за создавање жешки резервни копии.

Во новото издание:

  • Додадена е поддршка за автоматско кластерирање rqlite со помош на нова услуга за откривање јазли што може да работи врз основа на дистрибуирано складирање Consul и etcd. Услугата им овозможува на rqlite јазлите автоматски да се пронаоѓаат - администраторот треба само да стартува неколку јазли на различни сервери, наведувајќи ја заедничката адреса на кластерот Consul или etcd (на пример, „example.com:8500“), а јазлите автоматски ќе бидат комбинирани во кластер. Водечкиот јазол периодично ги ажурира информациите за неговата адреса во складиштето конзул или итн. Наследната услуга за режим на откривање што работи на AWS Lambda е прекината.
  • CLI интерфејсот овозможува специфицирање на неколку хостови одеднаш - ако првиот јазол е недостапен, ќе се контактираат следните домаќини.
  • Преработен кодот за парсирање rqlited аргументи на командната линија.
  • Застарениот пакет protobuf е прекинат.
  • Складирањето BoltDB што се користи во имплементацијата на протоколот Raft е заменето со bbolt, вилушка од проектот etcd.

Извор: opennet.ru

Додадете коментар