Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

In-Memory yra sąvokų rinkinys, skirtas duomenų saugojimui, kai jie saugomi programos RAM, o diskas naudojamas atsarginei kopijai kurti. Taikant klasikinius metodus, duomenys saugomi diske, o atmintis – talpykloje. Pavyzdžiui, žiniatinklio programa, turinti duomenų apdorojimo užpakalinę programą, prašo juos į saugyklą: priima, transformuoja ir tinklu perduodama daug duomenų. In-Memory programoje skaičiavimai siunčiami į duomenis – į saugyklą, kur jie apdorojami ir tinklas mažiau apkraunamas.

Dėl savo architektūros „In-Memory“ paspartina prieigą prie duomenų kelis kartus, o kartais net dydžių eilėmis greičiau. Pavyzdžiui, banko analitikai analitinėje programoje nori matyti praėjusių metų išduotų paskolų dinamiką pagal dieną. Klasikinėje DBVS šis procesas užtruks keletą minučių, tačiau naudojant „In-Memory“ jis pasirodys beveik iš karto. Taip yra todėl, kad šis metodas leidžia talpykloje išsaugoti daug daugiau informacijos ir ji saugoma „po ranka“ esančioje RAM. Programai nereikia prašyti duomenų iš standžiojo disko, kurio prieinamumą riboja tinklo ir disko greitis.

Kokios kitos galimybės yra su „In-Memory“ ir koks tai metodas? Vladimiras Pliginas - „GridGain“ inžinierius. Ši apžvalgos medžiaga bus naudinga žiniatinklio programų backend kūrėjams, kurie nedirbo su In-Memory ir nori išbandyti arba domisi šiuolaikinėmis programinės įrangos kūrimo ir architektūros dizaino tendencijomis.

Atkreipti dėmesį. Straipsnis parengtas remiantis Vladimiro pranešimo stenograma #GetIT Conf. Prieš įvedant saviizoliaciją, Maskvoje ir Sankt Peterburge nuolat rengdavome susitikimus ir konferencijas kūrėjams: aptardavome tendencijas, aktualias plėtros problemas, problemas ir jų sprendimus. Dabar konferencijos surengti neįmanoma, bet laikas pasidalinti naudinga medžiaga iš praeities.

Kas ir kaip naudoja „In-Memory“.

In-Memory dažniausiai naudojama ten, kur reikalinga greita vartotojo sąveika arba didelio duomenų kiekio apdorojimas.

  • Bankai naudokite „In-Memory“, pavyzdžiui, norėdami sumažinti vėlavimą, kai klientai naudoja programas, arba analizuoti klientą prieš išduodant paskolą.
  • Fintech naudoja „In-Memory“, kad pagerintų paslaugų ir taikomųjų programų našumą bankams, kurie perduoda duomenų apdorojimą ir analizę. 
  • Draudimo kompanijos: rizikai apskaičiuoti, pavyzdžiui, analizuojant klientų duomenis kelerius metus.
  • Logistikos įmonės. Jie apdoroja daug duomenų, pavyzdžiui, apskaičiuoja optimalius krovinių ir keleivių vežimo maršrutus su tūkstančiais parametrų, seka siuntų būseną.
  • Mažmeninė. In-Memory sprendimai padeda greičiau aptarnauti klientus ir apdoroti didelius informacijos kiekius: siuntas, sąskaitas faktūras, operacijas, tūkstančius prekių buvimą sandėliuose, rengti analitines ataskaitas.
  • В DI In-Memory pakeičia tradicines duomenų bazes.
  • Farmacija Pavyzdžiui, įmonės naudoja „In-Memory“, kad rūšiuotų vaistų kompozicijų derinius. 

Pateiksiu keletą pavyzdžių, kaip mūsų klientai naudojasi „In-Memory“ sprendimais ir kaip galite juos įgyvendinti patys.

Atmintyje kaip pagrindinė saugykla

Vienas iš mūsų klientų yra didelis medicinos mokslinės įrangos tiekėjas iš JAV. Jie naudoja „In-Memory“ sprendimą kaip pagrindinę duomenų saugyklą. Visi duomenys saugomi diske, o aktyviai naudojamas duomenų poaibis saugomas RAM. Prieigos prie saugyklos metodai yra standartiniai – GDBC (bendrosios duomenų bazės jungtis) ir SQL užklausų kalba.

Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

Bendrai tai vadinama atminties duomenų baze (IMDB) arba į atmintį orientuota saugykla. Ši sprendimų klasė turi daug pavadinimų, jie nėra vieninteliai. 

IMDB funkcijos:

  • Duomenys, saugomi atmintyje ir pasiekiami per SQL, yra tokie patys kaip ir naudojant kitus metodus. Jie sinchronizuojami, skiriasi tik pateikimo būdas, kreipimosi būdas. Transakcija veikia tarp duomenų.

  • IMDB yra greitesnis nei reliacinės duomenų bazės, nes greičiau gaunama informacija iš RAM nei iš disko. 
  • Vidiniai optimizavimo algoritmai turi mažiau instrukcijų.
  • IMDB tinka duomenims, įvykiams ir operacijoms tvarkyti programose.

IMDB iš dalies palaiko ACID: atomiškumą, nuoseklumą ir izoliaciją. Tačiau jie nepalaiko „patvarumo“ - išjungus maitinimą, visi duomenys prarandami. Norėdami išspręsti problemą, galite naudoti momentines nuotraukas - duomenų bazės „momentinę nuotrauką“, panašią į duomenų bazės atsarginę kopiją standžiajame diske, arba įrašyti operacijas (žurnalus), kad atkurtumėte duomenis po perkrovimo.

Sukurti gedimams atsparias programas

Įsivaizduokime klasikinę gedimams atsparios žiniatinklio programos architektūrą. Tai veikia taip: visas užklausas žiniatinklio balansavimo priemonė paskirsto tarp serverių. Ši sistema yra stabili, nes serveriai dubliuoja vienas kitą ir sukuria atsargines kopijas incidentų atveju.

Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

Balansuotojas nukreipia visas užklausas iš vienos sesijos griežtai į vieną serverį. Tai yra seanso mechanizmas: kiekviena sesija yra susieta su serveriu, kuriame jis saugomas ir apdorojamas vietoje. 

Kas atsitiks, kai vienas iš serverių sugenda?

Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

Paslauga nebus paveikta, nes pasikartoja architektūra. Bet mes prarasime negyvo serverio seansų poaibį. Ir tuo pačiu metu vartotojai, kurie yra susieti su šiomis seansais. Pavyzdžiui, klientas pateikia užsakymą ir staiga išmeta jį iš biuro. Jis bus nepatenkintas, kai vėl prisijungs ir pamatys, kad viską reikės daryti iš naujo.

Žiniatinklio programa reikalinga, kad palaikytų didelį vartotojų skaičių ir nesulėtėtų, kad jie galėtų patogiai dirbti. Bet jei jis bus atmestas, su kiekvienu paskesniu prašymu laikas, per kurį reikia susisiekti su seansų saugykla, ilgės. Tai padidina vidutinį delsą kitiems vartotojams. Tačiau jie nenori laukti ilgiau, nei yra įpratę.

Šią problemą galima išspręsti kaip ir kitas mūsų klientas – didelis PASS tiekėjas iš JAV. Jis naudoja „In-Memory“, kad sugrupuotų žiniatinklio sesijas. Norėdami tai padaryti, jis saugo juos ne lokaliai, o centralizuotai - „In-Memory“ klasteryje. Tokiu atveju sesijos pasiekiamos daug greičiau, nes jos jau yra RAM.

Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

Kai serveris sugenda, balansavimo priemonė siunčia užklausas iš sugedusio serverio į kitus serverius, kaip ir klasikinėje architektūroje. Tačiau yra svarbus skirtumas: sesijos saugomos „In-Memory“ klasteryje ir serveriai turi prieigą prie nukritusio serverio seansų.

Ši architektūra padidina visos sistemos atsparumą gedimams. Be to, galima visiškai atsisakyti lazdos seanso mechanizmo.

Hibridinis sandorių analizės apdorojimas (HTAP)

Paprastai sandorių ir analizės sistemos laikomos atskirai. Kai jie atsiskiria, apkraunamas pagrindinis pagrindas. Analitiniam apdorojimui duomenys nukopijuojami į kopiją, kad analitinis apdorojimas netrukdytų operacijų procesams. Tačiau kopijavimas vyksta su vėlavimu – neįmanoma atkartoti be vėlavimo. Jei tai darysime sinchroniškai, tai taip pat sulėtins pagrindinę bazę ir negausime laimėjimų.

HTAP viskas veikia kitaip – ​​ta pati duomenų saugykla naudojama operacijų įkėlimui iš programų ir analitinėms užklausoms, kurių pildymas gali užtrukti ilgai. Kai duomenys yra RAM, analitinės užklausos vykdomos greičiau, o serveris su duomenų baze mažiau apkraunamas (vidutiniškai).

Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

Hibridinis metodas sugriauna sieną tarp operacijų apdorojimo ir analizės. Jei atliekame analizę toje pačioje saugykloje, tada paleidžiamos analitinės užklausos dėl duomenų iš RAM. Jie yra daug tikslesni, labiau interpretuojami ir adekvatesni.

„In-Memory“ sprendimų integravimas

(palyginti) paprastas būdas - plėtoti viską nuo nulio. Duomenis laikome diske, o karštus duomenis saugome atmintyje. Tai padeda išgyventi serverio paleidimą iš naujo arba pertrūkus.

Čia veikia du pagrindiniai scenarijai, kai duomenys saugomi diske. Pirmuoju atveju norime išgyventi klasterio ar dalių avarijas ar reguliarius perkrovimus – norime naudoti ją kaip paprastą duomenų bazę. Antruoju atveju, kai yra per daug duomenų, dalis jų yra atmintyje.

Jei neįmanoma sukurti visko nuo nulio, galima integruoti In-Memory į jau esama architektūra. Tačiau ne visi „In-Memory“ sprendimai tam tinka. Yra trys privalomos sąlygos. „In-Memory“ sprendimas turi palaikyti:

  • standartinis būdas prisijungti prie duomenų bazės, kuri bus po ja (pavyzdžiui, MySQL);
  • standartinė užklausos kalba, kad nereikėtų perrašyti ir nekeisti sąveikos su saugykla logikos;
  • transakcinis – išsaugoti sąveikos semantiką.

Jei tenkinamos visos trys sąlygos, integracija yra įmanoma. Tarp programos ir duomenų bazės įdedame duomenų tinklelį „In-Memory“. Dabar rašymo užklausos bus perduotos pagrindinei duomenų bazei, o skaitymo užklausos – pagrindinei duomenų bazei, jei duomenų nėra talpykloje.

Žiniatinklio paslaugų architektūra atmintyje: technologijos pagrindai ir principai

Jei jums svarbi greita prieiga prie duomenų ir jų apdorojimas, pavyzdžiui, verslo analitikai, galite pagalvoti apie „In-Memory“ diegimą. O įgyvendinimui galite naudoti abu metodus kurdami naują architektūrą.

Šaltinis: www.habr.com

Добавить комментарий