Arhitektura u memoriji za web usluge: osnove i principi tehnologije

In-Memory je skup koncepata za pohranjivanje podataka kada su pohranjeni u RAM-u aplikacije, a disk se koristi za sigurnosnu kopiju. U klasičnim pristupima, podaci se pohranjuju na disk, a memorija u keš memoriju. Na primjer, web aplikacija sa pozadinom za obradu podataka zahtijeva ih u skladište: prima ih, transformiše i mnogo podataka se prenosi preko mreže. U In-Memory, proračuni se šalju u podatke - u skladište, gdje se obrađuju i mreža je manje opterećena.

Zahvaljujući svojoj arhitekturi, In-Memory ubrzava pristup podacima nekoliko puta, a ponekad čak i za redove veličine, brže. Na primjer, bankarski analitičari žele da u analitičkoj aplikaciji vide izvještaj o kreditima izdatim u protekloj godini u dinamici po danu. Ovaj proces će trajati nekoliko minuta na klasičnom DBMS-u, ali sa In-Memory-om će se pojaviti gotovo odmah. To je zato što vam pristup omogućava da keširate mnogo više informacija i one se pohranjuju u RAM-u „pri ruci“. Aplikacija ne mora tražiti podatke s tvrdog diska, čija je dostupnost ograničena mrežom i brzinom diska.

Koje su druge mogućnosti dostupne uz In-Memory i kakav je to pristup? Vladimir Pligin - inženjer u GridGain-u. Ovaj pregledni materijal će biti koristan programerima pozadinskih web aplikacija koji nisu radili sa In-Memory-om i žele probati, ili su zainteresirani za moderne trendove u razvoju softvera i dizajnu arhitekture.

primjedba. Članak je zasnovan na transkriptu Vladimirovog izvještaja na #GetIT Conf. Prije uvođenja samoizolacije, redovno smo održavali sastanke i konferencije za programere u Moskvi i Sankt Peterburgu: razgovarali smo o trendovima, aktuelnim razvojnim problemima, problemima i njihovim rješenjima. Sada nije moguće održati konferenciju, ali vrijeme je da podijelimo korisne materijale iz prošlih vremena.

Ko i kako koristi In-Memory

In-Memory se najčešće koristi tamo gdje je potrebna brza interakcija korisnika ili obrada velikih količina podataka.

  • Banke koristite In-Memory, na primjer, za smanjenje kašnjenja kada klijenti koriste aplikacije ili za analizu klijenta prije izdavanja zajma.
  • Fintech koristi In-Memory za poboljšanje performansi usluga i aplikacija za banke koje predaju obradu i analizu podataka. 
  • Osiguravajuća društva: za izračunavanje rizika, na primjer, analizom podataka o klijentima tokom nekoliko godina.
  • Logističke kompanije. Oni obrađuju mnogo podataka, na primjer, kako bi izračunali optimalne rute za prevoz tereta i putnika sa hiljadama parametara, te pratili status pošiljki.
  • Maloprodaja. In-Memory rješenja pomažu u bržem opsluživanju kupaca i obradi velikih količina informacija: pošiljki, faktura, transakcija, prisutnosti hiljada robe u skladištima, te priprema analitičkih izvještaja.
  • В IoT In-Memory zamjenjuje tradicionalne baze podataka.
  • Pharmaceutical kompanije koriste In-Memory, na primjer, za sortiranje kombinacija sastava lijekova. 

Reći ću vam nekoliko primjera kako naši klijenti koriste In-Memory rješenja i kako ih sami možete implementirati.

In-Memory kao primarna memorija

Jedan od naših klijenata je veliki dobavljač medicinske naučne opreme iz SAD. Oni koriste In-Memory rješenje kao svoju glavnu pohranu podataka. Svi podaci se pohranjuju na disku, a podskup podataka koji se aktivno koristi čuva se u RAM-u. Metode pristupa skladištu su standardne - GDBC (Generic Database Connector) i SQL upitni jezik.

Arhitektura u memoriji za web usluge: osnove i principi tehnologije

Kolektivno se to naziva baza podataka u memoriji (IMDB) ili memorija-centrična pohrana. Ova klasa rješenja ima mnogo imena, nisu jedina. 

IMDB karakteristike:

  • Podaci koji su pohranjeni u In-Memory i kojima se pristupa putem SQL-a isti su kao i u drugim pristupima. One su sinhronizovane, samo je način prezentacije, način obraćanja drugačiji. Transakcionalnost radi između podataka.

  • IMDB je brži od relacijskih baza podataka jer je brže dohvatiti informacije iz RAM-a nego s diska. 
  • Algoritmi interne optimizacije imaju manje instrukcija.
  • IMDB-ovi su pogodni za upravljanje podacima, događajima i transakcijama u aplikacijama.

IMDB-ovi djelimično podržavaju ACID: atomičnost, konzistentnost i izolaciju. Ali ne podržavaju „izdržljivost“ - kada se napajanje isključi, svi podaci se gube. Da biste riješili problem, možete koristiti snimke - "snimku" baze podataka, analogno sigurnosnoj kopiji baze podataka na tvrdom disku, ili snimiti transakcije (logove) za vraćanje podataka nakon ponovnog pokretanja.

Za kreiranje aplikacija otpornih na greške

Zamislimo klasičnu arhitekturu web aplikacije otporne na greške. Funkcioniše ovako: svi zahtjevi se distribuiraju putem web balansera između servera. Ovaj sistem je stabilan jer se serveri međusobno dupliraju i prave rezervne kopije u slučaju incidenata.

Arhitektura u memoriji za web usluge: osnove i principi tehnologije

Balanser usmjerava sve zahtjeve iz jedne sesije striktno na jedan server. Ovo je mehanizam stick sesije: svaka sesija je povezana sa serverom gdje se lokalno pohranjuje i obrađuje. 

Šta se dešava kada jedan od servera pokvari?

Arhitektura u memoriji za web usluge: osnove i principi tehnologije

Usluga neće biti pogođena jer je arhitektura duplicirana. Ali izgubićemo podskup sesija mrtvog servera. A u isto vrijeme i korisnici koji su vezani za ove sesije. Na primjer, klijent naruči i iznenada ga izbaci iz kancelarije. Biće nesretan kada se ponovo prijavi i otkrije da će sve morati ponovo da se uradi.

Web aplikacija je potrebna da podržava veliki broj korisnika i da ne usporava kako bi mogli udobno raditi. Ali ako se odbije, sa svakim narednim zahtjevom će se povećavati vrijeme potrebno za komunikaciju sa spremištem sesija. Ovo povećava prosječno kašnjenje za druge korisnike. Ali ne žele da čekaju duže nego što su navikli.

Ovaj problem se može riješiti kao i naš drugi klijent, veliki PASS provajder iz SAD-a. Koristi In-Memory za grupisanje web sesija. Da bi to učinio, pohranjuje ih ne lokalno, već centralno - u klaster u memoriji. U ovom slučaju, sesije su dostupne mnogo brže jer su već u RAM-u.

Arhitektura u memoriji za web usluge: osnove i principi tehnologije

Kada se server sruši, balanser šalje zahtjeve sa srušenog servera drugim serverima, kao u klasičnoj arhitekturi. Ali postoji bitna razlika: sesije su pohranjene u klasteru u memoriji a serveri imaju pristup sesijama palog servera.

Ova arhitektura povećava otpornost na greške čitavog sistema. Štaviše, moguće je potpuno napustiti mehanizam stick session-a.

Hibridna transakciona analitička obrada (HTAP)

Obično se transakcioni i analitički sistemi drže odvojeno. Kada se odvoje, glavna baza je pod opterećenjem. Za analitičku obradu, podaci se kopiraju u repliku tako da analitička obrada ne ometa transakcijske procese. Ali kopiranje se dešava sa kašnjenjem - nemoguće je replicirati bez kašnjenja. Ako ovo radimo sinhrono, to će usporiti i glavnu bazu i nećemo dobiti nikakav dobitak.

U HTAP-u sve funkcionira drugačije - isto skladište podataka se koristi za transakcijsko opterećenje iz aplikacija i za analitičke upite koji mogu potrajati dugo da se završe. Kada su podaci u RAM-u, analitički upiti se izvršavaju brže, a server sa bazom podataka je manje opterećen (u prosjeku).

Arhitektura u memoriji za web usluge: osnove i principi tehnologije

Hibridni pristup ruši zid između obrade transakcija i analitike. Ako vršimo analitiku na istom skladištu, tada se pokreću analitički upiti za podatke iz RAM-a. Oni su mnogo precizniji, razumljiviji i adekvatniji.

Integracija In-Memory rješenja

(relativno) jednostavan način - razvijati sve od nule. Čuvamo podatke na disku i pohranjujemo vruće podatke u memoriju. Ovo pomaže preživjeti ponovno pokretanje ili prekide servera.

Ovdje postoje dva glavna scenarija kada se podaci pohranjuju na disk. U prvom, želimo da preživimo padove ili redovna ponovno pokretanje klastera ili delova - želimo da ga koristimo kao jednostavnu bazu podataka. U drugom scenariju, kada ima previše podataka, dio njih je u memoriji.

Ako nije moguće izgraditi sve od nule, moguće je integrirati In-Memory u već postojeća arhitektura. Ali nisu sva In-Memory rješenja prikladna za to. Postoje tri obavezna uslova. In-Memory rješenje mora podržavati:

  • standardni način povezivanja na bazu podataka koja će se nalaziti ispod nje (na primjer, MySQL);
  • standardni jezik upita, kako se ne bi prepisivala i mijenjala logika interakcije sa pohranom;
  • transakcioni - čuvaju semantiku interakcije.

Ako su ispunjena sva tri uslova, integracija je moguća. Postavljamo In-Memory Data Grid između aplikacije i baze podataka. Sada će zahtjevi za pisanje biti delegirani osnovnoj bazi podataka, a zahtjevi za čitanje će biti delegirani osnovnoj bazi podataka ako podaci nisu u kešu.

Arhitektura u memoriji za web usluge: osnove i principi tehnologije

Ako vam je važan brz pristup podacima i njihova obrada, na primjer, za poslovnu analitiku, možete razmisliti o implementaciji In-Memory. A za implementaciju, možete koristiti obje metode kada dizajnirate novu arhitekturu.

izvor: www.habr.com

Dodajte komentar