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

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

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

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

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

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

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

Жаңа шығарылымда:

  • Консул және т.б. таратылған жад негізінде жұмыс істей алатын жаңа түйінді анықтау қызметін пайдаланып автоматты rqlite кластерлеуіне қолдау қосылды. Қызмет rqlite түйіндеріне бір-бірін автоматты түрде табуға мүмкіндік береді - әкімші жай ғана Консул немесе etcd кластерінің жалпы мекенжайын (мысалы, “example.com:8500”) көрсете отырып, әртүрлі серверлерде бірнеше түйіндерді іске қосуы керек және түйіндер автоматты түрде болады. кластерге біріктірілді. Жетекші түйін Консул немесе т.б. сақтау қоймасындағы мекен-жайы туралы ақпаратты мерзімді түрде жаңартып отырады, бұл басқа түйіндерді қайта конфигурациялауды қажет етпей, көшбасшыны кейіннен өзгертуге, сондай-ақ көшбасшыны өзгерткеннен кейін де жаңа түйіндерді қосуға мүмкіндік береді. AWS Lambda жүйесінде жұмыс істейтін бұрынғы Discovery режимі қызметі тоқтатылды.
  • CLI интерфейсі бірден бірнеше хосттарды көрсетуге мүмкіндік береді - егер бірінші түйін қолжетімсіз болса, келесі хосттармен байланысады.
  • rqlited пәрмен жолы аргументтерін талдауға арналған код қайта өңделді.
  • Ескірген протобуф бумасы тоқтатылды.
  • Raft хаттамасын жүзеге асыруда пайдаланылған BoltDB қоймасы etcd жобасының шанышқысы bboltпен ауыстырылды.

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

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