In-Memory â en uppsĂ€ttning koncept för datalagring dĂ€r informationen sparas i applikationens minne och disken anvĂ€nds för backup. I klassiska metoder lagras data pĂ„ disken och minnet anvĂ€nds som cache. Till exempel, en webbapplikation med backend för databehandling begĂ€r data frĂ„n lagringen: den hĂ€mtar, transformerar och överför stora datamĂ€ngder via nĂ€tverket. Med In-Memory skickas berĂ€kningarna till data â till lagringen, dĂ€r de behandlas och nĂ€tverket belastas mindre.

Vilka ytterligare möjligheter som erbjuds med In-Memory och vad denna metod innebĂ€r, kommer att diskuteras av Vladimir Pligin â ingenjör pĂ„ GridGain. Detta översiktsmaterial kommer vara anvĂ€ndbart för backendutvecklare av webbapplikationer som inte har arbetat med In-Memory och vill prova, eller som Ă€r intresserade av moderna utvecklingstrender och arkitekturprojekt.
AnmÀrkning. Artikeln Àr baserad pÄ en avskrift av Vladimirs föredrag vid konferensen #GetIT Conf. Fram till införandet av sjÀlvisolering höll vi regelbundet meetups och konferenser för utvecklare i Moskva och Sankt Petersburg: vi diskuterade trender, aktuella frÄgor inom utveckling, problem och deras lösningar. Nu kan vi inte hÄlla konferenser, men det Àr en utmÀrkt tid att dela vÀrdefullt material frÄn det förflutna.
Vem och hur anvÀnder In-Memory
In-Memory anvÀnds oftast dÀr det krÀvs snabb interaktion med anvÀndaren eller behandling av stora datamÀngder.
- Banker anvÀnder In-Memory, till exempel för att minska fördröjningar nÀr kunder anvÀnder applikationer eller för att analysera kunder före utlÄning.
- Fintech anvĂ€nder In-Memory för att förbĂ€ttra prestandan av tjĂ€nster och applikationer för banker som outsourcar bearbetning och analys av data.Â
- FörsÀkringsbolag: för riskbedömning, till exempel genom att analysera kunddata under flera Är.
- Logistikföretag. De hanterar stora mÀngder data, till exempel för att rÀkna ut optimala rutter för gods- och passagerartransport med tusentals parametrar, samt spÄra status pÄ leveranser.
- Detaljhandeln. In-Memory lösningar hjÀlper till att snabbare betjÀna kunder och hantera stora volymer information: leveranser, fakturor, transaktioner, tillgÀnglighet av tusentals varor pÄ lagren och skapa analytiska rapporter.
- I IoT In-Memory ersÀtter traditionella databaser.
- Pharmaceutical företag anvĂ€nder In-Memory, till exempel för att pröva kombinationer av lĂ€kemedelsingredienser.Â
Jag kommer att ge nÄgra exempel pÄ hur vÄra kunder anvÀnder In-Memory lösningar och hur ni kan implementera dem sjÀlva.
In-Memory som primÀr lagring
En av vĂ„ra kunder Ă€r en stor leverantör av medicinsk forskningsutrustning frĂ„n USA. De anvĂ€nder en In-Memory lösning som primĂ€r datalagring. Alla data lagras pĂ„ disk, medan en delmĂ€ngd av de aktivt anvĂ€nda data hĂ„lls i RAM. Ă tkomstmetoderna till lagringen Ă€r standard â GDBC (Generic Database Connector) och SQL-sprĂ„k.

Tillsammans kallas detta In-Memory Database (IMDB) eller Memory-Centric Storage. Denna typ av lösningar har mĂ„nga namn, och det Ă€r inte de enda.Â
Funktioner hos IMDB:
- Data som lagras i In-Memory och Àr tillgÀngliga via SQL Àr desamma som i andra tillvÀgagÄngssÀtt. De Àr synkroniserade, endast sÀttet att representera och hur man kommer Ät dem skiljer sig. Det finns transaktionalitet mellan data.
- IMDB Ă€r snabbare Ă€n relationella databaser, eftersom det Ă€r snabbare att hĂ€mta information frĂ„n RAM Ă€n frĂ„n disk.Â
- Interna optimeringsalgoritmer har fÀrre instruktioner.
- IMDB Àr lÀmpliga för att hantera data, hÀndelser och transaktioner i applikationer.
IMDB stöder delvis ACID: atomicitet, konsistens och isolering. Men de stöder inte 'haltbarhet' â vid strömavbrott försvinner all data. För att lösa problemet kan man anvĂ€nda snapshots â en 'bild' av databasen, analog med databackup pĂ„ en hĂ„rddisk, eller registrera transaktioner (loggar) för att Ă„terstĂ€lla data efter omstart.
För att skapa robusta applikationer
Vi presenterar en klassisk arkitektur för ett felresilient webbapplikation. Den fungerar sÄ hÀr: alla förfrÄgningar fördelas av en webbbalanserare mellan servrarna. Detta system Àr motstÄndskraftigt eftersom servrarna duplicerar varandra och skyddar vid incidenter.

Balanseraren dirigerar alla förfrĂ„gningar frĂ„n en session strikt till en server. Detta Ă€r ett mekanism för sticky sessions: varje session knyts till servern, dĂ€r den lagras och bearbetas lokalt.Â
Vad hÀnder nÀr en av servrar?

servrarna fallerar? TjÀnsten pÄverkas inte, eftersom arkitekturen Àr duplicerad. Men vi kommer att förlora en del av sessionerna frÄn den avlidna servern. Dessutom förlorar vi anvÀndare som Àr kopplade till dessa sessioner. Till exempel, om en kund gör en bestÀllning och plötsligt blir utloggad. Han kommer att bli missnöjd nÀr han mÄste logga in igen och upptÀcker att han mÄste göra om hela bestÀllningen.
Det krÀvs att webbapplikationen ska stödja ett stort antal anvÀndare och inte "segna ner" för att ge dem en bekvÀm arbetsmiljö. Men vid ett fel, med varje följande förfrÄgan kommer tiden för kommunikation med sessionens lagring att öka. Detta ökar den genomsnittliga latensen för de övriga anvÀndarna. Men de vill inte vÀnta lÀngre Àn de Àr vana vid.
Detta problem kan lösas, som vĂ„rt andra klient â en stor PASS-leverantör frĂ„n USA. De anvĂ€nder In-Memory för att klustra webb-sessioner. För detta lagrar de dem inte lokalt, utan centralt â i en In-Memory kluster. I det hĂ€r fallet Ă€r sessionerna mycket snabbare tillgĂ€ngliga, eftersom de redan finns i RAM.

NÀr en server faller, skickar balanceraren förfrÄgningar frÄn den nedlagda servern till andra servrar, precis som i den klassiska arkitekturen. Men det finns en viktig skillnad: sessionerna lagras i In-Memory klustret och servrarna har tillgÄng till sessionerna frÄn den nedlagda servern.
Denna arkitektur ökar hela systemets felresistens. Dessutom Àr det möjligt att helt överge mekanismen för sticky sessions.
Hybrid transaktions-analytisk bearbetning (HTAP)
Vanligtvis hĂ„lls transaktions- och analytiska system Ă„tskilda. NĂ€r de delas upp belastas den primĂ€ra databasen. För analytisk bearbetning kopieras data till en replika, sĂ„ att den analytiska bearbetningen inte stör transaktionsprocesserna. Men kopieringen sker med fördröjning â utan fördröjning Ă€r replikering omöjlig. Om vi gör detta synkront kommer det ocksĂ„ att sakta ner den primĂ€ra databasen, och vi fĂ„r inga vinster.
I HTAP fungerar allt annorlunda â samma datalager anvĂ€nds för transaktionsbelastning frĂ„n applikationer och för analytiska frĂ„gor, som kan ta lĂ„ng tid att utföra. NĂ€r data ligger i RAM-minnet utförs de analytiska frĂ„gorna snabbare, och databasservern belastas mindre (i genomsnitt).

Den hybrida metoden "bryter vÀggen" mellan transaktionsbearbetning och analys. Om vi gör analys pÄ samma datalager, kommer de analytiska frÄgorna att köras pÄ data frÄn RAM-minnet. De Àr mycket mer precisa, mer tolkbara och adekvata.
Integrering av In-Memory-lösningar
Ett enkelt (relativt) sĂ€tt â att utveckla allt frĂ„n grunden. Vi hĂ„ller data pĂ„ disken, medan heta data lagras i minnet. Det hjĂ€lper oss att överleva serveromstarter eller strömavbrott.
HĂ€r fungerar tvĂ„ huvudscenarier nĂ€r data lagras pĂ„ disken. I det första vill vi överleva krascher eller planerade omstarter av klustret eller delar dĂ€rav â vi vill anvĂ€nda det som en vanlig databas. I det andra scenariot, nĂ€r det finns för mycket data, Ă€r en del av den i minnet.
Om det inte Àr möjligt att bygga allt frÄn grunden kan vi integrera In-Memory i redan existerande arkitektur. Men inte alla In-Memory-lösningar Àr lÀmpliga för detta. Det finns tre obligatoriska villkor. In-Memory-lösningen mÄste stödja:
- ett standardiserat sÀtt att ansluta till databasen som kommer att vara under den (till exempel MySQL);
- ett standardiserat frÄgesprÄk för att inte behöva omskriva och Àndra logiken för interaktionen med lagret;
- transaktionshantering â för att bevara semantiken i interaktionen.
Om alla tre villkor Àr uppfyllda Àr integration möjlig. Vi placerar In-Memory Data Grid mellan applikationen och databasen. Nu kommer skrivfrÄgor att delegeras till den underliggande databasen, medan lÀsförfrÄgningar gÄr till databasen om data inte finns i cachen.

Om snabb Ă„tkomst till data och dess bearbetning Ă€r viktigt för dig, till exempel för affĂ€rsanalys â kan man övervĂ€ga att implementera In-Memory. För genomförandet kan du anvĂ€nda bĂ„da metoderna nĂ€r du designar en ny arkitektur.
KĂ€lla: habr.com
