Издание rqlite 7.0, разпределена отказоустойчива СУБД, основана на SQLite

Състоя се пускането на разпределената СУБД rqlite 7.0, която използва SQLite като механизъм за съхранение и позволява организирането на работа на клъстера от синхронизирани помежду си хранилища. Сред особеностите на rqlite се отбелязва лесната инсталация, внедряване и поддръжка на разпределено отказоустойчиво хранилище, подобно на etcd и Consul, но използваща релационен модел за работа с данни вместо формат ключ/стойност. Кодът на проекта е написан на Go и се разпространява под MIT лиценз.

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

Промени в базата данни могат да бъдат вносени само от възела, който е избран за водещ, но свързванията с операциите за запис могат да се насочват и към други възли на клъстера, които ще върнат адреса на водещия за повторение на запитването (в следващата версия е обещано добавянето на автоматично пренасочване към водещия). Основният акцент е върху отказоустойчивостта, затова СУБД се мащабира само по операциите за четене, а операциите за запис са тясно място. Възможно е да се стартира клъстер 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“), и възлите автоматично ще бъдат обединени в клъстер. Водещият възел периодично актуализира информацията за своя адрес в хранилището Consul или etcd, което позволява в последствие да се смени лидерът без необходимост от пренастройка на останалите възли, а също така да се добавят нови възли дори и след смяна на лидера. Поддръжката на старата услуга за откриване на възли (Discovery mode), работеща на базата на AWS Lambda, е прекратена.
  • В CLI интерфейса е разрешено посочването на няколко хоста наведнъж — ако първият възел се окаже недостъпен, ще бъде осъществено обращение към следващите хостове.
  • Преработен е кодът за обработка на аргументите на командния ред rqlited.
  • Прекратено е използването на остарял пакет protobuf.
  • Хранилището BoltDB, използвано в реализацията на протокола Raft, е заменено с bbolt, форк от проекта etcd.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster