Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

In-Memory je nabor konceptov za shranjevanje podatkov, ko so shranjeni v RAM-u aplikacije, disk pa se uporablja za varnostno kopiranje. Pri klasičnih pristopih so podatki shranjeni na disku, pomnilnik pa v predpomnilniku. Na primer, spletna aplikacija z zaledjem za obdelavo podatkov jih zahteva v shrambo: prejme jih, transformira in veliko podatkov se prenese po omrežju. V In-Memory se izračuni pošljejo v podatke – v shrambo, kjer se obdelajo in je omrežje manj obremenjeno.

Zahvaljujoč svoji arhitekturi In-Memory pospeši dostop do podatkov za nekajkrat in včasih celo za rede velikosti hitreje. Na primer, bančni analitiki želijo videti v analitični aplikaciji poročilo o izdanih posojilih v zadnjem letu v dinamiki po dnevih. Ta postopek bo na klasičnem DBMS-ju trajal nekaj minut, pri In-Memory pa se bo pojavil skoraj takoj. To je zato, ker vam pristop omogoča predpomniti veliko več informacij in so shranjene v RAM-u "pri roki". Aplikaciji ni treba zahtevati podatkov s trdega diska, katerih razpoložljivost je omejena s hitrostjo omrežja in diska.

Katere druge možnosti so na voljo z In-Memory in kakšen pristop je to? Vladimir Pligin - inženir pri GridGain. To pregledno gradivo bo koristno razvijalcem ozadja spletnih aplikacij, ki še niso delali z In-Memory in želijo poskusiti ali jih zanimajo sodobni trendi v razvoju programske opreme in načrtovanju arhitekture.

Obvestilo. Članek temelji na prepisu Vladimirjevega poročila na #GetIT Conf. Pred uvedbo samoizolacije smo v Moskvi in ​​Sankt Peterburgu redno organizirali srečanja in konference za razvijalce: razpravljali smo o trendih, aktualnih razvojnih vprašanjih, težavah in njihovih rešitvah. Trenutno ni mogoče organizirati konference, vendar je čas, da delite koristne materiale iz preteklih.

Kdo in kako uporablja In-Memory

In-Memory se najpogosteje uporablja tam, kjer je potrebna hitra interakcija uporabnika ali obdelava velikih količin podatkov.

  • Banke uporabite In-Memory, na primer za zmanjšanje zamud, ko stranke uporabljajo aplikacije, ali za analizo stranke pred izdajo posojila.
  • Fintech uporablja In-Memory za izboljšanje delovanja storitev in aplikacij za banke, ki obdelavo in analizo podatkov izvajajo zunanji izvajalci. 
  • Zavarovalnice: za izračun tveganj, na primer z analizo podatkov o strankah v več letih.
  • Logistična podjetja. Obdelujejo veliko podatkov, na primer za izračun optimalnih poti tovornega in potniškega prometa s tisočimi parametri ter spremljanje statusa pošiljk.
  • Maloprodaja. Rešitve In-Memory pomagajo strankam hitreje služiti in obdelujejo velike količine informacij: pošiljke, računi, transakcije, prisotnost na tisoče blaga v skladiščih in pripravljajo analitična poročila.
  • В Internet stvari In-Memory nadomešča tradicionalne zbirke podatkov.
  • Farmacevtska podjetja uporabljajo In-Memory, na primer, za razvrščanje kombinacij sestavkov zdravil. 

Povedal vam bom nekaj primerov, kako naše stranke uporabljajo rešitve In-Memory in kako jih lahko implementirate sami.

In-Memory kot primarni pomnilnik

Ena izmed naših strank je velik dobavitelj medicinske znanstvene opreme iz ZDA. Kot glavno shrambo podatkov uporabljajo rešitev In-Memory. Vsi podatki so shranjeni na disku, podmnožica podatkov, ki se aktivno uporablja, pa se hrani v RAM-u. Metode dostopa do shrambe so standardne - GDBC (Generic Database Connector) in jezik poizvedb SQL.

Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

Skupaj se to imenuje zbirka podatkov v pomnilniku (IMDB) ali Memory-Centric Storage. Ta razred rešitev ima veliko imen, vendar ta niso edina. 

Lastnosti IMDB:

  • Podatki, ki so shranjeni v In-Memory in do katerih dostopate prek SQL, so enaki kot pri drugih pristopih. So sinhronizirani, drugačen je le način predstavitve, način nagovarjanja. Transakcionalnost deluje med podatki.

  • IMDB je hitrejši od relacijskih baz podatkov, ker je hitreje pridobiti informacije iz RAM-a kot z diska. 
  • Notranji optimizacijski algoritmi imajo manj navodil.
  • IMDB-ji so primerni za upravljanje podatkov, dogodkov in transakcij v aplikacijah.

IMDB-ji delno podpirajo ACID: Atomicity, Consistency in Isolation. Vendar ne podpirajo "trajnosti" - ko je napajanje izklopljeno, se izgubijo vsi podatki. Če želite rešiti težavo, lahko uporabite posnetke - "posnetek" baze podatkov, analogen varnostni kopiji baze podatkov na trdem disku, ali posnamete transakcije (dnevnike) za obnovitev podatkov po ponovnem zagonu.

Za ustvarjanje aplikacij, odpornih na napake

Predstavljajmo si klasično arhitekturo spletne aplikacije, odporne na napake. Deluje takole: vse zahteve porazdeli spletni izravnalnik med strežnike. Ta sistem je stabilen, ker se strežniki podvajajo in varnostno kopirajo v primeru incidentov.

Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

Balancer usmerja vse zahteve iz ene seje izključno na en strežnik. To je mehanizem stikalne seje: vsaka seja je povezana s strežnikom, kjer se lokalno shranjuje in obdeluje. 

Kaj se zgodi, ko eden od strežnikov odpove?

Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

To ne bo vplivalo na storitev, ker je arhitektura podvojena. Vendar bomo izgubili podmnožico sej mrtvega strežnika. In hkrati uporabniki, ki so vezani na te seje. Na primer, stranka odda naročilo in ga nenadoma vrže iz pisarne. Nesrečen bo, ko se bo znova prijavil in ugotovil, da bo treba vse narediti znova.

Spletna aplikacija mora podpirati veliko število uporabnikov in se ne upočasnjuje, da lahko le-ti udobno delajo. Če pa je zavrnjena, se bo z vsako naslednjo zahtevo čas, potreben za komunikacijo s shrambo seje, povečal. To poveča povprečno zakasnitev za druge uporabnike. A ne želijo čakati dlje, kot so vajeni.

Ta problem je rešljiv tako kot naš drugi naročnik, veliki ponudnik PASS iz ZDA. Za združevanje spletnih sej uporablja In-Memory. Da bi to naredil, jih ne shrani lokalno, ampak centralno - v gručo In-Memory. V tem primeru so seje na voljo veliko hitreje, ker so že v RAM-u.

Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

Ko se strežnik zruši, izravnalnik pošlje zahteve s porušenega strežnika drugim strežnikom, kot v klasični arhitekturi. Vendar obstaja pomembna razlika: seje so shranjene v gruči v pomnilniku in strežniki imajo dostop do sej padlega strežnika.

Ta arhitektura poveča odpornost celotnega sistema na napake. Poleg tega je možno popolnoma opustiti mehanizem stikalne seje.

Hibridna transakcijska analitična obdelava (HTAP)

Običajno sta transakcijski in analitični sistem ločena. Ko se ločita, pride do obremenitve glavne baze. Za analitično obdelavo se podatki kopirajo v repliko, tako da analitična obdelava ne moti transakcijskih procesov. Toda kopiranje poteka z zamikom - nemogoče ga je ponoviti brez zamika. Če to počnemo sinhrono, bo to tudi upočasnilo glavno bazo in ne bomo dobili nobenega dobitka.

V HTAP vse deluje drugače - ista shramba podatkov se uporablja za transakcijsko obremenitev iz aplikacij in za analitične poizvedbe, ki lahko trajajo dolgo časa. Ko so podatki v RAM-u, se analitične poizvedbe izvajajo hitreje, strežnik z bazo podatkov pa je manj obremenjen (povprečno).

Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

Hibridni pristop podira zid med obdelavo transakcij in analitiko. Če izvajamo analitiko na istem pomnilniku, potem se analitične poizvedbe sprožijo na podatkih iz RAM-a. So veliko natančnejši, bolj razumljivi in ​​ustrezni.

Integracija rešitev In-Memory

(Relativno) preprost način - razvijati vse iz nič. Podatke hranimo na disku in hranimo vroče podatke v pomnilniku. To pomaga preživeti ponovni zagon ali izpad strežnika.

Tukaj sta na delu dva glavna scenarija, ko so podatki shranjeni na disku. V prvem želimo preživeti zrušitve ali redne ponovne zagone gruče ali delov – želimo ga uporabljati kot preprosto bazo podatkov. V drugem scenariju, ko je podatkov preveč, jih je nekaj v pomnilniku.

Če ni mogoče zgraditi vsega iz nič, je mogoče integrirati In-Memory v že obstoječo arhitekturo. Toda vse rešitve In-Memory niso primerne za to. Obstajajo trije obvezni pogoji. Rešitev In-Memory mora podpirati:

  • standardni način povezovanja z bazo podatkov, ki se nahaja pod njo (na primer MySQL);
  • standardni jezik poizvedb, da ne bi prepisali in spremenili logike interakcije s shrambo;
  • transakcijski - ohranjajo semantiko interakcije.

Če so izpolnjeni vsi trije pogoji, je integracija možna. Med aplikacijo in bazo podatkov postavimo In-Memory Data Grid. Zdaj bodo zahteve za pisanje dodeljene osnovni bazi podatkov, zahteve za branje pa bodo dodeljene osnovni bazi podatkov, če podatki niso v predpomnilniku.

Arhitektura v pomnilniku za spletne storitve: osnove in načela tehnologije

Če vam je pomemben hiter dostop do podatkov in njihova obdelava, na primer za poslovno analitiko, lahko razmislite o implementaciji In-Memory. Za izvedbo pa lahko pri načrtovanju nove arhitekture uporabite obe metodi.

Vir: www.habr.com

Dodaj komentar