Издаване на 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, което ви позволява впоследствие да промените лидера, без да е необходимо да преконфигурирате други възли, както и да добавяте нови възли дори след промяна на лидера. Наследената услуга за режим на откриване, работеща на AWS Lambda, е прекратена.
  • CLI интерфейсът позволява посочване на няколко хоста наведнъж - ако първият възел е недостъпен, ще се свържат следващите хостове.
  • Кодът за анализиране на rqlited аргументи на командния ред е преработен.
  • Отхвърленият пакет protobuf е спрян.
  • БолтDB хранилището, използвано при внедряването на протокола Raft, е заменено от bbolt, разклонение от проекта etcd.

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

Добавяне на нов коментар