ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Предлажем да прочитате транскрипт извештаја Георгија Рилова за почетак 2020. „ВАЛ-Г: нове могућности и ширење заједнице“

Одржавачи отвореног кода суочавају се са многим изазовима како расту. Како написати све више и више потребних функција, поправити све више и више проблема и успети да видите све више и више захтева за повлачењем? Користећи ВАЛ-Г (алат за прављење резервних копија за ПостгреСКЛ) као пример, рећи ћу вам како смо решили ове проблеме покретањем курса о развоју отвореног кода на универзитету, шта смо постигли и где ћемо даље.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Поздрав свима! Ја сам Иандек програмер из Јекатеринбурга. А данас ћу говорити о ВАЛ-Г.

У наслову извештаја није писало да је реч о резервним копијама. Да ли неко зна шта је ВАЛ-Г? Или сви знају? Подигни руку ако не знаш. Срање, дошли сте до извештаја и не знате о чему се ради.

Дозволите ми да вам кажем шта ће се догодити данас. Десило се да наш тим већ неко време ради резервне копије. И ово је још један извештај у низу где говоримо о томе како чувамо податке безбедно, безбедно, згодно и ефикасно.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

У претходним серијама било је много извештаја Андреја Бородина и Владимира Лескова. Било нас је много. А ми причамо о ВАЛ-Г већ дуги низ година.

цлцк.ру/Ф8иоз — https://www.highload.ru/moscow/2018/abstracts/3964

цлцк.ру/Лн8Кв — https://www.highload.ru/moscow/2019/abstracts/5981

Овај извештај ће се мало разликовати од осталих по томе што је више био о техничком делу, али овде ћу говорити о томе како смо наишли на проблеме везане за раст заједнице. И како смо дошли до мале идеје која нам помаже да се носимо са овим.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Пре неколико година, ВАЛ-Г је био прилично мали пројекат који смо добили од Цитус Дата-а. И само смо га узели. И развила га је једна особа.

И само ВАЛ-Г није имао:

  • Резервна копија са реплике.
  • Није било инкременталних резервних копија.
  • Није било резервних копија ВАЛ-Делта.
  • И још је много тога недостајало.

Током ових неколико година, ВАЛ-Г је много порастао.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

А до 2020. године све наведено већ се појавило. И овоме је додато оно што сада имамо:

  • Више од 1 звездица на ГитХуб-у.
  • 150 виљушки.
  • Око 15 отворених ПР-а.
  • И још много сарадника.
  • И отворена питања све време. И то упркос чињеници да буквално сваки дан идемо тамо и урадимо нешто по том питању.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

И дошли смо до закључка да овај пројекат захтева више наше пажње, чак и када ми сами не морамо ништа да имплементирамо за наш сервис Управљаних база података у Иандек-у.

И негде у јесен 2018. пала нам је на памет идеја. Обично тим има неколико начина да развије неке функције или поправи грешке ако немате довољно руку. На пример, можете унајмити другог програмера и платити му новац. Или можете узети приправника на неко време и такође му платити неку плату. Али још увек постоји прилично велика група људи, од којих неки већ заиста знају да пишу код. Само не знате увек каквог је квалитета код.

Размислили смо о томе и одлучили да покушамо да привучемо студенте. Али ученици неће са нама учествовати у свему. Они ће одрадити само део посла. И они ће, на пример, писати тестове, исправљати грешке, имплементирати функције које не утичу на главну функционалност. Главна функционалност је прављење резервних копија и враћање резервних копија. Ако погрешимо у креирању резервне копије, доживећемо губитак података. И нико ово не жели, наравно. Сви желе да све буде веома безбедно. Стога, наравно, не желимо да дозволимо коду коме верујемо мање од сопственог. Односно, сваки некритичан код је оно што бисмо желели да добијемо од наших додатних радника.

Под којим условима се прихвата студентски ПР?

  • Од њих се захтева да покрију свој код тестовима. Све би требало да се одвија у ЦИ.
  • И такође пролазимо кроз 2 рецензије. Један Андреј Бородин и један ја.
  • И додатно, да проверим да ово неће покварити ништа у нашем сервису, засебно учитавам скуп са овим урезивањем. И проверавамо у тестовима од краја до краја да ништа не успева.

Специјални курс о отвореном коду

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Мало о томе зашто је ово потребно и зашто је ово, чини ми се, кул идеја.

За нас је профит очигледан:

  • Добијамо додатне руке.
  • И тражимо кандидате за тим међу паметним студентима који пишу паметан код.

Која је корист за студенте?

Они могу бити мање очигледни, јер студенти, у најмању руку, не добијају новац за шифру коју напишу, већ само добијају оцене за своју студентску евиденцију.

Питао сам их за ово. И њиховим речима:

  • Искуство сарадника у отвореном коду.
  • Ставите ред у свој ЦВ.
  • Докажите се и положите интервју у Иандек-у.
  • Постаните члан ГСоЦ-а.
  • +1 специјални курс за оне који желе да пишу код.

Нећу говорити о томе како је курс био структуриран. Рећи ћу само да је ВАЛ-Г био главни пројекат. У овај курс смо укључили и пројекте као што су Одиссеи, ПостгреСКЛ и ЦлицкХоусе.

И давали су проблеме не само на овом курсу, већ су давали и дипломе и курсеве.

Шта је са користима за кориснике?

Сада пређимо на део који вас највише занима. Шта ти ово користи? Поента је да су ученици исправили много грешака. И направили смо карактеристике захтева које сте тражили од нас.

И да вам кажем о стварима које сте дуго желели и које су остварене.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Подршка за табеларне просторе. Табеларни простори у ВАЛ-Г-у су очекивани вероватно од објављивања ВАЛ-Г-а, јер је ВАЛ-Г наследник другог алата за прављење резервних копија ВАЛ-Е, где су подржане резервне копије базе података са просторима табела.

Дозволите ми да вас укратко подсетим шта је то и зашто је све потребно. Обично сви ваши Постгрес подаци заузимају један директоријум у систему датотека, који се зове база. И овај директоријум већ садржи све датотеке и поддиректоријуме које захтева Постгрес.

Табеларни простори су директоријуми који садрже Постгрес податке, али се не налазе изван основног директоријума. Слајд показује да се табеларни простори налазе изван основног директоријума.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Како ово изгледа за сам Постгрес? У основном директоријуму постоји посебан поддиректоријум пг_тблспц. И садржи симболичне везе до директоријума који заправо садрже Постгрес податке изван основног директоријума.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Када користите све ово, онда за вас ове команде могу изгледати отприлике овако. То јест, креирате табелу у неком одређеном простору табеле и видите где се сада налази. Ово су последње две линије, последње две позване команде. И ту је јасно да постоји неки начин. Али у стварности, ово није прави начин. Ово је путања са префиксом од основног директоријума до простора табеле. И одатле се поклапа са симболичком везом која води до ваших стварних података.

Не користимо све ово у нашем тиму, али су га користили многи други корисници ВАЛ-Е који су нам писали да желе да пређу на ВАЛ-Г, али их је то зауставило. Ово је сада подржано.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Још једна карактеристика коју нам је донео наш специјални курс је сустизање. Људи који су вероватно радили више са Орацле-ом него са Постгрес-ом знају за надокнаду.

Укратко о чему се ради. Топологија кластера у нашој услузи обично може изгледати отприлике овако. Имамо господара. Постоји реплика која из ње стримује дневник за уписивање унапред. А реплика говори мастеру на ком се ЛСН-у тренутно налази. И негде паралелно са овим, дневник се може архивирати. И поред архивирања дневника, резервне копије се шаљу и у облак. И делта резервне копије се шаљу.

Шта би могао бити проблем? Када имате прилично велику базу података, може се испоставити да ваша реплика почиње много да заостаје за мастером. А она толико заостаје да га никако не може сустићи. Овај проблем обично треба некако решити.

А најлакши начин је да уклоните реплику и поново је поставите, јер она никада неће успети, а проблем треба решити. Али ово је прилично дуго, јер је враћање целе резервне копије базе података од 10 ТБ веома, веома дуго. И желимо да све ово урадимо што је пре могуће ако се појаве такви проблеми. А то је управо оно чему служи сустизање.

Цатцхуп вам омогућава да користите делта резервне копије, које се на овај начин чувају у облаку. Кажете на ком се ЛСН-у тренутно налази заостала реплика и наводите га у команди цатцхуп да бисте креирали делта резервну копију између тог ЛСН-а и ЛСН-а на којем се тренутно налази ваш кластер. И након тога вратите ову резервну копију на реплику која је заостала.

Друге базе

Ученици су нам такође донели много карактеристика одједном. Пошто у Иандек-у не кувамо само Постгрес, имамо и МиСКЛ, МонгоДБ, Редис, ЦлицкХоусе, у неком тренутку смо морали да будемо у могућности да направимо резервне копије са опоравком у тренутку за МиСКЛ, и тако да постоји могућност да отпремимо њих до облака.

И желели смо да то урадимо на сличан начин као што ради ВАЛ-Г. И одлучили смо да експериментишемо и видимо како ће све то изгледати.

И у почетку, не деле ову логику на било који начин, написали су код у форку. Видели су да имамо некакав модел који ради и да може да лети. Тада смо мислили да су наша главна заједница постгресисти, они користе ВАЛ-Г. И зато морамо некако раздвојити ове делове. То јест, када уређујемо код за Постгрес, не разбијамо МиСКЛ; када уређујемо МиСКЛ, не разбијамо Постгрес.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Прва идеја о томе како да се ово одвоји била је идеја да се користи исти приступ који се користи у ПостгреСКЛ екстензијама. И, у ствари, да бисте направили резервну копију МиСКЛ-а, морали сте да инсталирате неку врсту динамичке библиотеке.

Али овде је одмах видљива асиметрија овог приступа. Када направите резервну копију Постгреса, на њега ставите нормалну резервну копију за Постгрес и све је у реду. А за МиСКЛ се испоставило да инсталирате резервну копију за Постгрес и такође инсталирате динамичку библиотеку за МиСКЛ за њега. Звучи некако чудно. И ми смо тако мислили и одлучили да то није решење које нам треба.

Различите верзије за Постгрес, МиСКЛ, МонгоДБ, Редис

Али то нам је омогућило, чини нам се, да дођемо до праве одлуке – да различите скупштине доделимо за различите базе. Ово је омогућило да се изолује логика везана за резервне копије различитих база података које ће приступити заједничком АПИ-ју који ВАЛ-Г имплементира.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Ово је део који смо сами написали - пре него што ученицима дамо проблеме. Односно, то је управо део где би могли да ураде нешто погрешно, па смо одлучили да је боље да урадимо овако нешто и све ће бити у реду.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

После тога смо издавали проблеме. Одмах су демонтирани. Од ученика се тражило да подрже три базе.

Ово је МиСКЛ за који на овај начин правимо резервну копију користећи ВАЛ-Г више од годину дана.

А сада се МонгоДБ приближава производњи, где га довршавају са фајлом. У ствари, ми смо написали оквир за све ово. Затим су ученици написали неке изводљиве ствари. И онда их доведемо у стање које можемо да прихватимо у производњи.

Ови проблеми нису изгледали као да ученици требају да напишу комплетне алате за прављење резервних копија за сваку од ових база података. Нисмо имали такав проблем. Наш проблем је био што смо желели опоравак у тренутку и желели смо да направимо резервну копију у облаку. И тражили су од ученика да напишу неки код који би ово решио. Ученици су користили већ постојеће алате за прављење резервних копија, који некако праве резервне копије, а затим су све то залепили са ВАЛ-Г-ом који је све то проследио у облак. Овоме су такође додали опоравак у тренутку.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Шта су још ученици донели? Донели су подршку за Либсодиум енкрипцију у ВАЛ-Г.

Такође имамо смернице за складиштење резервних копија. Сада резервне копије могу бити означене као трајне. И некако је згодније да ваша услуга аутоматизује процес њиховог складиштења.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Шта је био резултат овог експеримента?

Више од 100 људи се првобитно регистровало за курс. У почетку нисам рекао да је универзитет у Јекатеринбургу Уралски федерални универзитет. Тамо смо све најавили. Регистровано 100 људи. У стварности је много мање људи почело нешто да ради, око 30 људи.

Још мање људи је завршило курс, јер је било потребно писати тестове за кодове који већ постоје. И такође поправите неку грешку или направите неку функцију. А неки студенти су ипак затворили курс.

Тренутно, током овог курса, студенти су поправили око 14 проблема и направили 10 карактеристика различитих величина. И, чини ми се, ово је пуна замена једног или два програмера.

Између осталог, издавали смо дипломе и курсеве. А 12 је добило дипломе. Њих 6 се већ одбранило на „5“. Они који су остали још нису имали заштиту, али мислим да ће и њима све бити у реду.

Планови за будућност

Какве планове имамо за будућност?

Барем оне захтеве за функције које смо већ чули од корисника и које желимо да урадимо. ово:

  • Праћење исправности праћења временске линије у архиви резервних копија ХА кластера. То можете учинити са ВАЛ-Г. И мислим да ћемо имати студенте који ће се позабавити овим питањем.
  • Већ имамо особу одговорну за пренос резервних копија и ВАЛ-а између облака.
  • Недавно смо објавили идеју да можемо још више да убрзамо ВАЛ-Г тако што ћемо распаковати инкременталне резервне копије без поновног писања страница и оптимизације архива које тамо шаљемо.

Можете их поделити овде

Чему је служио овај извештај? Штавише, сада, поред 4 особе које подржавају овај пројекат, имамо додатне руке, којих има доста. Поготово ако им пишете у личној поруци. А ако направите резервну копију својих података и то урадите користећи ВАЛ-Г или желите да пређете на ВАЛ-Г, онда можемо прилично лако да удовољимо вашим жељама.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

Ово је КР код и веза. Можете проћи кроз њих и написати све своје жеље. На пример, не поправљамо неку грешку. Или заиста желите неку функцију, али из неког разлога она још није ни у једној резервној копији, укључујући и нашу. Обавезно пишите о овоме.

ВАЛ-Г: нове функције и проширење заједнице. Георгиј Рилов

pitanja

Здраво! Хвала на извештају! Питање о ВАЛ-Г, али не о Постгресу. ВАЛ-Г прави резервну копију МиСКЛ-а и позива додатну резервну копију. Ако узмемо модерне инсталације на ЦентОС и ако иум инсталирате МиСКЛ, МариДБ ће бити инсталиран. Од верзије 10.3 додатна резервна копија није подржана, МариДБ резервна копија је подржана. како си са овим?

Тренутно нисмо покушали да направимо резервну копију МариДБ-а. Имали смо захтева за ФоундатионДБ подршку, али генерално, ако постоји такав захтев, онда можемо наћи људе који ће то учинити. Није тако дуго или тешко као што мислим.

Добар дан Хвала на извештају! Питање о потенцијалним новим функцијама. Да ли сте спремни да учините да ВАЛ-Г ради са тракама како бисте могли да направите резервну копију на тракама?

Очигледно значи резервна копија на касети?

Да.

Ту је Андреј Бородин, који може боље да одговори на ово питање од мене.

(Андреј) Да, хвала на питању! Имали смо захтев да пребацимо резервну копију на траку из складишта у облаку. И за ово тестерисање пренос између облака. Зато што је пренос са облака на облак генерализована верзија преноса на траку. Поред тога, имамо прошириву архитектуру у смислу складишта. Иначе, многе Стороге су написали студенти. А ако напишете Складиште за траку, онда ће то, наравно, бити подржано. Спремни смо да размотримо захтеве за повлачењем. Тамо треба да напишете датотеку, прочитате датотеку. Ако радите ове ствари у Го-у, обично завршите са 50 линија кода. А онда ће трака бити подржана у ВАЛ-Г.

Хвала на извештају! Занимљив процес развоја. Бацкуп је озбиљан део функционалности који би требало да буде добро покривен тестовима. Када сте имплементирали функционалност за нове базе података, да ли су и ученици писали тестове, или сте сами писали тестове и потом дали имплементацију студентима?

Ученици су писали и тестове. Али студенти су писали више за функције као што су нове базе података. Написали су интеграционе тестове. И писали су јединичне тестове. Ако интеграција прође, односно тренутно, ово је скрипта коју извршавате ручно или имате црон који то ради, на пример. Односно, сценарио је тамо врло јасан.

Ученици немају много искуства. Да ли преглед траје много времена?

Да, прегледи одузимају доста времена. Односно, обично, када дође неколико извршилаца одједном и каже да сам урадио ово, урадио сам оно, онда треба да размислите и одвојите пола дана да схватите шта су ту написали. Зато што се код мора пажљиво прочитати. Нису имали интервју. Не познајемо их добро, тако да је потребно доста времена.

Хвала на извештају! Раније је Андреј Бородин изјавио да арцхиве_цомманд у ВАЛ-Г треба позвати директно. Али у случају неке врсте кластер кертриџа, потребна нам је додатна логика да одредимо чвор из којег треба послати осовине. Како сами решавате овај проблем?

Шта је твој проблем овде? Рецимо да имате синхрони реплику са којом правите резервну копију? Или шта?

(Андреј) Чињеница је да је ВАЛ-Г заиста намењен да се користи без схелл скрипти. Ако нешто недостаје, онда додајмо логику која би требало да буде унутар ВАЛ-Г. Што се тиче тога одакле треба да дође архивирање, сматрамо да би архивирање требало да буде од тренутног мастера у кластеру. Архивирање из реплике је лоша идеја. Постоје различити могући сценарији са проблемима. Конкретно, проблеми са архивирањем временских рокова и свих додатних информација. Хвала на питању!

(Појашњење: Отарасили смо се схелл скрипти у овом броју)

Добро вече! Хвала на извештају! Занима ме функција за достизање о којој сте говорили. Били смо суочени са ситуацијом у којој је реплика била иза и није могла да сустигне. И нисам нашао опис ове функције у ВАЛ-Г документима.

Цатцхуп се појавио буквално 20. јануара 2020. Документација ће можда требати још мало посла. Ми то сами пишемо и не пишемо то баш добро. И можда би требало да почнемо да захтевамо од ученика да то напишу.

Да ли је већ објављено?

Захтев за повлачење је већ мртав, тј. проверио сам га. Пробао сам ово на тестном кластеру. До сада нисмо имали ситуацију да бисмо ово могли да тестирамо на борбеном примеру.

Кога очекивати?

Не знам. Сачекајте месец дана, проверићемо сигурно.

Извор: ввв.хабр.цом

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