Architettura in memoria per i servizii web: principii è principii di a tecnulugia

In-Memory hè un inseme di cuncetti per almacenà e dati quandu hè guardatu in a RAM di l'applicazione, è u discu hè utilizatu per a copia di salvezza. In l'approcciu classicu, i dati sò almacenati in discu è a memoria hè guardata in cache. Per esempiu, una applicazione web cù un backend per u processu di dati a dumanda in u almacenamentu: u riceve, u trasforma, è assai dati sò trasferiti nantu à a reta. In In-Memory, i calculi sò mandati à i dati - à u almacenamiento, induve sò processati è a reta hè menu carica.

Grazie à a so architettura, In-Memory accelerà l'accessu di dati da parechje volte, è à volte ancu ordini di grandezza, più veloce. Per esempiu, l'analisti bancari volenu vede in una applicazione analitica un rapportu nantu à i prestiti emessi in dinamica per ghjornu per l'ultimu annu. Stu prucessu durà minuti nantu à un DBMS classicu, ma cù In-Memory apparirà quasi subitu. Questu hè chì l'approcciu permette di cache assai più infurmazione è hè guardatu in RAM "a manu". L'applicazione ùn hà micca bisognu di dumandà dati da u discu duru, a dispunibilità di quale hè limitata da a velocità di a rete è di u discu.

Chì altre pussibulità sò dispunibili cù In-Memory è chì tipu d'approcciu hè questu? Vladimir Pligin - ingegnere à GridGain. Stu materiale di rivisione serà utile à i sviluppatori di backend di l'applicazioni web chì ùn anu micca travagliatu cù In-Memory è volenu pruvà, o sò interessati à i tendenzi muderni in u sviluppu di software è u disignu di l'architettura.

Vita. L'articulu hè basatu annantu à a trascrizione di u rapportu di Vladimir in u #GetIT Conf. Prima di l'intruduzioni di l'autoisolamentu, avemu regularmente scontri è cunferenze per i sviluppatori in Mosca è San Petruburgu: avemu discututu tendenzi, prublemi di sviluppu attuale, prublemi è e so suluzioni. Ùn hè micca pussibule di fà una cunferenza avà, ma hè ora di sparte materiali utili da quelli passati.

Quale usa In-Memory è cumu

In-Memory hè più spessu usata induve l'interazzione rapida di l'utilizatori o u trattamentu di grande quantità di dati hè necessariu.

  • Banci Aduprate In-Memory, per esempiu, per riduce i ritardi quandu i clienti utilizanu applicazioni o per analizà u cliente prima di emette un prestitu.
  • Fintech usa In-Memory per migliurà a prestazione di i servizii è l'applicazioni per i banche chì esternalizzanu l'elaborazione è l'analisi di dati. 
  • Cumpagnia d'assicuranza: per calculà i risichi, per esempiu, analizendu i dati di i clienti annantu à parechji anni.
  • Cumpagnia di logistica. Prucessanu assai dati, per esempiu, per calculà e rotte ottimali per u trasportu di merci è di passageri cù millaie di parametri, è seguite u statutu di e spedizioni.
  • Retail. Soluzioni In-Memory aiutanu à serve i clienti più rapidamente è processà grandi volumi d'infurmazioni: spedizioni, fatture, transazzione, a presenza di millaie di merchenzie in magazzini, è preparanu rapporti analitici.
  • В IoT In-Memory rimpiazza e basa di dati tradiziunali.
  • Farmaceutica cumpagnii usanu In-Memory, per esempiu, per sorte à traversu cumminazzioni di cumpusizioni di droga. 

Vi diceraghju uni pochi esempi di cumu i nostri clienti utilizanu suluzioni In-Memory è cumu pudete implementà elli stessu.

In-Memoria cum'è almacenamiento primariu

Unu di i nostri clienti hè un grande fornitore di equipamentu scientificu medicale da i Stati Uniti. Adupranu una suluzione In-Memory cum'è u so almacenamentu di dati principali. Tutti i dati sò guardati nantu à u discu, è u subset di dati chì hè attivamente utilizatu hè guardatu in RAM. I metudi di accessu à l'almacenamiento sò standard - GDBC (Generic Database Connector) è lingua di query SQL.

Architettura in memoria per i servizii web: principii è principii di a tecnulugia

In cullettivu questu hè chjamatu In-Memory Database (IMDB) o Memory-Centric Storage. Sta classa di suluzioni hà parechji nomi, ùn sò micca solu. 

Funzioni IMDB:

  • I dati chì sò almacenati in In-Memory è accede à traversu SQL sò listessi in altri approcci. Sò sincronizzati, solu u modu di presentazione, u modu di affruntà hè diversu. A transazzione travaglia trà e dati.

  • IMDB hè più veloce di e basa di dati relazionale perchè hè più veloce per ricuperà l'infurmazioni da a RAM chì da u discu. 
  • L'algoritmi di ottimisazione interna anu menu struzzioni.
  • L'IMDB sò adattati per a gestione di dati, avvenimenti è transazzione in applicazioni.

L'IMDB supportanu parzialmente ACID: Atomicità, Coerenza è Isolamentu. Ma ùn sustene micca a "durabilità" - quandu u putere hè disattivatu, tutti i dati sò persi. Per risolve u prublema, pudete aduprà snapshots - una "snapshot" di a basa di dati, analogu à una copia di salvezza di basa di dati in un discu duru, o registrà e transacciones (logs) per restaurà e dati dopu un reboot.

Per creà applicazioni toleranti à i difetti

Imaginemu l'architettura classica di una applicazione web tolerante à i difetti. Funziona cusì: tutte e dumande sò distribuite da un web balancer trà i servitori. Stu sistema hè stabile perchè i servitori si duplicanu l'un à l'altru è facenu una copia di salvezza in casu di incidenti.

Architettura in memoria per i servizii web: principii è principii di a tecnulugia

U balancer dirige tutte e dumande da una sessione strettamente à un servitore. Questu hè un mecanismu di sessione di bastone: ogni sessione hè assuciata à un servitore induve hè almacenata è trattata in u locu. 

Chì succede quandu unu di i servitori falla?

Architettura in memoria per i servizii web: principii è principii di a tecnulugia

U serviziu ùn serà micca affettatu perchè l'architettura hè duplicata. Ma perderemu un subset di e sessioni di u servitore mortu. È à u listessu tempu, l'utilizatori chì sò ligati à sti sessioni. Per esempiu, un cliente mette un ordine è di colpu u ghjetta fora di l'uffiziu. Serà infelice quand'ellu si accede di novu è trova chì tuttu deve esse fattu di novu.

Una applicazione web hè necessaria per sustene un gran numaru d'utilizatori è micca rallentà per pudè travaglià cunfortu. Ma s'ellu hè rifiutatu, cù ogni dumanda sussegwente, u tempu chì ci vole à cumunicà cù a tenda di sessione aumenterà. Questu aumenta a latenza media per altri utilizatori. Ma ùn volenu aspittà più di quantu sò abituati.

Stu prublema pò esse risolta cum'è u nostru altru cliente, un grande fornitore PASS da i Stati Uniti. Utiliza In-Memory per raggruppare sessioni web. Per fà questu, li guarda micca in u locu, ma in u centru - in un cluster In-Memory. In questu casu, e sessioni sò dispunibuli assai più veloce perchè sò digià in RAM.

Architettura in memoria per i servizii web: principii è principii di a tecnulugia

Quandu un servitore crash, u balancer manda richieste da u servitore crash à altri servitori, cum'è in l'architettura classica. Ma ci hè una diferenza impurtante: e sessioni sò cullucate in un cluster In-Memory è i servitori anu accessu à e sessioni di u servitore cadutu.

Questa architettura aumenta a tolleranza di difetti di tuttu u sistema. Inoltre, hè pussibule abbandunà u mecanismu di sessione di bastone in tuttu.

Trattamentu analiticu transazionale ibridu (HTAP)

Di genere, i sistemi transazionali è analitici sò tenuti separati. Quandu si separanu, a basa principale hè sottu carica. Per u prucessu analiticu, i dati sò copiati in una replica per chì u processu analiticu ùn interferiscenu micca cù i prucessi transazzione. Ma a copia si faci cun un lag - hè impussibile di riplicà senza un lag. Se facemu questu in modu sincronu, rallentarà ancu a basa principale è ùn averemu micca vincite.

In HTAP, tuttu funziona in modu diversu - u stessu magazzinu di dati hè utilizatu per a carica transazionale da l'applicazioni, è per e dumande analitiche chì ponu piglià assai tempu per compie. Quandu i dati sò in RAM, e dumande analitiche sò eseguite più veloce, è u servitore cù a basa di dati hè menu carricu (in mediu).

Architettura in memoria per i servizii web: principii è principii di a tecnulugia

Un approcciu hibridu rompe u muru trà u prucessu di transazzione è l'analisi. Se realicemu analitiche nantu à u stessu almacenamentu, allora e dumande analitiche sò lanciate nantu à e dati da a RAM. Sò assai più precisi, più interpretabili è adatti.

Integrazione di suluzione In-Memory

Un modu (relativamente) simplice - sviluppà tuttu da zero. Mantenemu e dati nantu à u discu è almacenà i dati caldi in memoria. Questu aiuta à sopravvive à reboots o interruzioni di u servitore.

Ci sò dui scenarii principali à u travagliu quì quandu i dati sò almacenati in discu. In u primu, vulemu sopravvive à crashes o reboots regularmente di u cluster o parti - vulemu aduprà cum'è una basa di dati simplice. In u sicondu scenariu, quandu ci hè troppu dati, alcuni sò in memoria.

Se ùn hè micca pussibule di custruisce tuttu da zero, hè pussibule integrà In-Memory in un dighjà. architettura esistente. Ma micca tutte e soluzioni In-Memory sò adattati per questu. Ci sò trè cundizioni obligatorii. A suluzione In-Memory deve sustene:

  • modu standard per cunnette à a basa di dati chì serà situata sottu (per esempiu, MySQL);
  • una lingua standard di query, per ùn riscriva micca è cambià a logica di interazzione cù l'almacenamiento;
  • transazzione - priservà a semantica di l'interazzione.

Se tutti i trè cundizioni sò scontri, allura l'integrazione hè pussibule. Pusemu a Griglia di Dati In-Memory trà l'applicazione è a basa di dati. Avà e dumande di scrittura seranu delegate à a basa di dati sottostanti, è e dumande di lettura seranu delegate à a basa di dati sottumessi se i dati ùn sò micca in u cache.

Architettura in memoria per i servizii web: principii è principii di a tecnulugia

Se l'accessu rapidu à e dati è u so processu hè impurtante per voi, per esempiu, per l'analisi di l'affari, pudete pensà à implementà In-Memory. È per l'implementazione, pudete aduprà i dui metudi quandu cuncepisce una nova architettura.

Source: www.habr.com

Add a comment