rqlite 6.0 шығарылымы, SQLite негізіндегі таратылған, қатеге төзімді ДҚБЖ

Бөлінген ДҚБЖ rqlite 6.0 шығарылымы ұсынылған, ол SQLite-ді сақтау механизмі ретінде пайдаланады және синхрондалған қоймалар кластерінің жұмысын ұйымдастыруға мүмкіндік береді. rqlite мүмкіндіктерінің бірі - etcd және Consul сияқты біршама ұқсас, бірақ кілт/мән пішімінің орнына реляциялық деректер үлгісін пайдалану арқылы бөлінген қатеге төзімді жадты орнату, орналастыру және техникалық қызмет көрсетудің қарапайымдылығы. Жоба коды Go бағдарламасында жазылған және MIT лицензиясы бойынша таратылады.

Барлық түйіндерді синхрондалған күйде сақтау үшін Raft консенсус алгоритмі қолданылады. Rqlite бастапқы SQLite кітапханасын және стандартты go-sqlite3 драйверін пайдаланады, оның үстіне клиент сұраныстарын өңдейтін, басқа түйіндерге репликацияны орындайтын және жетекші түйінді таңдау бойынша консенсусқа қол жеткізуді бақылайтын қабат іске қосылады.

Дерекқорға өзгертулер тек көшбасшы ретінде таңдалған түйін арқылы ғана енгізілуі мүмкін, бірақ жазу операцияларымен байланыстар кластердегі басқа түйіндерге де жіберіледі, олар сұрауды қайталау үшін көшбасшының мекенжайын қайтарады (келесі нұсқада олар басшыға сұрауларды автоматты түрде қайта жіберуді қосуға уәде беру). Негізгі екпін ақауларға төзімділікке аударылады, сондықтан ДҚБЖ тек оқу операцияларымен масштабталады, ал жазу операциялары тығырыққа тіреледі. Бір түйіннен rqlite кластерін іске қосуға болады және бұл шешімді ақауларға төзімділікті қамтамасыз етпестен HTTP арқылы SQLite қатынасын қамтамасыз ету үшін пайдалануға болады.

Әрбір түйіндегі SQLite деректері файлда емес, жадта сақталады. Raft хаттамасын жүзеге асырумен қабат деңгейінде деректер қорындағы өзгерістерге әкелетін барлық SQLite командаларының журналы сақталады. Бұл журнал репликация кезінде (басқа түйіндерде сұрауларды шығару деңгейінде репликация), жаңа түйінді іске қосу немесе қосылымды жоғалтуды қалпына келтіру кезінде пайдаланылады. Журналдың өлшемін азайту үшін автоматты буып-түю қолданылады, ол белгілі бір өзгертулерден кейін басталады және дискіде суреттің бекітілуіне әкеледі, оған қатысты жаңа журнал (жадтағы деректер қорының күйі) жүргізіле бастайды. суретке ұқсас + жинақталған өзгерістер журналы).

rqlite мүмкіндіктері:

  • Бөлек SQLite орнатуын қажет етпей, кластерді орналастыру оңай.
  • Репликацияланған SQL жадын жылдам алу мүмкіндігі.
  • Жұмыс жобаларында пайдалануға дайын (өндірістік деңгей).
  • Пакеттік режимде деректерді жаңартуға және кластердің жетекші түйінін анықтауға мүмкіндік беретін HTTP(S) API болуы. Ол сондай-ақ пәрмен жолы интерфейсін және SQLite үшін жасалған әртүрлі клиенттік кітапханаларды пайдалану мүмкіндігін қамтамасыз етеді.
  • Кластерлерді динамикалық түрде жасауға мүмкіндік беретін басқа түйіндерді анықтау қызметінің болуы.
  • Түйіндер арасында деректер алмасуды шифрлауды қолдау.
  • Оқу кезінде деректердің сәйкестігі мен сәйкестігін тексеру деңгейін конфигурациялау мүмкіндігі.
  • Консенсусты анықтауға қатыспайтын және оқу әрекеттері үшін кластердің ауқымдылығын арттыру үшін пайдаланылатын түйіндерді тек оқуға арналған режимде қосудың қосымша мүмкіндігі.
  • Бір сұраудағы пәрмендерді біріктіруге негізделген транзакциялардың жеке пішініне қолдау көрсету (БАСТАУ, ҚОЛДАНУ, ОРАЛУ, САҚТАУ POINT және ШЫҒАРУ негізіндегі транзакцияларға қолдау көрсетілмейді).
  • Ыстық сақтық көшірмелерді жасауға қолдау көрсету.

Жаңа шығарылым оқу және жазу сұрауларын дұрыс кластер түйіндеріне бағыттау процесін жақсарту арқылы кластердің сенімділігін арттыруға бағытталған маңызды архитектуралық өзгерістерді енгізеді. rqlite түйіндері енді Raft протоколы арқылы түйіндер арасында орнатылған TCP қосылымдарын пайдаланып, бірнеше логикалық қосылымдарды бір-бірімен мультиплекстей алады. Сұрау көшбасшы өкілеттігін қажет етсе, бірақ екінші түйінге жіберілсе, қосымша түйін көшбасшының мекенжайын анықтап, оны Raft консенсус есептеулерін орындамай-ақ клиентке бере алады.

Өзгеріс сонымен қатар жеке метадеректерді синхрондау компонентінің қажеттілігін жойды және Raft күйі мен метадеректерін бөлек өңдеуді жойды. Екінші түйіндер енді лидер түйініне сұраныстарды қажет болғанда ғана, көшбасшы түйіннің мекенжайын білу қажет болғанда жібереді. API кластердегі басқа түйіндердің күйі туралы ақпаратты алу мүмкіндігін береді. «.sysdump» пәрмені пәрмен жолы интерфейсіне қосылды.

Ақпарат көзі: opennet.ru

пікір қалдыру